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.
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.