Revenue & Billing

Dodo Payments for one-time, subscriptions, and metered usage. Billing state machine, grace periods, usage overrun, threshold alerts, and failure playbooks.

Core capabilities

Each capability is implemented with clear state and failure recovery in mind.

Billing state machine
Subscriptions and invoices move through explicit states (trialing, active, past_due, canceled, etc.). No ambiguous states — so recovery and reporting are predictable.
Grace periods
When a payment fails, we don't cut access immediately. Configurable grace periods and dunning let you retry and notify customers before hard suspension.
Usage overrun & threshold alerts
When usage approaches or exceeds limits, we fire alerts. You can set soft caps, allow overrun with overage billing, or hard-stop. Thresholds are configurable per product.
Credits
Prepaid credits and promotional balances are applied before charging the payment method. Credit balance is tracked in the ledger so billing stays consistent.
Metered usage
Usage events are ingested, aggregated, and fed into the billing pipeline. We support configurable metering dimensions and rollups so you can bill on usage (API calls, seats, etc.) with accuracy.

Why a billing state machine?

Billing has more failure modes than almost any other system: failed payments, webhook delays, duplicate events, and partial updates. A state machine makes every transition explicit and auditable. You always know what state a subscription is in and what actions are allowed. Recovery (e.g. after a provider outage) becomes a matter of replaying events and reconciling — not guessing.

Decisions & trade-offs

Billing has more failure modes than almost any other system. We use a state machine and a ledger so every transition is explicit and auditable. We chose Dodo Payments as the default for one-time, subscription, and metered usage with webhook handling; the layer is abstracted so you can swap if your market or compliance needs differ.

Pros

  • State machine and ledger give predictable recovery and reporting.
  • Grace periods and threshold alerts reduce churn and support load.
  • Idempotency and failure playbooks (payment fails, webhook delayed) are documented.
  • One provider per category with a clear swap guide keeps options open.

Trade-offs

  • Dodo is less ubiquitous than Stripe; we trade brand recognition for a focused feature set.
  • Complex pricing (tiers + many metered dimensions) may need custom logic on your side.
  • Reconciliation and dunning are your responsibility; we give the structure, not the ops.

FAQs

Back to Systems
xs