Skip to main content

Overview

Bank Statement Analysis (BSA) is AnyCheck’s most comprehensive verification service. It extracts and structures all transactions from uploaded bank statement PDFs or images using OCR, then provides a full suite of financial analytics: balance trends, merchant analysis, cash flow categorization, and more.

Multi-file support

Analyze multiple statements (different months or accounts) in a single verification.

Inspectable OCR results

Read extracted headers and transaction rows programmatically to verify OCR output.

Rich analytics

Balance summary, running balances, merchant analysis, proforma financial statements.

Combine results

Merge multiple BSA results into a single unified view for multi-account analysis.

BSA Workflow

1

Upload the statement file(s)

Upload the bank statement PDF or image using the file upload endpoint. You can upload multiple files and include passwords for password-protected PDFs.
Save the returned file paths to use in the next steps.
2

Create the BSA verification

Create a verification using the Bank Statement service ID. Pass the uploaded file paths in the configuration object.
Processing is asynchronous. The verification starts in IN_QUEUE and transitions to IN_PROGRESS then COMPLETED.
3

Inspect headers and item lines

When the verification is COMPLETED, the OCR results are available. Inspect the extracted table structure before reading analytics.Get headers (column names recognized from the statement):
Get item lines (individual transaction rows for a header):
4

Read analytics

Once you’re satisfied with the reviewed data, fetch the financial analytics. See Analytics endpoints below.

Understanding OCR Results

Headers

Headers represent the column structure recognized from the statement, for example: Date, Description, Debit, Credit, Balance. Each header has:
  • name: the column label as read from the document
  • type: the detected data type (date, number, string)
  • index: the column’s position in the table (0-based)
A single verification can have multiple headers if multiple statements were uploaded, each identified by file_index.

Item Lines

Item lines are the individual transaction rows. Each line contains key-value pairs matching the header columns. Read item lines via GET /bank-statements/{id}/headers/{header_id}/item-lines.

Confidence Levels

AnyCheck assigns a confidence level to each extracted page: Fetch the confidence breakdown:

Analytics Endpoints

Once extraction is complete, the following analytics are available. All endpoints use the verification_id as the {id} path parameter.
A high-level overview of the statement: total credits, debits, average balance, and key financial indicators.
Breakdown of transactions by currency (useful for multi-currency accounts).
Opening and closing balances, total inflows, total outflows, and net change.
The account balance at each transaction point, useful for visualizing balance trends over time.
The closing balance for each day covered by the statement, useful for day-by-day cash flow charts.
Full paginated list of all transactions with filtering and sorting. Get available columns first:
Transactions grouped by merchant with total spend per merchant. Useful for expense categorization.
An estimated income/expense summary derived from transaction patterns. Useful when a formal financial statement is unavailable.
Transactions matched by your configured recast formula rules. Recast formulas allow custom classification of transactions according to your business logic (e.g., separating operating income from non-operating income).Configure rules via GET /services/{service_id}/configurations/recast-formula-rules.

Combining Multiple BSA Results

If you have statements from multiple bank accounts or time periods that you want to analyze together, combine them into a single unified view:
The response contains a verification_id you can use with all analytics endpoints.

BSA vs. Financial Statement

Use BSA when you need to verify income/cash flow from transaction history. Use Financial Statement when you need to assess a business’s financial position from formal reports.