What counts as a span?
One recorded operation with a start and an end: a model call, a tool call, an agent step, an HTTP request. A span is counted when the engine admits it, so a batch refused at the cap is not billed. Retries of a span the store already holds are counted again, because they were sent again.
What happens when we reach the included spans?
With overage off (the default), ingest pauses: the engine answers new batches with HTTP 429 and a Retry-After header, and OpenTelemetry exporters back off and retry. Reads, exports, replays and erasure keep working, and nothing is deleted early. The cap is per organization across all of its projects; metering runs every minute, so ingest can run past the cap by up to a minute's worth of traffic before the pause takes effect.
How does overage work?
Pro and Team can turn on overage from the billing page: $2.00 per million spans on Pro, $1.50 on Team, metered per span and reported hourly. Set a spend cap to bound it. Without a spend cap the allowance is 10x the included spans on top of them (on Pro, 220M spans a month in total), after which ingest pauses as it does with overage off.
Do you charge per seat?
Never. Paid plans include unlimited members; Free allows 3 members and 3 projects. Viewers, members, admins and owners all cost the same: nothing.
Are there export or egress fees?
No. Export is always on, on every plan, including when you are capped or a payment has failed. GET /v1/export streams one span per line in Traza's native JSON and ends with a trailer that says whether the export is complete; the native ingest route of your own traza-server reads those lines. The export guide shows how to check completeness and how to bring along the large payloads and annotations the export does not carry.
Can we move to self-hosted later, or back?
Yes. Traza Cloud runs the open traza-server binary, so a self-hosted server stores and answers exactly the same way. Export from the cloud, check that the export is complete, POST the lines to your own server in batches, and point your exporters at it; large payloads and annotations come separately, as the export guide describes. Going the other way works the same with an ingest key; strip $tenant from the lines first if your server used tenants, because a project key accepts only its own.
What does retention mean here?
Spans older than your plan's retention (14 days on Free, 30 on Pro, 90 on Team) are expired by the engine, which checks every minute. Retention follows the plan you are on: after a downgrade, spans older than the new window expire, so export first if you need them.
When does a billing period start?
Paid plans follow your subscription period. Free follows the calendar month in UTC.
How do we pay, and where are invoices?
Upgrades go through Stripe Checkout. Payment methods, invoices and cancellation live in the Stripe billing portal, one click from the console's billing page. Switching between Pro and Team is prorated; a downgrade from Team to Pro takes effect at the end of the period.
What if a payment fails?
The organization is marked past due, and any billing alert rules you have set up fire. After a seven-day grace period ingest is paused until the invoice is paid. Reads and exports keep working throughout.
What is in Enterprise?
Everything in Team, plus retention from one year, custom rate limits, a 99.95% uptime SLA, dedicated support and volume set by an annual contract. Write to hello@trazadb.com with your volume and what you need, and we will put it together.