Billing for AI Companies: The Complete Guide
AI products don't have SaaS economics — compute cost scales with usage, so pricing, metering, wallets and entitlements all have to move together in real time. Here's the complete architecture, piece by piece.
Why AI pricing breaks the SaaS billing playbook
A flat seat fee only works when the cost of serving a customer barely moves with how much they use the product. That was true enough for a CRM seat or a project-management login — support tickets aside, a light user and a heavy user cost you close to the same amount to serve. It has never been true for an AI product. Every request an AI product answers burns real, metered compute, and that compute cost tracks usage almost exactly. Price the product like a SaaS seat and you've decoupled what you charge from what it costs you — which sounds like a pricing decision until you look at the margin line and realize it's actually a subsidy.
Put two customers on the same $500-a-month seat plan. One sends fifty requests a day. The other sends fifty thousand. They pay the same amount and cost you wildly different amounts to serve — and the gap doesn't stay hidden, it shows up as the heaviest 10% of your accounts quietly eating the margin the other 90% generate. Most AI companies discover this the same way: a finance lead pulls a cohort-level cost report during a fundraise or a board prep cycle and finds the "enterprise tier" customers are the least profitable segment in the business, not the most.
The same mismatch shows up one level up the stack too. A per-seat-of-agent price hides exactly the same problem per-user seat pricing does, just moved to a different unit — one customer's agent triages five support tickets a day, another's runs a multi-step research workflow against a large document set fifty times a day, and a flat per-agent rate treats them identically. Swapping the unit you charge for doesn't fix a decoupling problem; it just moves where the decoupling happens. The fix has to happen underneath the pricing model, in the metering and cost data that tells you, per customer, per unit, what you actually spent — without that, any pricing shape you pick is a guess dressed up as a strategy.
The fix isn't switching to pure usage pricing and calling it done — that trades one failure mode for another, which the later section on hybrid models gets into. The fix is treating pricing as an economic decision that has to move with real consumption data, not a GTM decision made once at launch and left alone. That means the billing layer underneath your price has to be able to answer, in real time, exactly what each customer consumed — which most billing setups built for subscription SaaS were never designed to do.
“A flat seat fee on a product whose cost scales with usage isn't a pricing strategy. It's a subsidy for your heaviest customers, paid for by your lightest ones.”
This is the argument the rest of this guide works through mechanism by mechanism: what shape your usage-based pricing should actually take for an AI product, what has to be true of your metering pipe to price it accurately, how credit wallets change the buyer's experience of volatile usage, why entitlements and billing have to share one source of truth, and where pure usage pricing itself becomes the problem instead of the fix.
The three shapes of AI pricing: per-token, per-agent, per-outcome
Most AI companies default to per-token pricing because it's the most direct mirror of their own cost structure — you're charged per token by your model provider, so you charge per token to your customer, and the margin is a clean, visible spread. It's also the pricing shape most exposed to volatility: a customer's bill moves with every prompt length, every retry, every model upgrade that changes token efficiency, and a buyer evaluating your product has almost no way to estimate next month's invoice before they've used it for a month.
Per-agent pricing — charging for a running agent, workflow, or seat-of-automation rather than the raw tokens it consumes — smooths that volatility out for the buyer. A customer buying "10 active agents" can budget for it the way they'd budget for headcount, and you absorb the token-level variance across your own margin instead of passing every fluctuation straight through. The tradeoff is that you've reintroduced the exact decoupling problem from the section above, just one layer down: an agent handling a light workload and one handling a heavy one now cost you different amounts under the same price, unless you cap what an agent is allowed to do or bound its usage with an underlying wallet.
Per-outcome pricing — charging for a resolved support ticket, a qualified lead, a processed document — is the one that reads best in a sales deck, because it ties price directly to the value the customer got instead of the compute you spent getting there. It's also the hardest to run honestly. You have to define, precisely and defensibly, what counts as a completed outcome, what happens to a partial or failed attempt, and how a customer disputes a charge when they don't think the outcome actually landed. OpenAI's own API pricing is the industry's reference point for per-token billing specifically because token count is unambiguous — an "outcome" almost never is.
Switching between these shapes mid-contract is where most of the real difficulty lives, and it rarely gets planned for at launch. A customer who signed a per-token contract eighteen months ago and now wants to move to a per-outcome structure needs a migration path that doesn't force a full re-signup or a gap in service — their historical usage has to carry over, their existing wallet balance has to translate cleanly into the new unit, and their entitlements can't blink off during the transition. Companies that hard-code one pricing shape into their billing logic at launch usually discover this the hard way: the second enterprise deal that wants a different shape becomes a multi-week engineering project instead of a dashboard change.
None of these three shapes is categorically right. The mistake is picking one and hard-coding it into your invoicing logic, because most AI companies land on a hybrid of two or three of these within their first year of real customer data. That only works if your pricing engine treats rate logic as configuration a RevOps or finance person can change in a dashboard — tiers, per-token rates, per-agent caps, credit costs per outcome type — not something that requires an engineering deploy every time the go-to-market team wants to test a new shape.
“Per-outcome pricing sounds like the grown-up answer until you have to define what counts as a completed outcome - and then defend that definition in a renewal call with a customer who disagrees.”
Metering is the foundation everything else sits on
Every pricing shape above is a downstream decision. The upstream one — the one that makes any of them trustworthy — is whether your metering pipe can be believed. A usage event is a single record: a token count, an API call, a compute-second, an agent run. Sending it is the easy part. The hard part is what happens when your infrastructure retries a call that already succeeded, when a batch job delivers ten thousand events out of order after a network blip, or when a launch-day traffic spike sends more events in a minute than your normal day sees in an hour.
An event pipeline that isn't idempotent double-counts every retry as new usage — which means every network hiccup on your customer's side becomes an overcharge on their invoice, discovered by their finance team weeks later during reconciliation, not by yours. An event pipeline that can't tolerate late arrivals treats a delayed batch delivery as an error instead of ordinary operating conditions, which means the same usage either gets billed to the wrong period or dropped entirely. Both failure modes look identical from the outside: a customer opens a billing dispute, and someone on your team spends a day tracing raw logs to find out whether the number was ever right in the first place.
:::note The failure modes that matter for AI-scale metering aren't exotic — they're a retried network call, an out-of-order batch delivery, and a traffic spike. A pipeline that hasn't been tested against all three isn't ready to bill on. :::
These aren't abstract engineering concerns once your finance team is closing the books on usage revenue every month. A metering pipe that silently double-counts a handful of retried events across thousands of accounts doesn't produce one big visible error — it produces a small, consistent overstatement of revenue that a monthly close eventually has to explain, chase down, and reverse. That kind of correction is far more expensive after the fact, in accountant hours and customer trust, than building the idempotency in from the start.
Real-time, idempotent, late-tolerant metering is what turns usage from a guess into a number you can defend in an audit. Kribana meters 400M+ usage events a month across customers with zero dropped events under retry or duplicate delivery, and a 72-hour window for late events to fold into the correct billing period automatically — no manual correction, no re-invoicing, no support ticket. That window matters specifically for AI workloads, where a batch inference job or an async agent run can legitimately finish hours after it started.
“If your metering pipe can't survive a retry storm, your invoice isn't a bill. It's a guess with decimal points.”
Credit wallets: the buyer experience AI pricing actually needs
Postpaid invoicing was built for a world where usage was predictable enough that the bill at the end of the month rarely surprised anyone. AI usage isn't that world — a customer running a new automation, testing a heavier model, or scaling a successful pilot can 10x their consumption inside a single billing period, and finding that out for the first time on an invoice is how usage-based pricing earns its reputation for bill shock.
A credit wallet flips the order: the customer sees a running balance that usage draws down in real time, the same way a prepaid phone plan works, instead of a number that only appears after the fact. That single change does most of the work of making volatile usage feel manageable rather than alarming — the customer isn't guessing what they'll owe, they're watching a number they already funded go down, and they can see exactly which activity moved it.
The mechanism that makes this actually work in production is the threshold, not the balance itself. A wallet that only reacts once it hits zero creates the one failure mode AI companies fear most: a mid-batch-job stoppage, where a customer's compute pipeline halts mid-run because the balance ran out with no warning. A wallet built to alert — or auto-top-up — at a threshold well before zero avoids that entirely, and it's the difference between "your balance is low, here's a one-click top-up" and a customer's production job failing at 2 a.m. with no explanation.
Wallets also need to track more than one kind of balance at once. A single account typically holds paid credits, promotional credits from a trial, and sometimes a one-time make-good grant — and a well-built credit wallet burns the promotional and trial credits first, so a free allowance doesn't quietly eat into money the customer actually paid. Get that ordering wrong and a customer who topped up mid-month can find their paid balance drained by a trial credit that should have gone first, which is its own category of billing dispute.
“A wallet that runs dry mid-request doesn't feel like a billing event to the customer. It feels like an outage you caused.”
Entitlements: keeping access and billing in sync in real time
An entitlement answers one question, checked at the exact moment it matters: is this customer allowed to do this right now? Not what they signed up for six months ago - their current plan, their current seats, their current live credit balance, checked on the request path, not in a nightly batch job that syncs access to billing state once a day.
That gap between "what billing says" and "what access actually reflects" is where AI products specifically get burned, because usage moves fast enough to make a daily sync feel like it's always a step behind. A customer whose card just failed should lose access to premium inference immediately, not at tomorrow's 3 a.m. batch run - and a customer who just topped up their wallet mid-outage shouldn't have to file a support ticket and wait for a manual override to get back to work. Both directions of that gap cost you something: the first is revenue leakage from customers using a service they haven't paid for, the second is churn risk from customers who paid and got locked out anyway.
Building entitlements as a fast, hot-path check - reading the same live data that drives billing, not a cached or batched copy of it - is what closes that gap. It's also what makes an autonomous system like the agent possible in the first place: a playbook that reacts to a low balance or a failed payment only works if the access layer it's adjusting reflects the same real-time state the agent is watching, rather than two systems that happen to usually agree.
The same real-time requirement applies in the other direction, at renewal or downgrade. A customer who drops from an enterprise tier to a smaller plan mid-cycle should lose access to the features their new plan doesn't include immediately, not after a batch job catches up days later — leaving elevated access in place past a downgrade is revenue you're not collecting for access you're still granting. Getting this right in both directions, upgrade and downgrade, is what makes entitlements a billing-integrity problem as much as an access-control one.
“An entitlement check that reads yesterday's balance isn't a permissions system. It's a permissions system that happens to usually be right — until the day it isn't.”
When usage-based billing itself becomes a revenue leak: failed payments and recovery
Usage-based pricing multiplies the number of billing events a customer generates — top-ups, overage charges, monthly true-ups on top of a base fee — compared to a flat monthly subscription that charges the same card the same amount every thirty days. More billing events means more surface area for a payment to fail, and a payment failure in a usage-based system doesn't just cost you that one charge — it can cut off the wallet top-up a customer needs to keep using the product at all, turning a declined card into a service disruption within minutes.
A blind retry schedule — try again in three days, then seven, then give up — treats every decline the same regardless of why it happened, and most of them fail again for the same reason the first attempt did. An expired card doesn't fix itself between Tuesday and Friday. Diagnosing the actual decline reason changes the response entirely: an expired card triggers an immediate prompt to update payment details, insufficient funds schedules a retry for a time more likely to succeed instead of a fixed interval, and a bank block gets routed to a human for outreach instead of retried automatically into more declines. Stripe's own documentation on decline handling reflects the same principle — the reason behind a decline determines the right recovery action, not a one-size-fits-all retry.
This is a genuinely different problem than the one a flat-subscription SaaS company has to solve. A company charging one card once a month has one payment event, one chance for a decline, one retry sequence to get right. A usage-based AI product charging the same customer for a base fee, a mid-month top-up, and an end-of-cycle overage true-up has three separate payment events in the same billing period, each capable of failing independently — which means the volume of decline events a usage-based billing system has to diagnose and recover from is structurally higher than a subscription business ever sees, even at the same revenue size.
That diagnosis-first approach is what gets recovery from "eventually, some of these come back" to something closer to a solved problem: recovering up to 71% of failed payments, with a median time from the failure signal to an automated recovery action of 38 seconds. Speed matters here for a reason specific to usage billing — the faster a failed top-up gets flagged and resolved, the shorter the window a customer spends locked out of a product they're actively trying to use, which is the exact moment they're most likely to churn out of frustration rather than out of any real dissatisfaction with the product.
“A retry that doesn't know why the card was declined isn't recovery. It's hoping the outcome changes without changing the approach.”
Hybrid models: why pure usage pricing is often the wrong default
The instinct after reading everything above is to conclude that pure usage-based pricing is the correct answer for an AI product, since it's the shape that maps most honestly to real cost. In practice, pure usage pricing creates its own failure mode: unpredictability. A finance lead approving a vendor contract wants a number they can put in a budget line, and "it depends entirely on how much you use it" is a hard sentence to get signed off, no matter how fair the underlying economics are.
This is why the buying pattern for usage-based infrastructure at scale — the same pattern cloud providers settled on years before AI pricing existed — is a commit-and-overage hybrid: a customer commits to a baseline spend, often at a discount, gets a predictable number for their budget, and only pays variable usage rates once they exceed it. A base subscription with a bundled credit allowance is the same idea in a different wrapper — the buyer gets predictability up to a point, and the pricing model still tracks real cost past it.
The mistake to avoid isn't choosing a hybrid model - it's treating the hybrid as a fixed structure instead of something you keep testing. A commit set too low turns every renewal into an overage negotiation; a commit set too high leaves money on the table from customers who'd have paid more if the ceiling felt closer. Finance and RevOps teams evaluating where usage data actually changes the forecast need the commit-versus-actual gap visible in real time, not reconstructed from a spreadsheet at quarter-end — because by the time a manual close catches a commit that's badly mismatched to reality, you've already priced two or three renewal cycles wrong.
A concrete version of this: a customer commits to $10,000 a month at signing, based on a pilot that ran light traffic. Three months in, their real usage is tracking to $18,000 worth of consumption most months — they're paying overage every cycle, which reads to them as a broken estimate rather than a growing relationship, even though it's actually an expansion signal. The fix isn't apologizing for the overage line; it's catching the pattern early enough to have a proactive commit-resizing conversation before the third overage invoice turns into a renewal objection instead of an upsell.
“Pure usage pricing isn't purer. It's just cost math with the predictability removed - and predictability is most of what an enterprise buyer is actually paying for.”
What to change this week
Start by pulling a cost-to-serve report by account, if you don't already have one — not usage, cost. If your top-line "best" customers by revenue turn out to be your worst by margin, that's the seat-versus-usage mismatch from the first section showing up in your own numbers, and it's worth knowing before your next pricing review rather than during it.
Next, look at whether your metering pipe has actually been tested against a retry storm and a late, out-of-order batch — not whether it works on the happy path, which almost every metering setup does. If nobody can answer confidently, that's the thing to fix before you touch pricing shape at all, because a pricing model built on top of unreliable metering is unreliable no matter how well-designed the rates are.
Then check the gap between your billing state and your access state. If a failed payment or a low balance takes longer than a few minutes to reflect in what a customer can actually do, you're carrying revenue leakage on one side of that gap and churn risk on the other, and neither shows up cleanly on a dashboard until it's already cost you an account.
If you're rebuilding this from scratch rather than patching what exists, see how the platform handles metering, wallets, entitlements and recovery as one system instead of stitched-together tools, or put your current setup in front of someone who's seen this exact migration before.
Naman does everything that we don’t have people for, basically he runs our experimental lab and when we feel he has a new thing to pick we hire a person or build an agent to do what he was doing before. Just like his work life, he has an experimental personal life involving trekking, biking, vlogging, writing poetry, travelling to goa every other month plus scolding us, cheering us up, crying with us.