Credits & billing
Prepaid USD balance, PayPal top-ups, voucher codes and how Half Off Dev charges each model request at half the official per-token price.
You pay Half Off Dev before you use it. Top up a balance in US dollars, and each model request takes its cost out of that balance at half the official list price. There's no plan to pick, no monthly invoice and no card on file that gets charged again: when the balance hits zero, requests stop until you add more. You can never owe more than you put in, apart from the small overrun described below.
One balance serves every key on your account.
How charges work#
| Item | Price | Charged |
|---|---|---|
| Model requests | Per token: input, output, cache reads and cache writes, each at the model's price per million tokens, half the official list price | When the response finishes |
Token counting (count_tokens, countTokens) | Free | — |
| Requests that end in an error | Free | — |
The current price of every model is on the model list, and Models & pricing explains how each kind of token is counted. Each request's exact charge appears in Logs.
Top up with PayPal#
Pick an amount
On Billing, choose $10, $25, $50, $100, $250, or enter any whole number of dollars between $5 and $5,000.
Pay with PayPal
Press Pay with PayPal. On PayPal you can pay from your PayPal balance or with a card. Top-ups are charged in US dollars.
Come back to the dashboard
When the payment goes through, PayPal sends you back to Billing and the credit lands in your balance within seconds. Cancelling on PayPal charges nothing.
Occasionally a payment needs extra time to clear. Billing then reads Payment is processing, and your balance updates by itself as soon as the money arrives. Need more than $5,000 at once? Make more than one top-up.
Running out of credit#
Once your balance is at $0 or below, model requests come back as 402:
{"type": "error", "error": {"type": "billing_error", "message": "Insufficient balance. Top up at the dashboard."}}What to know:
- The check happens when a request starts. A request that began with a positive balance always completes, even if it costs more than was left, so the balance can go slightly negative. The next top-up absorbs the difference.
- Nothing is switched off. Your keys stay valid; top up and send the request again.
- A key that has used up its own spend limit also gets a
402, with a different message. See API keys.
Voucher codes#
Got a voucher? Type it under Redeem a code on Billing. Codes start with HO-, for example HO-7KQ2M9XW4P; capitals and spaces are ignored. The amount is added to your balance on the spot.
An account can use each code once. Some codes also expire or have a limited number of redemptions.
| Message | What it means |
|---|---|
Code not found | No such code. Look for a typo. |
This code has expired | The code's end date has passed. |
You have already redeemed this code | Your account already used it. |
This code has been fully used | All of its redemptions are taken. |
Your credit history#
Billing lists the last 100 additions to your balance: top-ups, redeemed codes, referral earnings and any adjustments, plus a chart of daily spend over the past 30 days.
Spending isn't in that list. Each model request and its cost is in Logs; Usage & logs shows how to match the two.
Earn from referrals#
The Invite friends card on Billing gives you a personal link, https://halfoff.dev/signup?ref=.... Anyone who signs up through it earns you 5% of each top-up they pay for, credited to your balance as soon as their payment is.
The card counts how many people joined through your link and what you've earned so far. Earnings show up in your credit history. Only paid top-ups count, not redeemed codes.