# Credits and payments

Prepaid credits, listed model prices, payment fees, optional monthly subscriptions, crypto top-ups, and your balance.

AnonRouter runs on prepaid credits. One credit is one US dollar. Your balance is
denominated in USD, and pay-as-you-go inference draws down against it. Optional
[monthly subscriptions](/subscriptions), when offered, include a usage allowance
instead.

## How usage is charged

Text models are billed per token. Image generation is a flat price per image, and
speech is priced per character. A paid request first reserves an amount
from your balance, then settles from usage metadata at the route’s listed prices.
If the provider omits usage, estimates can be billed; an interrupted request can
also be charged. The charge cannot exceed its reservation.
[Metering and settlement](/metering) explains the details.

Usage is charged at the listed prices shown for the model and provider route you
select. The price shown for a route is what you pay: nothing is added per
request, and the only fee is the [service fee](#the-service-fee) when you buy
credits. With an active [subscription](/subscriptions), the allowance is used at
your plan's price for the route instead. Input, output, cache reads, and cache
writes can have different rates. Some routes also have
long-context price tiers: crossing a prompt threshold changes the rates for the
whole request, including output. Check the model’s pricing before sending a long
prompt, and see [context limits](/context-limits) for how requests fit a route.

[Free model variants](/free-models) have separate limits and opt-in requirements.
A paid model does not become free just because your balance is empty.

## The service fee

Buying credits adds a service fee, currently a promotional **5% with a $0.75
minimum**, down from the regular 8% with a $1 minimum. The fee is shown as a
separate line item before you pay. It applies to credit purchases only, not to
individual inference requests.

Promotional pricing can end, so read `fee_percent` and `minimum_fee_usd` from
`GET /v1/billing/catalog` rather than hard-coding either number.

## Subscriptions

Monthly plans with a usage allowance are described on the
[Subscriptions](/subscriptions) page. Purchased credits stay separate from a
plan's allowance.

If your dashboard shows **New rates on next top-up**, your current credits are
still billed at the prices that applied when you bought them. Your next credit
purchase, or starting a plan, moves your account to the current prices.

## Buying credits

Credits are purchased from the dashboard, not through the API. Preset packages
are $5, $10, $25, $50, $100, and $250, and you can enter a custom whole-dollar
amount up to $1,000.

Depending on the payment methods currently enabled, you can pay by:

* **Card.** A hosted checkout through a third-party card processor.
* **Crypto.** An invoice through a self-hosted crypto payment processor,
  payable with Bitcoin on-chain or Bitcoin Lightning. A crypto quote is valid for
  15 minutes. Credits appear after the invoice settles and the payment is verified.

> **Availability and exact limits come from the catalog**
>
> `GET /v1/billing/catalog` returns the live minimum and maximum purchase
> amounts, the fee percent, the minimum fee, the available packages, and which
> rails are currently accepting payment. `payments_enabled` covers card checkout
> and `crypto_payments_enabled` covers the crypto invoice. Check these flags
> before starting checkout. Read those values rather than hard-coding availability
> or limits.

> **Crypto is not automatically anonymous**
>
> Paying in crypto does not by itself make a purchase anonymous. Public
> blockchains and payment infrastructure can observe the limited data described
> in the privacy policy.

## Crypto payment questions

### When will my credits arrive?

Bitcoin on-chain payments need one confirmation. Lightning payments can settle
immediately. In both cases, AnonRouter must receive and verify the settled
invoice notification before adding credits. Poll the order or check your
purchase history; sending the payment alone does not mean the balance has updated.

### What if I pay too much?

A verified overpaid invoice credits the amount of credits you purchased, once.
The excess does not buy additional credits and is not automatically refunded.
Pay the amount shown on the invoice.

### What if I pay late or send too little?

Late, partial, and invalid payments do not receive automatic credits. Contact
support with the order ID so the payment can be reviewed. If your wallet shows a
completed payment but your order remains pending, check the order before creating
another purchase or sending a second payment.

## Reading your balance and usage

A management key can read your balance and usage programmatically.

```bash
curl "https://control.anonrouter.ai/v1/balance" \
  -H "Authorization: Bearer $ANONROUTER_MANAGEMENT_KEY"
```

```json title="GET /v1/balance"
{
  "account_id": "acct_...",
  "available_usd": 42.5,
  "reserved_usd": 0.0,
  "updated_at": "2026-07-30T12:00:00.000Z"
}
```

`GET /v1/usage` returns a list of recent requests as metadata only, each with
`request_id`, `model`, `operation`, token counts, `cost_usd`, `status`, and
latency. Add `?workspace_id=<id>` to scope it to one [workspace](/workspaces).

## Receipts and orders

With a session, the dashboard exposes order and receipt history:

| Method | Endpoint                              | Description                              |
| ------ | ------------------------------------- | ---------------------------------------- |
| `GET`  | `/v1/billing/catalog`                 | Packages, limits, fee, and payment terms |
| `GET`  | `/v1/billing/orders`                  | List purchase orders                     |
| `GET`  | `/v1/billing/orders/:orderId`         | Poll a single order's status             |
| `GET`  | `/v1/billing/receipts`                | List receipts                            |
| `GET`  | `/v1/billing/receipts/:receiptNumber` | Fetch one receipt                        |

To watch a purchase complete, poll the order until its `status` becomes `paid`
and `credited_at` is set.
