If you're shipping usage-priced tiers, every billable event has to make margin sense. Rev gives you per-tenant cost caps, tenant margin dashboards, deferred outcome reconciliation, and Stripe-native monetization — no spreadsheet math, no surprise refunds on the cohorts that drive expansion.
Each one closes a margin gap that subscription tools can't. Wire them in once and your SaaS platform has commercial superpowers from the first tenant onboarded.
Set a hard ceiling on every tenant's usage event — base fee + usage rate + outcome bonus. Over-cap usage is rejected before it bills, so tenant-level SaaS costs stop being a surprise at the end of the quarter.
Every meter event records the customer charge and your cost side-by-side. The dashboard groups margin by tenant, plan, and time window — see unit economics per SaaS account before your renewals team asks.
Charge only when the tenant outcome delivers: a successful renewal, completed onboarding, expanded seat purchase. Failed renewals or expired pending events automatically refund the bonus — the SaaS tenant only pays for results.
From API key to first billable tenant outcome in under 15 minutes. SDK installs in one line, your services emit meter events, and the outcome pricing rules are configured from the dashboard — no multi-week billing migration project.
Out-of-the-box SDK in Node.js and Python. Configure the per-tenant cap once; Rev rejects over-cap usage and reports the cost side-by-side with the renewal outcome bonus.
// Configure a per-tenant cost cap on the SaaS billing tier const tier = await rev.pricing.createTier({ agent_id: 'enterprise-billing-v2', base_fee: 0.10, // $0.10 per workflow run usage_rate: 0.00003, // per unit consumed outcome_bonus: 4.00, // $4.00 per renewed seat cost_cap_usd: 0.50, // per-tenant ceiling currency: 'USD', }); // Meter every tenant usage event — returns the OK billable event const event = await rev.meter.emit({ agent_id: 'enterprise-billing-v2', customer_id: tenant.id, units: usageCount, outcome: 'pending', }); // Resolve the tenant outcome — bonus posts on renewal, refunds on churn if (renewalClosed) { await rev.outcomes.resolve(event.id, 'success'); } if (churned) { await rev.outcomes.resolve(event.id, 'failure'); }
Stripe metered billing, Chargebee, and Maxio charge on schedule. They can't do per-tenant cost caps or reconcile a hindsight outcome. This is the gap Rev fills for SaaS platforms.
| Capability | Rev | Stripe metered billing | Chargebee | Maxio |
|---|---|---|---|---|
| Outcome-based billing for SaaS platformsCharge only when the tenant reaches a real success milestone — renewals, completed onboarding, expanded seats | Built-in | Not supported | Schedule only | Recognition only |
| Per-tenant cost capsHard ceiling per tenant usage event — over-cap events rejected before billing | Built-in | Not supported | Not supported | Not supported |
| Tenant margin trackingPer-tenant and per-plan margin dashboard showing cost vs revenue | Built-in | Aggregate only | Revenue only | Revenue only |
| Deferred outcome resolutionPending → success/failure/expired with bonus reconciliation when the renewal closes | First-class | Not supported | Not supported | Not supported |
| Usage-based monetizationMetered SaaS usage aggregated per tenant, plan, and time window | Built-in | Metered events | Usage add-on | Not native |
| Request-level traces & auditPer-tenant usage traces with cost and outcome state for finance review |
Metered events
via Rev SDK
|
Per-event logs | Invoice audits | Revenue audits |
The common pattern: keep Stripe, Chargebee, or Maxio for invoicing and revenue recognition, wire Rev for outcome-based metering. The services compose — Rev sits in front of charging as the pricing engine, and behind your tenant workflows as the per-tenant usage layer.
Free tier, no Stripe required to start, dashboard updates the moment you resolve your first tenant outcome. Built for SaaS platforms that need outcome-based monetization wired to Stripe today.