Guides
Billing & credits
Prepaid credits, how a generation's price is held and settled, automatic refunds for failed jobs, auto top-up and checking your balance via API.
Cheaper Gen. is prepaid and pay-as-you-go. You add credits in US dollars, every generation is paid from that balance, and you are only ever charged for successful outputs. There are no subscriptions, seats or platform fees.
Credits#
- Add credits in Dashboard → Billing with a card, from $5 up to $10,000 per payment. Payments are processed by Stripe and credited as soon as they succeed.
- One balance covers every model, the API and the Studio.
- Receipts for every payment are available in the dashboard. Enterprise accounts can be invoiced monthly instead — see Enterprise.
- Credits are prepaid and non-refundable except where required by law; see the Terms of Service. Failed and canceled generations are always refunded to your balance.
How a generation is billed#
- Quote. When you submit, we price the request from its inputs — resolution and duration for video, size and count for images — using the model's public price.
- Hold. That amount is deducted from your balance immediately and the generation is queued. If your balance is too low, the request fails with
402 insufficient_balanceand nothing is charged. - Settle. If the generation succeeds, the hold becomes the final charge. If the actual usage differs from the quote, the difference is applied as an adjustment.
- Refund. If the generation fails, or you cancel it while it is queued, the full hold is returned to your balance automatically.
Every generation reports its cost. While it is in progress the amount is the hold and estimated is true; once final, estimated is false:
{
"status": "succeeded",
"cost": {
"amount_usd": 0.4708,
"currency": "usd",
"estimated": false
}
}Pricing units#
- Video is priced per second of output at the selected resolution. A 10-second clip costs twice a 5-second clip.
- Images are priced per image at the selected size;
num_images: 4costs four images. - Seedance models are metered in video tokens exactly like the official API:
tokens = seconds × width × height × 24 ÷ 1024. Prices on the site are converted to per-second figures at 16:9; other aspect ratios differ slightly. - Reference videos add billed seconds on models that charge for them — see below. Reference images and audio don't change the price.
- Prices are shown with up to four decimals and rounded up to the nearest $0.0001 per request.
The full price list for every model and tier is on the pricing page.
Estimating cost before you run#
POST /api/v1/quote/{endpoint} prices any input without running it. It needs no API key and ignores content fields such as prompts and images. For example, Seedance 2.0 Fast with these settings costs $0.471:
curl -X POST https://cheapergen.com/api/v1/quote/bytedance/seedance-2.0-fast/text-to-video \
-H "Content-Type: application/json" \
-d '{"aspect_ratio":"16:9","resolution":"720p","duration":5}'{
"amount_usd": 0.4708,
"list_usd": 0.6048,
"discount_pct": 22,
"available": true,
"currency": "usd"
}amount_usd is what you'll pay, list_usd the official list price for the same request and discount_pct your saving in percent.
Reference video#
In reference-to-video modes, the length of your reference videos is billed together with the output, the same way the official APIs bill it:
- Seedance (2.0, 2.0 Fast, 2.0 Mini, 2.5): tokens = (reference video seconds + output seconds) × width × height × 24 ÷ 1024, at a lower with video input token rate — so a request with video costs more in total but less per second.
- Wan 3.0, Wan 3.0 Prime and MiniMax H3: reference video seconds are billed at the same per-second rate as the output.
We measure every reference file on our servers when you submit — never from the request — and hold the price for the measured durations. The generation's cost.reference_video_seconds shows the seconds included. Per billed second (5 s reference + 5 s output, 16:9):
| Model | Tier | Official | Cheaper Gen. |
|---|---|---|---|
| Seedance 2.0 | 480p | $0.0346 | |
| Seedance 2.0 | 720p | $0.0744 | |
| Seedance 2.0 | 1080p | $0.1854 | |
| Seedance 2.0 | 4K | $0.3827 | |
| Seedance 2.5 | 480p | $0.0526 | |
| Seedance 2.5 | 720p | $0.1131 | |
| Seedance 2.5 | 1080p | $0.2787 | |
| Seedance 2.0 Fast | 480p | $0.0261 | |
| Seedance 2.0 Fast | 720p | $0.0564 | |
| Seedance 2.0 Mini | 480p | $0.0122 | |
| Seedance 2.0 Mini | 720p | $0.0261 | |
| Wan 3.0 | 480p | $0.0362 | |
| Wan 3.0 | 720p | $0.0723 | |
| Wan 3.0 | 1080p | $0.1447 | |
| Wan 3.0 Prime | 480p | $0.0566 | |
| Wan 3.0 Prime | 720p | $0.1132 | |
| Wan 3.0 Prime | 1080p | $0.2263 | |
| MiniMax H3 | 768P | $0.0628 | |
| MiniMax H3 | 2K | $0.1006 |
Estimating a request with reference video#
/quote doesn't download files. Pass the clip lengths you expect as reference_video_durations (and optionally reference_audio_durations), in seconds, one per clip. It's an estimate: /run measures the actual files and holds that price. The playground reads durations in your browser and does the same.
curl -X POST https://cheapergen.com/api/v1/quote/bytedance/seedance-2.0/reference-to-video \
-H "Content-Type: application/json" \
-d '{"resolution":"720p","duration":5,"reference_video_durations":[4.2,3]}'{
"amount_usd": 0.9078,
"list_usd": 1.133136,
"discount_pct": 20,
"available": true,
"currency": "usd",
"reference_video_seconds": 7.2
}Auto top-up#
Auto top-up keeps production jobs from failing with 402. In Dashboard → Billing, save a card and choose a threshold (at least $5) and an amount (at least $10). After each charge, if your balance has dropped below the threshold, we charge the saved card for the amount and add it to your balance.
If a top-up payment fails
Auto top-up pauses and the reason is shown in the dashboard. Generations keep running until your balance runs out, then return402 insufficient_balance. Update the card to resume.Checking your balance#
GET /api/v1/account returns your balance and auto top-up settings:
curl https://cheapergen.com/api/v1/account \
-H "Authorization: Bearer $CHEAPERGEN_API_KEY"{
"object": "account",
"email": "you@company.com",
"balance_usd": 42.5,
"reserved_usd": 1.2,
"auto_topup": {
"enabled": true,
"threshold_usd": 10,
"amount_usd": 50
}
}balance_usd— what you can spend right now. Holds for in-flight generations are already deducted.reserved_usd— the total currently held by queued and running generations. It is either charged or refunded when they finish.
Ledger#
Every change to your balance is recorded in the ledger in Dashboard → Billing, with the balance after each entry:
| Entry | Meaning |
|---|---|
TOPUP | Credits you added with a card. |
AUTO_TOPUP | Credits added automatically by auto top-up. |
CHARGE | The hold placed when you submit a generation (negative). |
REFUND | A hold returned because the generation failed or was canceled. |
ADJUSTMENT | A correction when the final cost differs from the hold. |
PROMO | Promotional or goodwill credits from us. |
Something unclear or missing? Email support@cheapergen.com — we read everything.