---
title: "List service statements"
method: GET
path: "/statements"
tags: ["Statements"]
---

# List service statements

`GET /statements`

## Request

- Base URL: `https://developers.ozav.io/v2`
- URL: `https://developers.ozav.io/v2/statements`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Your organization's monthly service statements, newest first, up to the last 36 months. Each one is what OZAV charges you, or credits you, for that month: volume, transactions, active users, your share of spread, and the amount due or credited. A statement covers live activity, so a test key gets an empty list.

The scope `billing:read` is granted to every key created from now on; a key created before it needs to be replaced to read statements.

## Response `200`

The statements.

- StatementList
  - `object` 'list', required: Always `list`.
  - `data` Statement[], required: The statements, newest first, up to the last 36 months.
    - `object` 'statement', required: Resource type discriminator; always `statement`.
    - `id` string, required: `ozav_stmt_` followed by the year and month.
    - `month` string, required: The month the statement covers (YYYY-MM).
    - `status` 'pending' | 'issued' | 'overdue' | 'paid' | 'cancelled', required: `issued` past its due date reads as `overdue`.
    - `volume_usd` number, required: Volume processed in the month.
    - `transactions` integer, required: Number of transactions in the month.
    - `active_users` integer, required: Customers active in the month.
    - `spread_client_share_usd` number, required: Your share of the spread for the month.
    - `amount_due_usd` number, required: What you owe OZAV for the month.
    - `amount_credit_usd` number, required: What OZAV owes you for the month.
    - `issued_at` string, date-time, nullable, required: When the statement was issued.
    - `due_at` string, date-time, nullable, required: When payment is due.
    - `paid_at` string, date-time, nullable, required: When it was paid.
    - `grace_period` boolean, required: Whether the month fell in a grace period with no charge.
    - `created_at` string, date-time, required: When the statement was generated.
  - `has_more` boolean, required: Always `false`; the list is not paginated.
  - `next_cursor` unknown, required

## Other responses

- `401`: Missing or invalid API key.
- `403`: The organization lacks the entitlement (code ENTITLEMENT_REQUIRED) or the key lacks the scope (code INSUFFICIENT_SCOPE). On money-moving requests (POST /transfers, POST /wallets/{wallet_id}/transfers) a compliance hold on the customer answers with code COMPLIANCE_HOLD: the hold is reviewed and lifted on OZAV's side; retrying does not clear it. When the only hold is a pause until pending onboarding documents are received, a withdrawal answers CUSTOMER_DOCUMENTS_PENDING instead: send what `requirements` on GET /customers/{id} lists; OZAV lifts the pause after reviewing it. On OZAV Services (live without the platform's KYB), any API outside decisions, screenings, lists and self-custody wallets answers with code PRODUCTION_NOT_ACTIVATED.

---

[API](https://skmtc.dev/ozav/apis/ozav-api.md) - [All operations](https://skmtc.dev/ozav/apis/ozav-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ozav/apis/ozav-api/revisions/4133dc2109d7?raw)
