Cheaper Gen.

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#

  1. 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.
  2. 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_balance and nothing is charged.
  3. 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.
  4. 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: 4 costs 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}'
200 OK
{
  "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):

Prices with reference video
ModelTierOfficialCheaper Gen.
Seedance 2.0480p$0.0432$0.0346
Seedance 2.0720p$0.0929$0.0744
Seedance 2.01080p$0.2284$0.1854
Seedance 2.04K$0.4666$0.3827
Seedance 2.5480p$0.0643$0.0526
Seedance 2.5720p$0.1382$0.1131
Seedance 2.51080p$0.3402$0.2787
Seedance 2.0 Fast480p$0.0331$0.0261
Seedance 2.0 Fast720p$0.0713$0.0564
Seedance 2.0 Mini480p$0.0211$0.0122
Seedance 2.0 Mini720p$0.0454$0.0261
Wan 3.0480p$0.0500$0.0362
Wan 3.0720p$0.1000$0.0723
Wan 3.01080p$0.2000$0.1447
Wan 3.0 Prime480p$0.0680$0.0566
Wan 3.0 Prime720p$0.1400$0.1132
Wan 3.0 Prime1080p$0.2800$0.2263
MiniMax H3768P$0.0800$0.0628
MiniMax H32K$0.1300$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]}'
200 OK
{
  "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 return 402 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"
200 OK
{
  "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:

EntryMeaning
TOPUPCredits you added with a card.
AUTO_TOPUPCredits added automatically by auto top-up.
CHARGEThe hold placed when you submit a generation (negative).
REFUNDA hold returned because the generation failed or was canceled.
ADJUSTMENTA correction when the final cost differs from the hold.
PROMOPromotional or goodwill credits from us.

Something unclear or missing? Email support@cheapergen.com — we read everything.