> ## Documentation Index
> Fetch the complete documentation index at: https://docs.amoreg.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Credits & pricing

> Prepaid GBP credits, reservations, and the ledger

The API is prepaid: your organisation holds a GBP credit balance and each
operation debits it. Credit arrives two ways — card top-ups processed by
Revolut Pay (dashboard or `POST /top-ups`), and, on plans that include one,
a **monthly allowance** granted automatically each calendar month. Unused
allowance rolls over.

## Pricing

| Operation                                                                | Price                                |
| ------------------------------------------------------------------------ | ------------------------------------ |
| Knowledge search (`POST /search`)                                        | 2p per request                       |
| Screening (`POST /screenings`)                                           | 2p per keyword                       |
| Document ingestion (`POST /documents`)                                   | 2p per page (min 10p, max 500 pages) |
| Sandbox execution (`POST /executions`)                                   | 5p + 1p per second of runtime        |
| Reads (`/credits`, `/jurisdictions`, status endpoints, `GET /documents`) | Free                                 |

Top-ups: minimum £10, maximum £1,000 per payment.

## How billing works

Simple operations debit atomically — searches per request, document
ingestion per page (exactly counted before ingesting; a failed ingestion is
refunded automatically). Screenings and executions — which run as durable
workflows — use a **reserve → settle** saga so you are never charged for
work that did not happen:

1. `RESERVE` — the estimated cost (e.g. keywords × 2p, or the execution's
   worst-case runtime) is put on hold.
2. The workflow runs.
3. `SETTLE` — the actual cost is charged and the full hold is `RELEASE`d.
   If the run fails, the hold is released and nothing is charged.

Your **available** balance is `balance − holds`. A request that would take
available below zero is rejected with `402` before any work starts.

## The ledger

Every movement is an immutable ledger entry:

| Type         | Effect                                                 |
| ------------ | ------------------------------------------------------ |
| `TOP_UP`     | Adds credit after a completed payment                  |
| `GRANT`      | Monthly plan allowance, once per calendar month        |
| `RESERVE`    | Places a hold for an estimated cost                    |
| `SETTLE`     | Charges the actual cost of a run                       |
| `RELEASE`    | Returns a hold in full                                 |
| `ADJUSTMENT` | Correction or automatic refund (e.g. failed ingestion) |

Fetch it with `GET /credits/ledger` or view it in the dashboard. All writes
are idempotent — retried requests and workflow steps can never double-charge.
