Credit Systems for AI Products: How to Design One

A credit system exists to solve one problem: your costs are denominated in tokens, and nobody wants to buy tokens. Credits are a translation layer between a unit you cannot control and a unit your ...

Manuele Estivo
Manuele Estivo
Growth & SEO Lead
8 September 20261 min read

Credit Systems for AI Products: How to Design One

A credit system exists to solve one problem: your costs are denominated in tokens, and nobody wants to buy tokens. Credits are a translation layer between a unit you cannot control and a unit your customer can reason about. Design it well and you can change models, absorb a price rise, and let heavy users pay more without renegotiating anything. Design it badly and you have invented a currency you cannot devalue, which is a worse position than flat pricing.

The whole job is picking what one credit means, and then defending that meaning.

Step one: find your cost per unit of work

Do not start from tokens. Start from the thing the customer asks for, which might be a document summarised, an image generated, a support ticket triaged. Measure the real token cost of that job across a sample of at least a few dozen real inputs, not your test file.

You will get a distribution, not a number. Say summarising a document costs you between 0.4 and 3.1 cents depending on length, with a median around 0.9. Three numbers matter from that:

  • The median, because it sets your average margin

  • The 95th percentile, because it sets your worst realistic case

  • The ratio between them, because if it is more than about five to one, one credit cannot honestly mean one job

That ratio is the first real design decision. A tight distribution means you can price per action, which customers find far easier to understand. A wide one means you have to price per unit of input, usually per page, per thousand words, or per minute of audio.

Step two: pick a credit that means something

The best credit unit is one a customer can predict before they spend it. Ranked roughly by how well they hold up:

Credit definition

Works when

Breaks when

One credit equals one action

Cost per action is tight

A single action can be 10x the median

One credit equals one page or one minute

Input size drives cost

Output length varies wildly

One credit equals a fixed slice of compute

Nothing else fits

Customers cannot estimate anything in advance

Resist the last one. A credit defined as an abstract compute unit shifts all forecasting risk onto the customer, and the predictable result is that they stop buying in bulk because they cannot tell what they are getting.

Then choose a number that leaves you room. If a job costs you 0.9 cents at the median, do not set one credit equal to one job and sell credits at one cent. Set one credit to a smaller slice, say a tenth of a job, and price the pack so the arithmetic still works when your cost doubles. Granularity is the cheapest insurance you can buy here.

Step three: set margin where the variance is

Flat percentage markup on the median is the common mistake, because it prices your worst cases at a loss. A more durable approach is to price the pack against something between the median and the 95th percentile, closer to the median when your distribution is tight and closer to the tail when it is not.

Then cap the tail explicitly. A hard limit on input size per action, stated in the product, converts an unbounded liability into a support conversation. That is a much better trade than absorbing one customer's 400 page PDF forever. The same discipline applies upstream to your own bill, which is where reducing your ai api costs does more for margin than any pricing page edit.

The three ways credit systems break

Credits that expire in a way customers notice

Expiry protects you from a cost base that keeps rising against credits bought at last year's prices. It also generates more support anger per euro than almost anything else in software. If you must expire, expire slowly, warn twice, and never expire credits inside the billing period the customer paid for. Rolling twelve months is defensible. Thirty days reads as a trick.

Credits that no longer map to value after a model change

You switch to a cheaper model, a job now costs a third of what it did, and your customer is still paying one credit for it. Or the reverse, and you are losing money on every call. This is not hypothetical, it is what happens every time you decide to upgrade to a newer ai model. The fix is to define credits against the job, not the model, and to accept that your margin per credit will float. Publish the job definition, keep the model an implementation detail, and you can change engines without a pricing announcement.

Credits customers cannot forecast

If a customer cannot answer "how many credits will this month cost me" before they commit, they will buy the smallest pack, watch the meter, and churn the first time they get surprised. A usage estimator on the pricing page, even a rough one, is worth more than another pricing tier. This is the same failure that makes usage-based and flat-rate ai pricing feel so different to buyers who are otherwise spending the same money.

Showing the balance without causing anxiety

A credit system is a meter, and meters change behaviour. Customers who can see a balance draining will use the product less, which is the opposite of what you want from the feature you charge for. Three choices decide whether the meter helps or hurts.

Where you show it. A persistent counter in the header makes every action feel like a purchase. A balance on the billing page, plus a warning when it drops below a threshold, gives people the information without the running commentary.

What you show it in. Show remaining work, not remaining units. "About 180 documents left" is actionable. "1,800 credits" requires the customer to do arithmetic they will get wrong.

What happens at zero. Decide in advance whether the product hard stops, degrades to a slower path, or auto-tops-up. Silent failure at zero is the version that generates support tickets, and an auto-top-up nobody consented to generates worse ones. Stripe's usage-based billing documentation is a reasonable reference for the mechanics if you are wiring metering into an existing subscription rather than building the ledger yourself.

The ledger itself is unglamorous and worth doing properly the first time: every deduction recorded with what it was for, every top-up recorded with what was paid, and a balance derived from that history rather than stored as a mutable number. When a customer disputes usage, and one will, the ledger is the entire answer.

When not to use credits at all

Credits are overhead. They need a balance, a ledger, top-ups, refunds, an expiry policy, and a support team who can explain all of it. If your cost per customer is fairly flat, or your heaviest user costs you twice your lightest rather than fifty times, a plain subscription is a better product and a much smaller build.

Reach for credits when usage genuinely spans an order of magnitude between customers, when your marginal cost is large enough to notice, or when customers want to buy capacity in advance. Otherwise you are adding a currency to solve a problem you do not have. The wider decision sits inside ai monetization strategies, and the specific comparison against a straightforward subscription is covered in how to price an ai product.

Not every metering model needs a credit balance, how to add usage-based pricing to an AI app covers the broader set of units worth metering and how to price them.

FAQ

Should credits roll over between months?

Rolling over is the friendlier default and reduces churn. Protect yourself with a cap on accumulated balance rather than aggressive expiry, so a customer cannot bank two years of credits at old prices.

How do I handle a failed request, does it consume a credit?

No, and say so in the product. Charging for a failure is the fastest way to make usage-based pricing feel unfair. Deduct on successful completion, and refund automatically on a timeout or provider error.

What happens when my provider raises prices mid-year?

Existing balances are a liability at the old rate, which is exactly why granular credits and a balance cap matter. What to do when your ai provider raises prices covers the wider decision, but the credit-specific answer is to change the price of new packs, not the value of credits already sold.

Can I give free credits for signups?

Yes, and it is one of the better uses of the system. Free credits let someone experience the real product without a trial timer. Give enough for a genuine job to complete end to end, because a free allowance that runs out halfway through teaches the wrong lesson.

How did this land?

About the author

Manuele Estivo
Manuele Estivo

Growth & SEO Lead

Manuele covers distribution: SEO, content strategy, and how AI-built products find their first thousand users. He tests everything he recommends.

Share

Get the next post in your inbox

One email a month. Product updates, engineering posts, and the best of Built with Swarmz.

I agree to receive emails about AI building tips and Swarmz product news. Unsubscribe any time.

Credit Systems for AI Products: How to Design One | swarmz.net