---
title: "List the account's monthly statements"
method: GET
path: "/v1/users/me/statements"
tags: ["Users"]
---

# List the account's monthly statements

`GET /v1/users/me/statements`

## Request

- Base URL: `https://api.naturali.ai`
- URL: `https://api.naturali.ai/v1/users/me/statements`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.naturali.ai/authorize`, token URL `https://api.naturali.ai/token`, scopes: `mcp:access`)

What the account owes for each closed billing month, newest first: the subscription fee, prorated by the share of the month each plan was held, and runs past the allowance at the plan's overage rate, less what was paid at an upgrade. Overage is measured against the highest plan held that month.

A statement is written within an hour of the month closing, once, and never changes; `payment_status` follows its charge on the saved card. It is not a tax invoice. Months on the Free plan alone, contract plans and storage are not stated.

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

A page of statements.

- StatementPage
  - `data` Statement[], required
    - `id` string, required
    - `cycle` string, required: The billing month, `YYYY-MM` in UTC.
    - `period_from` string, date-time, required
    - `period_to` string, date-time, required: Exclusive.
    - `runs` object, required: Runs that month across every project the account pays for, against the allowance overage was measured against.
      - `used` integer, required
      - `limit` integer, nullable, required
    - `lines` StatementLine[], required
      - `kind` 'subscription' | 'run_overage' | 'prepaid' | 'model_credit_spend' | 'marketplace_fees' | 'marketplace_earnings' | 'platform_take', required: `subscription`, `run_overage` and `prepaid` make up `total_usd` and are charged; `prepaid` is fee already paid by card at an upgrade, netted as a negative amount. The other four report movements of prepaid credit in the cycle and are not part of it.
      - `plan` 'free' | 'pro' | 'business' | 'enterprise', required
      - `description` string, required
      - `period_from` string, date-time, required
      - `period_to` string, date-time, required: Exclusive.
      - `quantity` number, required: For `subscription`, the share of the month the plan was held; for `run_overage`, the runs past the allowance; for `prepaid`, 1.
      - `unit` 'month' | '1,000 runs' | 'payment' | 'USD', required
      - `unit_price_usd` number, required
      - `amount_usd` number, required
    - `total_usd` number, required: What is owed, after anything prepaid.
    - `payment_status` 'unpaid' | 'processing' | 'paid' | 'failed' | 'nothing_due', required: Collection on the saved card. `unpaid` until a charge starts — within an hour of the statement, once a card is saved. `failed` moves the account to Free when the month ends.
    - `created_at` string, date-time, required
  - `next_cursor` string, nullable, required

## Other responses

- `400`: The request was malformed or failed validation.
- `401`: Missing or invalid credentials.

---

[API](https://skmtc.dev/naturali/apis/naturali-ai-api.md) · [All operations](https://skmtc.dev/naturali/apis/naturali-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/naturali/apis/naturali-ai-api/revisions/e4905b78f422?raw)
