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

# Credits & billing

> Flat one-credit company jobs with exactly-once settlement.

Every successfully completed metered company job costs exactly **1 credit**, independent of company size or
the number of target people. `not_found`, `no_employees`, `no_people_found`, `too_large`, `failed`,
and `cancelled` cost `0`. A successful result with zero persona matches costs `1`.

Submit checks for a positive balance but does not charge. After the immutable result is ready, one
Postgres transaction inserts a unique spend ledger row and decrements the balance. Publication occurs
only after that commit, so poll, history and webhook all see the same result and charge.

```json theme={null}
{
  "status": "done",
  "target_people_count": 0,
  "target_people": [],
  "credits_charged": 1,
  "credits_balance": 9
}
```

Before settlement, for free outcomes and on unmetered plans, `credits_charged` is the number `0`.

Unmetered plans are `internal`, `unlimited` and `enterprise`. The `pro` plan bypasses the company-size gate but is metered like every other paid plan.
Request History always shows this numeric value; it does not replace it with labels such as
`Pending` or `Included`.

Use `GET /v1/account` for balance and concurrency, and `GET /v1/credits` for the auditable ledger.
Each spend uses the job ID as its unique `ref`.

The existing bounded-overdraft model remains: already accepted concurrent jobs can finish after the
balance reaches zero, while new submits receive `402 insufficient_credits`.
