Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.fintelite.ai/llms.txt

Use this file to discover all available pages before exploring further.

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.
curl -X POST https://api.anycheck.ai/uploads \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "file_category=VERIFICATION_INPUT_FILE" \
  -F "files=@january.pdf" \
  -F "files=@february.pdf" \
  -F "file_passwords=pw1" \
  -F "file_passwords="
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.
curl -X POST https://api.anycheck.ai/verifications \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": "<bsa-service-uuid>",
    "folder_id": "<folder-uuid>",
    "configuration": {
      "files": {
        "bsa_file": ["/uploads/january.pdf", "/uploads/february.pdf"]
      }
    },
    "webhook_url": "https://your-app.com/webhooks/anycheck"
  }'
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 /bank-statements/{verification_id}/headers
GET /bank-statements/{verification_id}/headers/{header_id}
Get item lines (individual transaction rows for a header):
GET /bank-statements/{verification_id}/headers/{header_id}/item-lines
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:
LevelMeaning
HIGHOCR accuracy is high; data is reliable
MEDIUMSome uncertainty; review recommended
LOWLow confidence; manual review required
Fetch the confidence breakdown:
GET /bank-statements/{id}/confidence-summary
GET /bank-statements/{id}/confidence-summary/{level}/pages

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.
GET /bank-statements/{id}/summary
Breakdown of transactions by currency (useful for multi-currency accounts).
GET /bank-statements/{id}/currency-overview
Opening and closing balances, total inflows, total outflows, and net change.
GET /bank-statements/{id}/balance-summary
The account balance at each transaction point, useful for visualizing balance trends over time.
GET /bank-statements/{id}/running-balances
The closing balance for each day covered by the statement, useful for day-by-day cash flow charts.
GET /bank-statements/{id}/daily-ending-balances
Full paginated list of all transactions with filtering and sorting. Get available columns first:
GET /bank-statements/{id}/transactions/columns
POST /bank-statements/{id}/transactions
# Body: { "page_offset": 0, "page_size": 50, "filters": { ... } }
Transactions grouped by merchant with total spend per merchant. Useful for expense categorization.
GET /bank-statements/{id}/merchant-analysis
GET /bank-statements/{id}/merchant-transactions?merchant_name=...
An estimated income/expense summary derived from transaction patterns. Useful when a formal financial statement is unavailable.
GET /bank-statements/{id}/proforma-financial-statement
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.
GET /bank-statements/{id}/recast-formula-transactions

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:
curl -X POST https://api.anycheck.ai/bank-statements/combine \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "bank_statements": [
      { "id": "<verification-uuid-1>", "file_index": 0 },
      { "id": "<verification-uuid-2>", "file_index": 0 },
      { "id": "<verification-uuid-2>", "file_index": 1 }
    ]
  }'
The response contains a verification_id you can use with all analytics endpoints.

BSA vs. Financial Statement

Bank Statement Analysis (BSA)Financial Statement
InputRaw bank statement PDFs/imagesFinancial reports (balance sheet, P&L)
OutputStructured transactions + analyticsExtracted financial figures
Best forCash flow analysis, income verificationCompany financial health assessment
EditingFull item-line editing supportedNot applicable
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.