Metered events, hybrid pricing and revenue recognition on one data model, replacing Zuora plus the layer of finance-ops glue that grew around it. The walkthrough below is the setup from scratch: catalog and pricing, subscriptions, billing, and the revenue side, on an Open Mercato backend.
Recurring, one-time and metered charges live on the same offerings. Subscriptions, invoices and recognised revenue all read from them.
Platform fees, seats and metered usage sit on the same offering. Tiered, volume and ramp pricing defined once, then read by quoting, billing and renewals alike.
Amend, renew and cancel flows built in, with every change tied back to the original subscription. MRR and ARR roll up from the same records, not from a board-week spreadsheet.
Usage lands as events, gets rated against the catalog and drops onto the invoice with the recurring lines. Prepaid balances, payment gateways and top-ups included.
Recognition schedules derive from the same billing lines rather than a parallel model. Journals post to NetSuite, Sage or whichever GL finance already runs.
A new usage tier or a hybrid packaging experiment is a catalog change, not a re-platforming project and not a set of scripts bolted onto the billing vendor.
Usage, invoices, MRR and recognised revenue come from one model. Nothing to reconcile between the subscription system, the billing system and the ledger.
Next.js and PostgreSQL on Open Mercato. Hostable anywhere, no per-seat tax, no renewal negotiation on a system finance depends on.