Core Concepts
Usage & Billing

Usage & Billing

Papayya is pay-as-you-go. There is one tier, no subscription, and no seats. You're metered for the hosted execution you run, and billed on a rolling period. Steps are free: once a run is executing, the checkpointed steps inside each item add no per-step charge.

What gets metered

You pay for the hosted execution you run. These are the dimensions the dashboard surfaces; how they roll into the meter unit is settling below:

MetricWhat it counts
RunsOne per run that leaves queued — i.e. actually picks up a worker in the hosted pool
ItemsEvery item a run processed — the unit that has an outcome, a trace, and a cost
StepsRecorded for the trace, not metered — steps inside an item are free
Input / output tokensRecorded per LLM step for your dashboard's dollar estimates — not billed by Papayya (you bring your own key; your provider bills tokens directly)

Failed and cancelled runs still count — if a worker started the run, the compute was consumed. Runs that hit a budget cap count through the point they were paused.

Papayya never bills for provider tokens and never marks them up. Tokens are recorded so the dashboard can show ≈ $X estimates against your own rate card; the actual token spend lands on your invoice with Anthropic / OpenAI / Bedrock directly.

Local development is free

Running python agent.py locally with the free SDK consumes no hosted compute — you are billed only for hosted execution. Metering begins only when work lands in the hosted worker pool.

There is no free hosted compute: once your items run in Papayya's pool, they're on the meter.

Billing periods

Pay-as-you-go accrues over a rolling period:

current_period_start  →  current_period_end  →  invoice  →  new period begins

The Usage view defaults to the current period but can be scoped to 7 / 30 / 90-day windows for trend analysis. At current_period_end, the period's metered items and runs are rolled up into an invoice and a fresh period begins.

Cost, budgets, and pauses

Pay-as-you-go means there's no throughput ceiling to bump into — you run what you run, and you pay for it. To keep spend bounded, set a budget cap on an agent or an individual run. When a run reaches its cap, Papayya pauses it and notifies you; in-flight items are preserved for you to resume, not thrown away. See Budget Enforcement for the pause-and-notify model.

You'll see both dimensions in the dashboard:

  • Usage tile — items and runs metered this period
  • Cost — the dollar amount for the same period, rolled up from per-item and per-run cost

Integer math

All costs are stored as integers — cents for per-run and per-item cost, microdollars for usage aggregates. Papayya never uses floating point for money. This matters when you're rolling up thousands of sub-cent item costs; floating-point drift would compound.

When the dashboard displays $0.1234, that's 123_400 microdollars rendered with two-decimal truncation where appropriate.

Getting usage data

CLI

papayya usage summary      # metered items, runs, and cost for the current period
papayya usage breakdown    # the same totals split by project / agent

Dashboard

The Usage page shows the current period by default: total cost, runs, items, and a per-project breakdown.

API

GET /v1/usage?from=2026-04-01&to=2026-04-30
GET /v1/usage/breakdown?from=2026-04-01&to=2026-04-30

Both endpoints take an inclusive date range and return item, run, and cost totals.