Stripe + independent metering

Let Stripe bill. Keep the usage evidence independent.

UsageBox records billable quantities, deduplicates retries and preserves raw events. Stripe can stay responsible for pricing, invoices, tax and payments.

What you get
  • One independent ledger before Stripe pricing and invoices
  • Retry-safe usage ingestion with explicit idempotency
  • Raw records for invoice disputes and reconciliation
  • Biller-neutral rollups that survive a future migration

Record usage before Stripe rates it

Your application emits the measured quantity to UsageBox first. Pricing and invoice decisions remain downstream, so changing a Stripe price does not rewrite the evidence behind prior usage.

Keep retry semantics in one place

Producers retry and queues redeliver. The metering layer handles duplicate delivery before quantities are exported to a billing workflow.

Investigate a disputed invoice

A rollup is useful for billing; raw accepted events are useful when someone asks why the rollup is 12,431. Keep both available independently from the invoice object.

Use Stripe for what Stripe is good at

Keep prices, subscriptions, tax, invoices, payment methods and dunning in Stripe rather than recreating financial operations in the usage layer.

Avoid coupling telemetry to one biller

If you later change payment or billing providers, the instrumentation in your product and the historical usage ledger do not have to migrate at the same time.

Preview the ingest contract first

The public quickstart shows the exact server-side request shape before signup. If it fits, create a key and keep that same contract in production.

Product boundary

UsageBox complements Stripe; it does not replace Stripe Billing

The boundary is deliberate: trustworthy quantity on one side, financial operations on the other. That keeps usage instrumentation stable while pricing and billing workflows evolve.

UsageBox owns

  • Usage ingest
  • Idempotency
  • Raw-event history
  • Meter aggregation
  • Usage rollups

Stripe owns

  • Prices
  • Subscriptions
  • Invoices
  • Tax
  • Payments and dunning

See the request before you create an account

Choose the usage signal, inspect the exact payload, then create a free key only when the contract fits your integration.

Migrating legacy Stripe usage billing?

Check the Usage Records assumptions before upgrading to Basil

The migration checker inventories removed UsageRecord resources, aggregate_usage, action=set semantics and billing_threshold dependencies before you touch the production API version.