Subscription Billing Models: What Works and What Fails at Scale¶
Every SaaS company eventually faces the same question: how should we charge for this?
The answer seems obvious until you're six months into implementation and your billing system can't handle the volume, your finance team is building manual workarounds in Excel, and your customer success team is fielding angry emails about unexpected charges.
I've implemented and scaled billing models across multiple companies. Here's what each major model actually requires from your infrastructure — not the marketing pitch, but the operational reality.
Seat-Based Billing: Simple Until It Isn't¶
The Model: Charge per user. $50/user/month for 10 users = $500/month.
Why Companies Choose It: Predictable revenue, easy to understand, straightforward to implement.
The Reality Check: Seat-based billing is operationally simple if your product has a clear definition of "user" and customers don't game the model.
What It Requires¶
From Your Product: - Clear user identity model (SSO helps enormously) - Accurate seat tracking in real-time - Grace periods and enforcement logic (what happens when they exceed their limit?)
From Your Billing System: - Mid-cycle seat changes (proration logic) - Seat pooling vs. per-workspace seats - Inactive user policies (do you charge for dormant accounts?)
From Your ERP: - Revenue recognition that handles mid-cycle changes - Reporting that ties contracted seats vs. active seats vs. billed seats
Where It Breaks Down¶
The challenge isn't the first invoice. It's the edge cases:
- Customer adds 5 seats on day 10 of their billing cycle. Do you prorate? Bill in arrears? Wait until next cycle?
- Customer removes 3 seats mid-month. Do you credit immediately or at renewal?
- Enterprise customer wants to buy 1,000 seats but only activate 200. How do you track "purchased but unused" inventory?
At scale, you need seat inventory management — tracking purchased seats, active seats, and pending changes. This isn't a billing system feature. It's a product feature that feeds your billing system.
When It Works¶
Seat-based billing scales well when: - Your product has clear user boundaries (think Slack, GitHub, or any productivity tool) - Your customers aren't sensitive to seat count (i.e., they're not creating fake accounts or sharing logins) - Your finance team can handle mid-cycle changes without custom scripts
Usage-Based Billing: Loved by Customers, Feared by Finance Teams¶
The Model: Charge based on consumption. API calls, data processed, transactions run, compute hours — whatever the unit of value is.
Why Companies Choose It: Aligns pricing with value, removes adoption friction, feels "fair" to customers.
The Reality Check: Usage-based billing is elegant in theory and operationally complex in practice. It requires infrastructure that most companies underestimate.
What It Requires¶
From Your Product: - Real-time usage tracking at scale (this is harder than it sounds) - Data pipeline that's both fast and accurate - Clear usage attribution (which customer, which workspace, which project) - Usage visibility for customers (they need to see what they're spending)
From Your Billing System: - Ability to ingest high-volume usage data (we're talking millions of events per month) - Aggregation logic (sum, max, tiered, volume discounts) - Usage cutoff logic (when do you stop recording usage for billing period N?) - Delayed billing cycles (you can't invoice until usage data is final)
From Your ERP: - Revenue recognition that handles variable monthly amounts - Forecasting models that account for usage variance - ASC 606 compliance for variable consideration
Where It Breaks Down¶
Usage-based billing fails when companies underinvest in the usage metering infrastructure.
I've seen companies try to bolt usage tracking onto their application database. This works fine at 1,000 customers. At 50,000 customers, your billing queries start impacting application performance, and your finance team is waiting 3 days for usage reports to compile.
You need a dedicated usage metering system — separate from your application, optimized for write-heavy workloads, with fast aggregation queries. This is not a weekend project.
The second failure mode: usage surprises. Customers hate unexpected bills. If you don't provide real-time visibility into usage, you'll spend more on support costs than you gain in revenue.
When It Works¶
Usage-based billing scales when: - You have a dedicated data engineering team (or budget for Stripe Billing, Zuora, or similar) - Your usage events are clearly defined and consistently logged - You've built customer-facing usage dashboards before launch - Your finance team understands that month-over-month revenue will vary
Hybrid Models: Maximum Flexibility, Maximum Complexity¶
The Model: Base subscription + usage overages. Or tiered pricing with usage components. Or seats + modules + usage. The variations are endless.
Why Companies Choose It: Predictable base revenue with upside from usage. Best of both worlds, in theory.
The Reality Check: Hybrid models are a operational multiplier of complexity. You inherit all the challenges of both models, plus the integration layer between them.
What It Requires¶
From Your Product: - Everything from seat-based and usage-based - Clear logic for what's included in base vs. what triggers overages - Usage pooling across seats (do 10 users share 10,000 API calls, or does each user get 1,000?)
From Your Billing System: - Multi-component invoicing (base + usage on one invoice) - Overage calculation logic (tiered, per-unit, all-or-nothing) - Proration for both seats and usage adjustments
From Your ERP: - Revenue recognition that splits base (ratable) vs. usage (variable) - Reporting that breaks out seat revenue vs. usage revenue - Contract management that tracks both components
Where It Breaks Down¶
The most common failure: customers don't understand their bills.
A hybrid invoice has multiple line items, proration adjustments, usage calculations, and potentially mid-cycle changes. If your invoice doesn't clearly explain what each charge represents, your support team will spend hours every billing cycle explaining invoices.
The second failure: your systems aren't designed for hybrid logic. Most billing platforms are optimized for subscriptions or usage, not both. The integration layer becomes custom code that you maintain forever.
When It Works¶
Hybrid billing scales when: - You have a strong billing engineering team - You've invested in invoice clarity (itemized, human-readable, with context) - Your finance team has built reporting that splits subscription vs. usage revenue - You've accepted that billing logic will be one of the most complex parts of your codebase
Migration Strategies: Changing Models Without Breaking Everything¶
Changing billing models mid-flight is like replacing an engine on a moving plane. Here's what I've learned:
Grandfather Existing Customers¶
Don't force migrations. Let existing customers stay on the old model, new customers get the new model. Yes, this means running two billing systems in parallel. Yes, it's operationally expensive. But it's better than the alternative: customer churn and support meltdown.
Build the New System Alongside the Old¶
Don't try to retrofit your existing billing logic. Build the new model as a separate code path, test it exhaustively with internal accounts, then run a controlled beta with friendly customers.
Plan for 6-12 Months of Parallel Systems¶
This isn't a one-quarter project. Between building the new model, testing it, migrating customers (in waves), and dealing with edge cases, you're looking at a year minimum. Budget accordingly.
Invest in Contract Management¶
The hardest part of running multiple billing models isn't the code — it's keeping track of who's on what model, when they renew, and what their contracted terms are. If your contract data lives in Salesforce notes and email threads, you're in trouble. Get it into a structured system.
What Your ERP Actually Needs to Know¶
Every billing model discussion eventually hits the finance team, and the question is always: "Can NetSuite handle this?"
The honest answer: NetSuite (or SAP, or any ERP) can handle almost anything if you design the integration correctly. The question is what data your ERP needs and when it needs it.
For Seat-Based Billing¶
Your ERP needs: - Subscription start/end dates - Seat count at time of invoicing (not current seat count — billed seat count) - Proration amounts broken out separately (for revenue recognition) - Contract value vs. billed value (for ARR reporting)
For Usage-Based Billing¶
Your ERP needs: - Final usage totals (not raw events) - Usage period clearly defined - Aggregation method documented (sum, max, tiered) - Minimum commits vs. actual usage (for overage calculations)
For Hybrid Models¶
Your ERP needs: - Both of the above, plus - Clear separation of subscription vs. usage line items - Allocation logic if usage is shared across seats - Contract minimums for both components
The integration between your billing system and ERP is not a one-time data dump. It's a continuous sync with error handling, reconciliation processes, and manual override capabilities for edge cases.
The Bottom Line¶
There is no "best" billing model. There's only the model that fits your product, your customers, and your operational capabilities.
Choose seat-based if you have clear user boundaries and your finance team wants simplicity.
Choose usage-based if you have strong data infrastructure and customers who value pay-as-you-go pricing.
Choose hybrid if you have the engineering resources to build and maintain complex billing logic.
Whatever you choose, remember: the billing model you pick will become one of the most complicated, mission-critical parts of your infrastructure. Budget time, engineering resources, and tooling accordingly.
And please, for the love of everyone involved, invest in invoice clarity from day one. Your support team will thank you.