Pricing changes should be simple: update the configuration, start billing customers. In practice, they trigger coordination cascades across Engineering, Finance, Product, and Sales.Product wants to charge based on API calls instead of seats. Engineering instruments new telemetry and deploys tracking infrastructure. Finance waits for reconciliation. Sales can’t preview pricing until everything ships. What should take hours stretches across weeks.Enterprise deals make this worse. A backdated contract with prepaid credits requires special-case code, manual invoice adjustments, and careful coordination. Late data compounds the problem: when events arrive after the invoice closes, standard billing systems have already baked the usage totals into the invoice. Adding the late data would break the math. Engineering either patches the invoice manually or writes off the revenue.This is a relay race where each team waits for the next handoff. Momentum stalls at every baton pass.
The root cause is architectural. Most billing systems calculate charges as events arrive, mutating counters in real time. This locks pricing logic at ingestion time. When pricing changes, the entire pipeline must change with it.Orb takes a different approach: it stores usage events immutably and calculates bills by querying event history at billing time. Events are never modified or aggregated. Every invoice is a deterministic query over raw usage data.This changes what’s possible:
Backfills work safely. Late events don’t corrupt counters because there are no counters. Orb queries the full event history when calculating invoices.
Pricing changes don’t require re-ingestion. Metrics are queries, not pre-aggregated values. Define a new metric and Orb calculates usage by querying historical events. No instrumentation changes, no deployment.
Test pricing before deployment. Run simulations against historical usage to see exact invoice previews. Model new tiers, forecast revenue impact, preview customer-specific rates before committing.
Enterprise contracts don’t require custom code. Backdated pricing recalculates invoices by re-running queries with the new start date. Prepaid credits draw down deterministically. Custom discounts and amendments are configuration, not code.
Complete audit trails by default. Every charge traces to specific events and pricing rules. Drill into any line item to see which events contributed and which configuration applied.
When billing is a deterministic query, pricing becomes cross-functional product work instead of a coordination problem. This is what we call Revenue Design.The broken relay race disappears because the architecture eliminates the handoffs. Product, Finance, Sales, and Engineering work in parallel instead of sequence. Pricing changes become configuration updates instead of multi-week projects.Query-based billing makes this possible. Streaming aggregation makes it impossible.
Start building:Quickstart guide walks through your first billing workflow—ingest events, create metrics, configure pricing, generate invoices.Understand the architecture:How Orb works explains query-based vs. streaming billing in technical detail.Learn the data model:Core concepts covers Events, Metrics, Plans, Subscriptions, and Invoices.