---
title: Credits & billing
description: 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](#zero-balance).

One balance serves every key on your account.

## How charges work {#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](/models), and [Models & pricing](/docs/models/pricing) explains how each kind of token is counted. Each request's exact charge appears in [Logs](/app/logs).

## Top up with PayPal {#add-credit}

:::steps
### Pick an amount {#pick-an-amount}

On [Billing](/app/billing), choose $10, $25, $50, $100, $250, or enter any whole number of dollars between $5 and $5,000.

### Pay with PayPal {#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 {#back-to-billing}

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 {#zero-balance}

Once your balance is at $0 or below, model requests come back as `402`:

```json title="Anthropic"
{"type": "error", "error": {"type": "billing_error", "message": "Insufficient balance. Top up at the dashboard."}}
```

```json title="OpenAI"
{"error": {"message": "Insufficient balance. Top up at the dashboard.", "type": "insufficient_quota", "code": "insufficient_quota"}}
```

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](/docs/account/api-keys#limit-errors).

## Voucher codes {#redeem-a-code}

Got a voucher? Type it under **Redeem a code** on [Billing](/app/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 {#credit-history}

[Billing](/app/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](/app/logs); [Usage & logs](/docs/account/usage#reconcile-your-charges) shows how to match the two.

## Earn from referrals {#invite-friends}

The **Invite friends** card on [Billing](/app/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.
