---
title: "Retrieve a monthly account statement"
method: GET
path: "/v1/accounts/{accountId}/statements/{period}"
tags: ["Accounts and money"]
---

# Retrieve a monthly account statement

`GET /v1/accounts/{accountId}/statements/{period}`

## Request

- Base URL: `https://hyperscale0.ai`
- URL: `https://hyperscale0.ai/v1/accounts/{accountId}/statements/{period}`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Derives one UTC calendar month's opening balance, immutable receipt-linked ledger lines, running balances, and closing balance directly from the ledger's own history. Live periods and line dates use ledger booking time. In sandbox each line is dated and filed by its operation's Product value date when it has one, as sandbox finance reports are, and the opening carries every earlier-dated line. Refuses the statement if any line lacks exact terminal evidence, if the deltas do not reconcile, or if the month exceeds 50,000 lines (in sandbox with value dates, the account's whole history to the cutoff).

## Path parameters

- `accountId` string, required: Hyperscale account ID
- `period` string, required: UTC calendar month in YYYY-MM form

## Query parameters

- `productId` string: Hyperscale product ID
- `cutoff` string, date-time
- `cursor` string
- `limit` integer

## Headers

- `X-Hyperscale-Environment` 'sandbox' | 'live'

## Response `200`

Success

- AccountStatementRetrieveOutput
  - `accountId` string, required: Hyperscale account ID
  - `closingBalance` string, required: Negative only on a contra claim account, where it is what the owner owes.
  - `currency` 'SAR', required
  - `environment` 'sandbox' | 'live', required
  - `finalized` boolean, required
  - `openingBalance` string, required: Negative only on a contra claim account, where it is what the owner owes.
  - `period` string, required: UTC calendar month in YYYY-MM form
  - `periodEndExclusive` string, date-time, required
  - `periodStart` string, date-time, required
  - `tenantId` string, required: Organization tenant ID
  - `productId` string: Hyperscale product ID
  - `asOf` string, date-time, required: The statement's business time: in sandbox the Product clock when one is set, otherwise the cutoff.
  - `cutoff` string, date-time, required
  - `observedAt` string, date-time: Sandbox only: the host instant the ledger was read at, equal to the cutoff.
  - `totalLines` integer, required
  - `nextCursor` string, nullable, required
  - `lines` object[], required
    - `amount` string, required: Non-negative minor-unit integer amount serialized as a string (at most 18 digits)
    - `balanceDelta` string, required: Signed minor-unit integer amount serialized as a string (at most 18 digits)
    - `counterpartyAccountId` string, required: Hyperscale account ID
    - `counterpartyDisplayName` string, required
    - `currency` 'SAR', required
    - `direction` 'debit' | 'credit', required
    - `entryId` string, required
    - `ledgerTransferId` string, required
    - `memo` string, required
    - `occurredAt` string, date-time, required
    - `operationId` string, required: Hyperscale operation ID
    - `operationName` string, required
    - `origin` object
      - `instrumentId` string, required
      - `instrumentInstanceId` string, required
      - `action` string, required
    - `runningBalance` string, required: Negative only on a contra claim account, where it is what the owner owes.
    - `status` 'pending' | 'posted' | 'voided', required
    - `title` string
    - `transferId` string, required: Hyperscale transfer ID

## Other responses

- `default`: ErrorResponse. See x-error-codes and x-errors for codes, HTTP statuses and retry guidance.

---

[API](https://skmtc.dev/hyperscale0/apis/hyperscale-product-api.md) · [All operations](https://skmtc.dev/hyperscale0/apis/hyperscale-product-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hyperscale0/apis/hyperscale-product-api/revisions/e9e8faa044d5?raw)
