Pricing and billing
Token prices in Rupiah, peak hours, how a request is held and charged, top-ups, auto top-up, free credit and promotions.
Prices
Every model has prices in Rupiah per 1 million tokens:
| Price | Applies to |
|---|---|
| Input | Prompt tokens that were not read from the cache. |
| Cached input | Prompt tokens read from the model's prompt cache. Usually a fraction of the input price. |
| Output | Everything the model writes, reasoning and thinking tokens included. |
Some models that report prompt-cache writes bill those tokens at their own cache-write price; models without one bill them as input.
The current prices are in the dashboard under AI Gateway, then Models & pricing. The price list says whether PPN is included. Charges are computed to a fraction of a rupiah from the exact token counts, so a small request can cost less than Rp 1. The price list shows rounded values.
Example
With an illustrative model priced at Rp 2,500 input, Rp 250 cached input and Rp 10,000 output per 1M tokens, a request with prompt_tokens: 12,000 (of which cached_tokens: 8,000) and completion_tokens: 900 costs:
input (12,000 - 8,000) x 2,500 / 1,000,000 = Rp 10.00
cached 8,000 x 250 / 1,000,000 = Rp 2.00
output 900 x 10,000 / 1,000,000 = Rp 9.00
total = Rp 21.00Prices by prompt length
A few models have more than one price tier by prompt size: a longer prompt moves the whole request to a higher tier. The tier is chosen by the whole prompt, cached tokens included. Models & pricing shows each tier with the prompt size where it starts.
Peak hours
Models marked peak / off-peak in the price list have two prices, and a request pays the one in force when the gateway receives it. Peak hours are:
| Days | Peak hours (WIB, UTC+7) |
|---|---|
| Monday to Friday | 08:00 to 11:00 and 13:00 to 17:00 |
All other times, including the whole weekend, are off-peak. Models & pricing says whether it is peak time right now. Models without the mark have one price at all times.
For heavy batch jobs on a peak-priced model, schedule them outside these hours.
Holds and settlement
The exact cost of a request is known only after the model answers, so every request is billed in two steps.
Hold, before the call
The gateway estimates the most the request can cost and reserves it from your AI balance:
- the prompt, counted on the high side, at the input price (images count as a fixed allowance, not by their base64 size);
- plus the full output cap (
max_tokens,max_completion_tokens, or the default cap) at the output price.
If your available balance cannot cover the hold, the request is refused right away with 402 insufficient_balance and nothing is charged. A held amount cannot be spent by your other requests, so many parallel requests can never spend more than you have.
Settlement, after the answer
When the answer is complete, the gateway reads the real token counts from usage, charges that amount, and releases the rest of the hold. The charge is never more than the price list for the tokens actually used.
What is charged in other cases:
| Case | Charge |
|---|---|
Refused before the model is called (bad key, unknown model, limits, 402) | Nothing. No hold is taken. |
The model fails or is unreachable before it starts answering (5xx, timeout) | Nothing. Recorded at Rp 0 in Usage, hold released. |
| A stream breaks after the model started writing | What was generated up to then. |
| You close the connection or cancel a stream mid-answer | What was generated up to then. When the model sent no final token count, it is estimated from the text received, on the low side. |
| The model's answer has no token counts | An estimate from the prompt and the answer's size. |
The output cap drives the hold. If you get 402 with a balance that looks sufficient, lower max_tokens or top up.
Available balance
Overview in the dashboard shows:
- Balance: what you topped up, minus what you spent.
- Free credit: bonus or promotional credit. It is spent before your paid balance, the credit that expires first going first. Some free credit is limited to certain models; Overview shows which.
- Held: reserved by requests that are running right now.
- Available: balance plus free credit minus held. This is what the next request can use.
Top up
The AI balance is filled from your Helipod wallet (the deposit balance) in AI Gateway, then Overview:
- A pack: a fixed amount, sometimes with bonus credit added as free credit.
- A custom amount: any amount at or above the minimum top-up shown in the dashboard.
The amount moves from your wallet to your AI balance at once. If the wallet is short, the top-up is refused and you can add funds to the wallet first. The AI balance is shared by all your projects and cannot be moved back to the wallet.
Scripts and agents can top up with the Management API (POST /api/ai/topup, with a dry run and an Idempotency-Key).
Auto top-up
Turn on auto top-up in Overview and set two values:
- When balance falls below: the level that triggers a top-up;
- Top up this amount: how much to move from the wallet each time (at least the minimum top-up).
After requests, when your paid balance minus what is held drops below the level, the gateway tops it up from your wallet within seconds. If the wallet cannot cover it, the attempt is skipped and tried again after 30 minutes; Overview shows when it last failed. Keep your wallet funded, or requests will start to answer 402 once the AI balance runs out.
Promotions
From time to time Helipod runs promotions on the AI Gateway:
- Model discounts: a percentage off, or a special price, on some models. Some apply only at certain times, only to new accounts, or only with a promo code.
- Top-up bonuses: extra free credit, a percentage of what you top up.
How they work for you:
- Automatic. A running promotion applies to your requests without any change in your code. When several could apply, you get the one that saves you the most (or the one Helipod ranks first).
- Visible. Models & pricing shows the promo price next to the normal price, and marks promotions that are ending soon. Usage shows, per request, the normal price and what the promotion saved, and this month's total savings.
- Promo codes. Enter a code in Overview. Each code can be used once per account, and only one code can be active at a time; you can add a new one when the current one ends or its discount is used up.
- Ends automatically. A promotion ends at its end date, or earlier when its budget (or your share of it) is used up. Normal prices then apply again, with no action from you. When a promotion you used has ended, Overview tells you how much it saved you.
A promotion never makes a request cost more than the normal price.
See what a request cost
- Per request. AI Gateway, then Usage lists your most recent requests (up to 100): time, model, key, status, input / cached / output tokens, the price per 1M tokens at that moment, the charge, and any promo saving. Failed requests show Rp 0. Filter by key or model, and match a row to your logs with the
x-request-idresponse header. - Totals and charts. Usage also shows this month's spend per model and charts for the last 24 hours, 7 days or 30 days (requests, errors, tokens, spend, latency, cache hit rate), in WIB.
- In your code. Every response carries token counts in
usage(see OpenAI and Anthropic). Multiply them by the model's prices to track cost per request yourself. The gateway does not return the Rupiah amount in the response.
To cap what one integration can spend, give it its own key with a monthly spend limit. See Key options.