Key takeaways
- Start from what one action really costs you in model fees plus overhead, then charge a whole number of credits that keeps your target margin at your cheapest pack price.
- Credits bought through Apple in-app purchase may not expire, so keep purchased, subscription, free and earned credits in separate buckets with their own rules.
- If free users earn credits through offers, set the credits per $1 you earn so the worst-case cost of spending them stays well below that $1.
How to price AI credits
To price AI credits, work out what each action costs you in model fees plus overhead, decide what one credit is worth to you after store fees, and charge each action a whole number of credits that keeps your target margin at your cheapest price per credit. Then size the free tier as a marketing budget, set expiry rules per type of credit, and let free users earn more credits at a rate tied to what you earn. The rest of this guide walks through each step with illustrative numbers you can replace with your own.
If you are still choosing between subscriptions, ads and credits at all, start with How to monetize an AI app or chatbot.
Step 1: find your real cost per action
Users never see tokens. They see actions: a chat reply, an image, a minute of audio, a document summary. Price those actions, not tokens, and measure each one in your own logs.
For text, cost per action is input tokens times the input price plus output tokens times the output price. On Anthropic’s Claude API pricing page, Claude Haiku 5.5 costs $0.10 per million input tokens and $0.50 per million output tokens for prompts up to 100,000 tokens, and Claude Sonnet 5.5 costs $2 and $10. The same page lists a 50% discount for the Batch API and says Claude 4.7 and later models use a tokenizer that produces about 30% more tokens for the same text. For images, Google’s Gemini API pricing page lists gemini-3.1-flash-image at $0.067 per 1K output image on the paid tier. All prices checked on November 5, 2026. They change often, so read the live pages before you set prices.
Model fees are not your whole cost. Add a buffer for:
- Retries and regenerations that users trigger when they dislike an answer.
- Failed or blocked generations that you still pay for.
- Hidden tokens: system prompts, tool calls, chat history, safety checks.
- Storage, bandwidth and payment fees per action.
Illustrative cost table
Sample assumptions only: a chat reply uses 2,000 input and 500 output tokens, an image is one 1K image, and overhead adds 20% on top of model fees.
| Action | Model | Model fee | With 20% overhead |
|---|---|---|---|
| Fast chat reply | Claude Haiku 5.5 | $0.00045 | $0.00054 |
| Smart chat reply | Claude Sonnet 5.5 | $0.009 | $0.0108 |
| Image (1K) | gemini-3.1-flash-image | $0.067 | $0.0804 |
The spread is the point: in this example one image costs as much as about 150 fast replies. That is exactly why credits work better than a flat message count when your actions differ in cost.
Step 2: set what one credit is worth and your margin
Pick a simple retail anchor, such as 1,000 credits for $9.99, so one credit sells for about one cent. Then work out what you actually keep. If you sell through an app store, take off the store fee; if you sell on the web, take off card fees and tax handling. In this illustrative case, a 15% store fee leaves about $0.0085 per credit.
Next, choose a target gross margin for inference: the share of each credit’s net value left after model and overhead costs. Many teams aim high because support, servers, salaries and refunds come out of what is left. The formula is:
credits_per_action = ceil( cost_per_action / (net_value_per_credit x (1 - target_margin)) )
Illustrative credit prices at a 70% target margin
At $0.0085 net per credit and a 70% target, each credit can carry at most $0.00255 of cost. Rounded to friendly numbers:
| Action | Cost with overhead | Credits charged | Net revenue | Gross margin |
|---|---|---|---|---|
| Fast chat reply | $0.00054 | 1 | $0.0085 | 94% |
| Smart chat reply | $0.0108 | 5 | $0.0425 | 75% |
| Image (1K) | $0.0804 | 30 | $0.255 | 68% |
The image lands slightly under 70% because 30 credits reads better than 32. That trade is fine as long as you choose it on purpose. The fast reply has a large margin because 1 credit is the smallest unit; that is your room to be generous with the free tier.
Check margin at your biggest pack, not your smallest
Volume discounts lower your price per credit. In this illustrative setup, a $24.99 pack of 3,000 credits nets about $0.0071 per credit after a 15% fee, so the image at 30 credits nets $0.212 against $0.0804 of cost, a 62% margin. Run the formula at the lowest net price per credit you sell, including promotions.
Credit packs vs subscriptions
Most AI apps end up with both: a subscription that includes a monthly credit allowance, and packs for people who need more or do not want a plan.
| Option | Works well when | Watch out for |
|---|---|---|
| Credit packs only | Usage is spiky: a burst of images for one project, then nothing for weeks | No recurring revenue; users run out and forget to come back |
| Subscription with monthly allowance | People use the app every week and want a predictable bill | Heavy users who hit the cap on day 3 and churn |
| Subscription plus top-up packs | You want predictable revenue and a path for power users | Users confused about which credits are spent first |
| Usage-based billing | Developers and teams who accept metered invoices | Consumers dislike open-ended bills |
For a subscription, price the allowance with the same formula, but assume users spend all of it. If a $9.99 plan includes 1,200 credits and every credit is spent on images, your cost in this example is 40 images x $0.0804, about $3.22, against about $8.49 net. That still works. A plan that only works if users leave credits unspent is fragile, because your heaviest users are the ones who renew.
Show the balance on every screen that spends credits, and show the cost before the action runs (“This image uses 30 credits”). Hidden credit math leads to surprised users and refund requests. Hybrid monetization covers how to keep plans, packs and free credits from competing with each other.
How many free credits to give
Treat free credits as a marketing budget with a cap. Decide how much you will spend to get one user to their first good result, then work backward.
- Size the welcome grant for one win. Enough for a user to finish one real task, such as 3 images or 30 fast replies, not enough to finish a project.
- Prefer a daily refill to a big monthly grant. In this example, 20 fast-reply credits a day costs at most about $0.011 per user per day, and it brings people back daily.
- Route free credits to cheap actions. Let free credits buy fast replies but not the expensive model, or charge more credits for costly actions on the free plan.
- Require an account and rate limits, so one person cannot claim the grant ten times.
- Set a spend alarm on daily inference cost for free users.
Then measure: what share of free users reach the cap, and what share of those upgrade or buy a pack? If almost nobody hits the cap, it is too generous. If most hit it on day one and leave, it is too tight. How to monetize free users covers what to offer people who will never pay.
Free-tier mistakes that break credit pricing
Free credits that buy your most expensive action at the paid rate, no cap per account or device, welcome credits that stack with every new sign-up, unlimited regenerations that do not charge credits, and no alert when free-user spend jumps. Any one of these can make free users your largest cost line.
Expiry rules: what can and cannot expire
Expiry is where credit pricing meets platform rules and consumer trust. Keep separate buckets for each kind of credit, because the rules differ.
- Purchased on iOS. Section 3.1.1 of Apple’s App Review Guidelines says credits or in-game currencies purchased via in-app purchase may not expire, and that apps must use in-app purchase to unlock features such as in-game currencies (checked on November 5, 2026). Price iOS packs assuming those credits live forever.
- Purchased on the web. Your payment platform may let you set expiry. Stripe’s billing credits docs say credit grants only expire if you set an expiry time, that promotional credits usually have an expiry date, and that billing credits cannot be offered as gift cards or stored value (checked on November 5, 2026). Local consumer law can also limit expiry on prepaid value, so check it for your markets.
- Subscription allowance. A monthly allowance that resets is common. Say clearly whether unused credits roll over.
- Free daily or welcome credits. These can reset, as long as you say so up front.
- Earned credits. Decide one rule and write it in your terms. Users worked for these, so harsh expiry feels unfair.
Spend the bucket that expires first, and show that order in the balance view. A clear order also makes refunds and reversals easier to handle. Offerwall rules for iOS apps covers the Apple side in more detail.
Letting free users earn credits through offers
Some free users will never pay but would complete an offer, such as trying an app or answering a survey, in exchange for credits. An offerwall pays you per completed offer, and you turn that payout into credits. The pricing question is simple: how many credits do you give per $1 you earn?
Use two checks:
- Cost check. Find your most expensive cost per credit across all actions. In the illustrative table that is the image: $0.0804 / 30, about $0.0027 per credit. At 100 credits per $1 earned, the worst case is $0.27 of inference for each $1 you earn, leaving room for reversals and support.
- Price check. Compare with what buyers get. At 1,000 credits for $9.99, buyers get about 100 credits per $1. Earning at roughly the buyer rate keeps packs worth buying while still being fair to people who gave their time.
With those numbers, an offer that pays you $0.80 would show 80 credits: about 80 fast replies or between 2 and 3 images. Sample figures only. The virtual currency calculator lets you test your own rate and split, and How to set your virtual currency exchange rate explains the formula and rounding. For the wider design of earn and spend loops, see Virtual economy design.
Handle reversals before you launch
Advertisers sometimes reverse a completed offer, and the credits you granted can already be spent on inference you paid for. Credit only from a server-side postback, take credits back on a reversal, and consider a short hold before earned credits can buy expensive actions. Reward hold periods and Publisher earnings and reversals cover both sides.
How to add Moonetix to your AI app
Moonetix fits AI web apps and mobile apps where users sign in and hold a credit balance on your server.
- Apply as a publisher at moonetix.com. Every application is reviewed by hand; once you are approved, each app you add is live right away.
- Add your app and set the currency: name it “credits”, add an icon, and set the conversion rate, user split and whole-number rounding from your cost and price checks above. Set up your app currency walks through the settings.
- Integrate. For a web app, build a signed offerwall link or iframe on your server for the signed-in user (see the web apps page and website integration); for mobile, use the Android or iOS SDK with session tokens your server requests.
- Credit only from the signed postback: status 1 adds credits, status 2 with the same transaction ID removes them. Test with “Open as a test user” and “Send a test postback” in the app’s Integration tab, following Test your app before launch.
Honest limits: offers depend on each user’s country and device, so some users will see few offers. Users on VPNs, proxies, Tor or data center networks are blocked from the wall, and end users must be at least 16 (with parental permission under 18), so an AI app for children is not a fit. Earned credits should add to your paid plans, not replace them.
Earned credits priced from your own numbers
With Moonetix, your free users can earn the credits your app already sells, at a conversion rate and split you set, and every credit and reversal reaches your server as a signed postback. See how the wall works, or get in touch if you want to talk through your setup first.
Frequently asked questions
How much should one AI credit cost?
There is no standard price. Pick an anchor that is easy to read, such as about one cent per credit, then set how many credits each action costs from your real cost per action and target margin. The anchor matters less than charging consistent, whole numbers.
Should I price credits per token or per action?
Per action for consumer apps. Users understand “an image costs 30 credits” but not token counts. Measure tokens in your logs and convert them into a fixed number of credits per action, and review it when model prices change.
Can AI credits expire?
It depends on how they were obtained. Apple’s App Review Guidelines say credits bought through in-app purchase may not expire. Free, promotional and subscription allowance credits can reset if you disclose the rule. For web purchases, check your payment platform and local consumer law.
How big should a free tier of AI credits be?
Big enough for one real success, small enough that a heavy free user cannot cost more than you are willing to spend to acquire a customer. A small daily refill on a cheap model is easier to budget than a large monthly grant.
What happens when model prices drop?
Your margin grows. You can keep prices, add more credits per pack, or lower the credit cost of an action. Lowering costs is easy for users to accept; raising them later is not, so leave a buffer when you launch.
How many credits should a completed offer give?
Set credits per $1 you earn so that the most expensive way to spend them still costs you well under $1, and keep the rate close to what buyers get per $1. Credit only after the signed postback arrives, and remove credits if the offer is reversed.


