---
title: "Approve Bank Statement Endpoint"
method: POST
path: "/v2/bank-statements/{statement_id}/approve"
tags: ["bank-statements"]
---

# Approve Bank Statement Endpoint

`POST /v2/bank-statements/{statement_id}/approve`

## 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/{statement_id}/approve`
- Auth: HTTP bearer

Approve a Bank Statement

Approve a bank statement that is in 'pending_approval' status. This marks all
transactions as finalized and the statement as approved.

## Path parameters

- `statement_id` string, required

## Response `200`

Successful Response

- BankStatement: Full response schema for a bank statement (includes transactions).
  - `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
  - `split_info` SplitStatementInfo, required: Information about statement splitting.
    - `is_split_parent` boolean, required: Whether this is a parent statement that was split into children
    - `split_count` integer, nullable, required: Number of child statements (only for split parents)
    - `child_statements` ChildStatementInfo[], required: Child statement info with names (only for split parents)
      - `id` string, required
      - `name` string, required: Attachment name of the child statement
    - `original_statement_id` string, nullable, required: ID of the parent statement (only for child statements)
    - `split_index` integer, nullable, required: Index of this statement in the split (only for child statements)
  - `transactions` BankStatementTransaction[], required: Transactions extracted from the statement
    - `id` string, required
    - `account_id` string, nullable, required: Bank account ID this transaction belongs to
    - `timestamp` string, date-time, required
    - `amount` string, decimal, required: Amount in standard currency units (e.g. dollars)
    - `currency` string, nullable, required
    - `type` 'deposit' | 'withdrawal', required
    - `description` string, nullable, required
    - `reference_number` string, nullable, required
    - `payment_status` 'non_payment' | 'potential_payment' | 'draft_payment' | 'posted_payment' | 'handled_outside', required: Status indicating the phase of cash application for a bank transaction.
  - `object` string, required: String representing the object's type. Objects of the same type share the same value.

## 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)
