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

# List of statements

`GET /statements`

## Request

- Base URL: `https://api.treasury.shinkansen.finance/v1`
- URL: `https://api.treasury.shinkansen.finance/v1/statements`
- Auth: API key in header `Shinkansen-Treasury-Api-Key`

Returns a paginated list of statements. Statements are a record of the balance and the amount of withdrawn and paid to the bank account. Commonly, this statement is sent by the bank to the account holder by a daily or monthly basis. This endpoint fetches all statements from all bank accounts enrolled in Shinkansen Treasury and can be identified by the `account_number` field. List can be filtered by date range and account number.

**Pagination:** Results are returned in pages of up to `page_size` statements (default 25, max 100), ordered by the start of the booking period descending. The response includes a `Link` HTTP header (RFC 5988) with navigation URLs:
- `rel="next"` - URL for the next page (absent on the last page)
- `rel="prev"` - URL for the previous page (absent on the first page)
- `rel="first"` - URL for the first page
- `rel="last"` - URL for the last page

Each link is an absolute URL built from the host this service is configured with, and carries the `page` of the target page plus the filters you sent, so following a link keeps the same filters.

The order is the start of the booking period descending, with no further tie-break, so statements that share that date have no defined order between one request and the next. Narrow the result set with `account_number` or a date range when you need to read all of it, rather than relying on a walk over the pages to return every statement exactly once.

## Response `200`

List of statements

- Statements: List of statements
  - `statements` Statement[], required: A list of statements
    - `statement_id` string, required: UUID Unique identifier for the statement.
    - `currency` string, required: Currency ISO 4217 code (e.g: `"CLP"`)
    - `opening_balance` Balance, required: An account balance with type
      - `balance_type` 'snapshot' | 'end_of_statement', required: The type of balance. Can be of type: - `snapshot`: the balance of the account at the moment the source was captured. It is the most up-to-date balance available, but it can be slightly inaccurate under some situations for some financial institutions. It is the type returned by `/balances/latest`. - `end_of_statement`: the balance at the boundary of an official statement. It is always accurate, but it can be weeks or a month old. It is the type carried by the `opening_balance` and `closing_balance` of `/statements`.
      - `book_balance` string, required: Amount, ISO20022-compatible: Up to 18 integer digits, optional decimal separator ".", up to 5 fraction digits (also optional). By using a string we avoid issues with floating-point arithmetic as well as integer type limits on some JSON implementations.
      - `available_balance` string: Amount, ISO20022-compatible: Up to 18 integer digits, optional decimal separator ".", up to 5 fraction digits (also optional). By using a string we avoid issues with floating-point arithmetic as well as integer type limits on some JSON implementations.
      - `timestamp` string, date-time, required: The timestamp of the balance
      - `source` object, required: The source of the balance
        - `source_type` 'account_report' | 'account_statement', required: The type of source. Can be one of: - `account_report`: The balance was obtained from an account report, which is a real-time but not-yet-official information obtained from a bank. - `account_statement`: The balance was obtained from an official account statement.
        - `source_id` string, required: The id of the source
    - `closing_balance` Balance, required: An account balance with type
      - `balance_type` 'snapshot' | 'end_of_statement', required: The type of balance. Can be of type: - `snapshot`: the balance of the account at the moment the source was captured. It is the most up-to-date balance available, but it can be slightly inaccurate under some situations for some financial institutions. It is the type returned by `/balances/latest`. - `end_of_statement`: the balance at the boundary of an official statement. It is always accurate, but it can be weeks or a month old. It is the type carried by the `opening_balance` and `closing_balance` of `/statements`.
      - `book_balance` string, required: Amount, ISO20022-compatible: Up to 18 integer digits, optional decimal separator ".", up to 5 fraction digits (also optional). By using a string we avoid issues with floating-point arithmetic as well as integer type limits on some JSON implementations.
      - `available_balance` string: Amount, ISO20022-compatible: Up to 18 integer digits, optional decimal separator ".", up to 5 fraction digits (also optional). By using a string we avoid issues with floating-point arithmetic as well as integer type limits on some JSON implementations.
      - `timestamp` string, date-time, required: The timestamp of the balance
      - `source` object, required: The source of the balance
        - `source_type` 'account_report' | 'account_statement', required: The type of source. Can be one of: - `account_report`: The balance was obtained from an account report, which is a real-time but not-yet-official information obtained from a bank. - `account_statement`: The balance was obtained from an official account statement.
        - `source_id` string, required: The id of the source
    - `statement_number` string, required: Identifier of the statement. It can be a number or a code depending of the financial institution.
    - `until_booking_date` string, date, required: Closing date of bank booking for the statement
    - `since_booking_date` string, date, required: Start of the period for the statement
    - `bank_account_id` string, required: UUID Unique identifier of the bank account where the statemenet was booked.

## Other responses

- `403`: Forbidden (e.g: wrong API Key)
- `422`: One or more query parameters could not be validated. The body names the reason: `Invalid query parameters` when a filter value has the wrong type or shape, and `account_number must be a single value` when `account_number` arrives repeated or nested.

---

[API](https://skmtc.dev/shinkansen/apis/treasury-shinkansen-endpoints.md) - [All operations](https://skmtc.dev/shinkansen/apis/treasury-shinkansen-endpoints/llms.txt) - [OpenAPI document](https://skmtc.dev/shinkansen/apis/treasury-shinkansen-endpoints/revisions/2d3ec7684af3?raw)
