---
title: "List Bank Statements"
method: GET
path: "/v2/bank-statements"
tags: ["bank-statements"]
---

# List Bank Statements

`GET /v2/bank-statements`

## Request

- Base URL: `https://api.stuut.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.stuut.ai/v2/bank-statements`
- Auth: HTTP bearer

List Bank Statements

Retrieve a paginated list of bank statements. Supports filtering by status,
date, account, and finding children of split parent statements.

## Query parameters

- `page` integer: Page number, 0 indexed.
- `limit` integer: Number of records per page.
- `sort_by` 'created_at' | 'period_start' | 'period_end'
- `sort_order` 'asc' | 'desc'
- `status__in` Status[], nullable: Filter by statement status (including SPLIT for parent statements)
- `date` string, date, nullable: Filter by date - returns statements where this date falls within the period
- `search` string, nullable: Search in attachment filename
- `account_id` string, nullable: Filter by bank account ID
- `original_statement_id` string, nullable: Find child statements of a split parent

## Response `200`

Successful Response

- PaginatedResponseBankStatementListItem
  - `data` BankStatementListItem[], required: The list of records.
    - `created_at` string, date-time, required
    - `modified_at` string, date-time, nullable, required
    - `id` string, required
    - `status` 'submitted' | 'processing' | 'invalid' | 'pending_approval' | 'approved' | 'split' | 'synced', required
    - `period_start` string, date, nullable, required: The statement period's start date.
    - `period_end` string, date, nullable, required: The statement period's end date.
    - `account_id` string, nullable, required
    - `account_number` string, nullable, required: The account number that the statement relates to.
    - `attachment` BankStatementAttachment, required: Attachment information for a bank statement.
      - `id` string, required
      - `name` string, required
      - `src` string, nullable, required: Presigned URL to download the file
      - `mime_type` union, required: MIME type of the file
        - 'application/json' | 'application/pdf' | 'application/msword' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' | 'application/vnd.ms-excel' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | 'application/vnd.oasis.opendocument.spreadsheet' | 'application/vnd.ms-excel.sheet.macroEnabled.12' | 'application/vnd.ms-excel.sheet.macroenabled.12' | 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' | 'application/vnd.ms-excel.sheet.binary.macroenabled.12' | 'application/vnd.ms-powerpoint' | 'application/vnd.openxmlformats-officedocument.presentationml.presentation' | 'text/csv' | 'application/csv' | 'text/plain' | 'text/html' | 'application/xml' | 'message/rfc822' | 'application/vnd.ms-outlook' | 'application/rtf' | 'text/markdown' | 'text/md'
        - 'image/heic' | 'image/jpeg' | 'image/jpg' | 'image/png' | 'image/gif' | 'image/svg+xml' | 'image/x-eps' | 'image/tiff' | 'image/bmp' | 'image/webp' | 'image/avif'
        - 'audio/mp3' | 'audio/mp4' | 'audio/mpeg' | 'audio/wav' | 'audio/x-wav' | 'audio/webm'
        - 'video/MP2T' | 'video/quicktime' | 'video/mp4' | 'video/mpeg' | 'video/webm' | 'video/x-msvideo' | 'video/x-ms-wmv'
        - 'application/zip' | 'application/x-zip-compressed' | 'application/vnd.rar' | 'application/x-rar-compressed' | 'application/x-7z-compressed'
        - 'unknown'
      - `file_type` string, nullable, required: File type category (e.g., pdf, image)
    - `processing_error` ProcessingError, required: Processing error details.
      - `error_code` union, required
        - 'duplicate' | 'insufficient' | 'invalid_file_type' | 'irrelevant' | 'processing_error' | 'upload_missing'
        - 'no_matching_account' | 'missing_period_dates' | 'no_extraction_data' | 'invalid_transaction_data' | 'extend_workflow_failed'
      - `error_message` string, required: Human-readable error message
    - `transaction_count` integer, required: Number of transactions in this statement
    - `total_deposits` string, decimal, nullable, required: Sum of all deposit transactions in standard currency units (e.g. dollars)
    - `total_withdrawals` string, decimal, nullable, required: Sum of all withdrawal transactions in standard currency units (e.g. dollars)
    - `account_mask` string, nullable, required: Masked account number (last 4 digits) from linked BankAccount
    - `account_name` string, nullable, required: Name of the linked BankAccount
    - `currency` string, nullable, required: ISO-4217 currency code from linked BankAccount
    - `object` string, required: String representing the object's type. Objects of the same type share the same value.
  - `current_page` integer, required: The current page.
  - `total_records` integer, nullable, required: Total number of records.
  - `next_page` integer, nullable, required: The next page number, if one exists.

## Other responses

- `422`: Validation Error

---

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