# Credits, charges, and refunds

Credits are the unit every Paxa API request is billed in, at one base rate on every plan.

Credits are the unit every request is billed in. Each model charges its own rate, the same on every plan and every refill. A new account starts with 100 free credits, which cover personal use and evaluation. Any paid plan or refill includes commercial use of your output.

## Rates

| Product | Credits | Price | Minimum |
| --- | --- | --- | --- |
| Speech | 10 per 1,000 characters | $10.00 per million characters | 0.1 credit |
| Translation (translated text) | 25 per 1,000 characters | $25.00 per million characters | 2 credits |
| Translation (reference text) | 8 per 1,000 characters | $8.00 per million characters |  |
| OCR | 6.5 per page | $6.50 per 1,000 pages | 1 page |
| Extraction (up to 50 leaf fields) | 13 per page | $13.00 per 1,000 pages | 1 page |
| Extraction (51 to 100 leaf fields) | 19.5 per page | $19.50 per 1,000 pages | 1 page |
| Transcription | 500 per hour | $0.50 per hour | 0.1 credit |

A character is one UTF-16 code unit, and the characters of an [emotion tag](https://paxalabs.com/docs/emotion-tags) or a [direction tag](https://paxalabs.com/docs/directions) count like any other. A page is one PDF page or one image file, which [OCR](https://paxalabs.com/docs/ocr#billing) and [extraction](https://paxalabs.com/docs/extraction#billing) both count from the document before the charge, and a schema's leaf count picks the extraction band. [Transcription](https://paxalabs.com/docs/speech-to-text#billing) bills the recording's exact length, 8.33 credits per minute, read from the file before the charge. Every translation response reports the [split](https://paxalabs.com/docs/translation#billing) between translated and reference characters.

## How charging works

The API charges a request before the model runs. If the model then fails, the API refunds the charge and answers [502 provider_error](https://paxalabs.com/docs/errors#provider_error). Speech text with nothing to voice, such as emoji alone, answers [422 unspeakable_text](https://paxalabs.com/docs/errors#unspeakable_text) and is refunded the same way. A product that is unavailable answers [503 provider_unavailable](https://paxalabs.com/docs/errors#provider_unavailable) before anything is charged.

Charges round up to the next hundredth of a credit. Requests that ask for [timestamps](https://paxalabs.com/docs/timestamps) bill at 1.25 times the speech rate, and a 57-character speech request with timestamps costs 0.72 credits. Speech in a [designed voice](https://paxalabs.com/docs/designed-voices) bills at 1.25 times the speech rate, or 1.5 times with timestamps. Each translation [alternative](https://paxalabs.com/docs/translation#options) bills as one more pass over the text. No other speech, transcription, OCR, or extraction option adds to a charge.

Audio responses and the OpenAI-compatible transcription route carry the charge in the `x-credits-charged` header. Transcription on `/v1/stt`, OCR, extraction, and translation report it in the body's `usage.credits` object and send no header. An [idempotent replay](https://paxalabs.com/docs/idempotency) reports the original charge, because nothing new is billed. A [live connection](https://paxalabs.com/docs/live-streaming) bills cumulatively, applies the 0.1 credit minimum once per connection, and reports each charge as a receipt on the socket.

## Credit buckets

An account holds two balances. Plan credits arrive with a subscription each billing period, reset when the period turns over, and are spent first. Wallet credits come from refills, the free grant, and referral rewards, and they never expire. A request draws from the plan bucket first and takes the difference from the wallet.

## When the balance runs out

When the balance cannot cover a request, the API answers [402 insufficient_credits](https://paxalabs.com/docs/errors#insufficient_credits) and charges nothing. There is no overage billing.

Buy credits on the dashboard's billing page, where $10 adds 10,000 wallet credits and plans are subscribed, switched, and cancelled. The [pricing page](https://paxalabs.com/pricing) lists both.

The same page offers auto top-up, which is off until you turn it on. Your saved card then buys the credit amount you chose whenever the balance falls below your threshold, at most once every 10 minutes.

## Check your balance

[GET /v1/me](https://paxalabs.com/docs/api/me) reports the live balance of both buckets, the presented key's spend, and the effective plan. Poll it when reconciling usage.

curl:

```bash
curl https://api.paxalabs.com/v1/me \
  -H "Authorization: Bearer $PAXA_API_KEY"
```

Response:

```json
{
  "key": {
    "id": "6b9f1a52-1b6e-4c9d-9f34-58a4c2f9d3aa",
    "name": "production",
    "key_start": "pxa_a3f2k9",
    "credit_limit": null,
    "credits_spent": 1240.39,
    "created_at": "2026-07-02T09:14:07.412Z",
    "last_used_at": "2026-08-03T05:41:52.108Z"
  },
  "balance": {
    "wallet": 8200,
    "plan": 14759.61,
    "total": 22959.61
  },
  "plan": {
    "key": "standard",
    "rpm": 200,
    "concurrency": 15,
    "monthly_credits": 25200
  }
}
```
