How to price credits in your AI app
A credit is a promise of a finished job, not a model token. Here's the math, the shape and the rules, with a worked example.
9 minutes read
On this page
The short answer
Price credits per finished job, not per model token: decide what one job is (a report, an image, a minute of audio), add up what a job really costs you including failures, divide by one minus your target margin, then split that price into a round number of credits. Use packs for occasional users and a plan with included credits for regular ones. Show the cost before a job runs, refund failed jobs automatically, and never silently expire credits people paid for.
- One credit buys part of a finished job people understand. Tokens are your cost, not their unit.
- Price per credit = cost per delivered job ÷ (1 − target margin) ÷ credits per job.
- Packs suit people who need you a few times a year; a plan with included credits suits weekly teams.
- Free credits should end in a first finished job. Earned credits for setup and referrals cost less than an open free tier.
- Show the balance and the cost first, refund failures, keep paid credits from expiring, and give every change a receipt.
A credit price calculator with sliders for cost per job, failure rate, target margin and credits per job, showing the resulting price per credit and three pack prices.
$0.080 ÷ (1 − 10%) ÷ (1 − 70%) ÷ 20 = $0.0148 a credit
- $7.99500 credits25 jobs
- $29.992,200 credits (+10%)110 jobs
- $148.9912,000 credits (+20%)600 jobs
Most AI builders arrive at credits the same way. The model bill goes up, a few heavy users eat the margin, and a monthly plan suddenly feels risky. So you invent a credit, pick a number that looks like what other apps charge, and hope. Then the questions start: how many credits does a job cost, what happens when it fails, and why did this person sign up, spend their free credits on setup and never come back?
A builder of an AI lead-finding tool asked whether to sell credits to freelancers and subscriptions to agencies, after offering one free search, signup credits and top-ups. Replies said both groups have different rhythms and suggested testing both.
That's a good question, and it has a practical answer. Treat this post as a worksheet: six steps, one worked example with realistic sample numbers, and the rules that make people trust a balance.
What is a credit, really?
A credit is a promise: this many credits get you one finished thing. One summarized report. One product photo. One minute of cleaned audio. People can picture a report. Nobody can picture 14,000 tokens, and they shouldn't have to. Tokens, GPU seconds and API calls are your costs. The credit is what the customer buys.
So step one is naming the unit of value: the smallest result someone would happily pay for on its own. If your app does several jobs, give each one a fixed credit price (a report is 20, a quick rewrite is 2) rather than a price that floats with the length of the prompt. A fixed price lets people decide before they press the button. A floating price makes every click a small gamble.
In a thread about credit-based AI pricing, replies said users understand a named job like a report far more easily than token units, and that they dislike paying for results they can't use.
How are AI credits calculated?
Step two is the arithmetic. You need four numbers: what one attempt at the job costs you, how often an attempt fails, the gross margin you want, and how many credits one job takes. Then three lines:
cost per delivered job = cost per attempt ÷ (1 − failure rate)price per job = cost per delivered job ÷ (1 − target margin)price per credit = price per job ÷ credits per job
The first line is the one people skip. If you refund failed jobs (you should, see below), every failure is a cost with no revenue. A 10% failure rate means each finished job carries a ninth of another attempt. Put your support time and payment fees into the cost per attempt too, or lower the margin you aim for to cover them.
| Input or result | Example value | How you get it |
|---|---|---|
| Model cost per attempt | $0.12 | Average tokens per report × your model's price |
| Servers, storage, search per attempt | $0.03 | Monthly infra bill ÷ attempts that month |
| Cost per attempt | $0.15 | Sum of the two |
| Failure rate | 10% | Failed or refunded jobs ÷ all attempts |
| Cost per delivered report | $0.167 | $0.15 ÷ 0.9 |
| Target gross margin | 75% | Your choice |
| Price per report | $0.67 | $0.167 ÷ 0.25 |
| Credits per report | 20 | Your choice |
| Price per credit | $0.033 (30 credits per dollar) | $0.67 ÷ 20 |
So in this example, how much does 1 AI credit cost? About three and a third cents, because you decided a report is 20 credits. There's no market price for a credit. It's whatever your cost, failure rate and margin say, divided by a number you picked. The calculator at the top of this page does the same math; try it with your own numbers before you copy anyone else's price.
AI credits vs subscription: which shape fits?
Step three is choosing how people pay, and the answer comes from how often they need you. Look at how often the job really happens in someone's life or week, not how often you wish they'd open the app.
| Shape | Fits when | Watch out for |
|---|---|---|
| Credit packs, pay as you go | The job comes up a few times a year (an insurance question, a CV, a tax letter). Freelancers with uneven weeks. | People ration credits they've paid for. Make the cost per job obvious so they don't hesitate. |
| Subscription with included credits | Teams who run the job every week and want a predictable bill (an agency, a sales team). | Heavy users. Include a monthly allowance and say clearly what happens past it. |
| Hybrid: plan plus top-ups | Regular use with spikes, like a podcaster who records weekly but edits a season at once. | Two kinds of balance can confuse. Say which credits are spent first and which ones reset. |
The freelancer-or-agency question above has a simple answer: offer both, and let rhythm sort them. Packs for people who show up a few times a quarter, a plan for teams who'd rather not think about it. If your product is occasional by nature, don't force a monthly plan and then measure daily use. One builder of an insurance-questions app put it well: the hard part is getting someone back months later, when their policy renews. That's a reminder at the right moment, not a streak (more on that in why users don't come back).
The maker of an AI insurance-policy app moved from a monthly plan to signup credits and a small paid pack, and asked whether the credit pack system made sense to buyers.
How many free credits should you give?
Step four. An open-ended free tier is a monthly bill you pay for people who may never pay you. Free credits are better because they have an edge, but only if that edge sits after the first finished job. The most common mistake in these threads is a welcome balance that runs out during setup.
These are single makers' own numbers, not benchmarks, but the pattern is clear. Size the welcome balance from the job, not from a round number: enough for the first finished job, plus room to try again if the first one wasn't quite right. In the worked example, 200 credits is ten reports and costs you at most about $1.67 per signup. That's a free tier with a ceiling you know in advance.
A chart comparing the number of people who sign up with the smaller number who finish a first useful job.
- Signed up100 people100%
- Got a first win34 people34%
The biggest leak is here.
- Came back for a second19 people19%
- Still around in week 49 people9%
Then let people earn more instead of handing out more. Give a few credits for setup steps that make the next job better (connecting a data source, saving a template), and a real bonus for bringing a friend, paid only when the friend finishes their first job. In the example, 500 credits each for a referral is 25 reports, about $4.17 in cost per person, and you only pay it after a new user got value. Our referral guide covers why the friend's first finished job, not the signup, is the moment to reward.
The rules that make people trust a balance
Step five. Credits feel fair when nothing about them is a surprise. These are the rules that come up again and again when people complain about AI credits:
Show the balance and the cost before the job runs
"This report costs 20 credits. You have 180." On the button, not in the docs. If a job might cost more (a longer file), say the range first.
Refund failed jobs automatically
If the job errors, times out or returns nothing usable by your own standard, give the credits back without a support ticket. You already priced failures into the cost per job, so this costs nothing extra.
Never silently expire paid credits
Credits someone bought should stay theirs. Free or earned credits can have an end date, as long as it's stated up front and shown next to the balance.
A receipt for every change
Every credit in or out gets a line: what happened, how many, the balance after. It answers "where did my credits go?" before anyone has to ask.
A builder asked how to handle credits when something breaks halfway through a job. Replies recommended keeping a ledger of every change rather than a single balance number, and restoring credits after failed operations.
Refund failed jobsDraft
Whena report failsDogive back the credits it cost, with a receipt
A list of credit receipts: plus 200 welcome credits, minus 20 for a report, plus 20 refunded for a failed job, plus 500 friend bonus, each with the running balance.
- WelcomeSigned up+200200
- Report: Q3 salesFinished−20180
- Report: churnStarted−20160
- RefundReport failed, credits back+20180
- Friend bonusLeo finished his first report+500680
On the expiry point, the objection is real. A developer on Hacker News couldn't see why credits they had paid for should have an end date, and the replies, several of them openly guessing, never settled why. If you need a cost ceiling, put it on free credits, not on money people already gave you.
How to design credit packs
Step six. Three packs is enough. One small pack so a new buyer can say yes without thinking, one middle pack most people pick, one big pack for heavy users. Give a bonus on the bigger packs, keep the numbers round, and label each pack in jobs as well as credits, because "35 reports" means more than "700 credits".
| Pack | Price | Credits | Reports | Bonus vs base rate | Your gross margin |
|---|---|---|---|---|---|
| Starter | $5 | 150 | 7 | none | 75% |
| Regular | $20 | 700 | 35 | +17% | 71% |
| Big | $50 | 2,000 | 100 | +33% | 67% |
Check the last column every time you add a bonus. Bonuses come out of margin, so the biggest pack is where you're thinnest. If it drops below the margin you can live with, shrink the bonus before you raise the small pack's price. And when your model costs fall, you can pass some of that on as a bigger bonus without touching the credit price people already know.
Set it up
You need two separate things: a way to take money, and a way to keep balances honest. The second is where most homemade credit systems go wrong, with a single number in a users table that nobody can explain when it looks off.
Lurk keeps that part for you from day one. You create a Credits unit and a few rules: a welcome balance on signup, a spend when a report runs, a refund when one fails, a bonus for both people when a friend finishes their first report. Your app sends events, Lurk changes the balance, and every change gets a receipt with the balance after it. Lurk doesn't meter your model costs; the cost math above is still yours.
You sell credit packs through your own Stripe account. Bought credits never expire, earned and bought credits are kept apart, and a refund takes back exactly the pack that was bought. Start from the Onboarding and Referral templates for the free credits, then add Coin packs or Top up and earn for the paid ones.
Selling your own unitsHow packs, Stripe payouts and refunds work.See microtransactionsLurk's own price is a plan plus usage, with a free plan to start on; see pricing. Then paste the prompt below into your coding agent.
Set it up with your agent
Paste this to your coding agent and it sets Lurk up in your project. Then ask it for what this post describes, or start from one of these templates. Nothing goes live until you say yes.
Read https://getlurk.com/llms.txt and set up Lurk for this project.
- Claude Code
- Cursor
- Codex
- Any harness
Questions people ask
How to do pricing for an AI platform?
Start from one finished job your customers recognize, like a report or an image. Work out what that job costs you including failed attempts, divide by one minus your target gross margin to get a floor price, then test upward based on what the job is worth to them. Choose packs, a subscription or both depending on how often people need the job.
How much does 1 AI credit cost?
There is no standard price, because each app decides what a credit buys. Work it out as cost per delivered job divided by one minus your margin, divided by credits per job. In this post's example, a $0.15 report with a 10% failure rate and a 75% margin at 20 credits per report comes to about $0.033 per credit.
How are AI credits calculated?
Behind the scenes, the app adds up model tokens, servers and other costs per job, then sets a fixed number of credits per job. Good apps show that number before the job runs. The credit is a price for a result, not a direct count of tokens.
How to make credits for AI?
Pick a name and a unit of value, give each job a fixed credit price, and keep a ledger where every grant, spend and refund is its own receipt. Add a welcome balance that covers a first finished job, and connect a payment provider when you start selling packs.
Are credits or a subscription better for an AI app?
It depends on rhythm. Credits suit people who need you a few times a year, because they never pay for idle months. A subscription with included credits suits teams who use you every week and want a predictable bill. Many apps offer a plan plus top-ups.
Should AI credits expire?
Credits people paid for shouldn't, and on iOS, Apple's guidelines say credits bought through in-app purchase may not expire. Free or earned credits can have an end date if you state it up front and show it next to the balance.
Sources
- r/SaaS: Credit-based vs subscription pricing on an AI app (freelancers vs agencies)
- r/SaaS: AskMyPolicy maker on moving from a monthly plan to credit packs
- r/SaaS: Free trials are dead in the AI era (Novelmint cohort, cost per free user)
- r/SaaS: How do you handle credits in your app?
- r/SaaS: Credit-based AI pricing models
- Hacker News: why should purchased LLM credits expire?
- Apple App Review Guidelines, section 3.1.1
More posts to read
Get users
How to get your first 100 users after you vibe code an app
You built it in a weekend. Nobody came. Here is the playbook, rung by rung, with the exact message to send first.
Bring them back
Why users try your app once and never come back (and how to fix it)
Three leaks explain most empty second sessions. Find yours before you add a streak.