The bank statement OCR API for transaction extraction.
Convert PDF bank statements, scans, and photos into structured JSON. Extract account metadata, balances, statement periods, and transaction rows with one schema-driven request.
Get started today for free. No credit card required.
See a bank statement become transaction rows.
OCRWell reads statement pages and returns the account metadata, balances, and repeating transaction rows your financial workflow expects.

{
"data": {
"bank_name": "NORTHBROOK BANK",
"account_holder": "MS. E. WHITMORE",
"sort_code": "40-12-04",
"account_number": "****3821",
"statement_period": "01 Mar 2026 to 31 Mar 2026",
"closing_balance": "4,091.18",
"transactions": [
{
"date": "03 Mar",
"description": "DD BRITISH GAS",
"paid_out": "148.20",
"paid_in": "",
"balance": "1,056.46"
},
{
"date": "25 Mar",
"description": "SALARY NORTHBROOK LTD",
"paid_out": "",
"paid_in": "3,842.17",
"balance": "4,591.18"
}
]
}
}Turn statement tables into typed JSON.
Send a schema for the statement fields you need. OCRWell returns balances and transaction rows as structured data, ready for reconciliation, onboarding, or lending workflows.
# Extract statement metadata and transactions
$ curl https://api.ocrwell.com/v1/documents \
-H "X-API-Key: $OCRWELL_KEY" \
-d '{
"upload_id":"upl_01H7",
"mode":"structured",
"schema":{
"bank_name":"string",
"account_holder":"string",
"account_number_last4":"string",
"statement_start":"string",
"statement_end":"string",
"currency":"string",
"opening_balance":"string",
"closing_balance":"string",
"transactions":[
{
"date":"string",
"description":"string",
"debit":"string",
"credit":"string",
"balance":"string"
}
]
}
}'{
"job": {
"id": "019539a6-6c3d-7e5f",
"status": "completed",
"mode": "structured",
"page_count": 4
},
"result": {
"data": {
"bank_name": "Harbour Mutual Bank",
"account_holder": "Northbridge Pty Ltd",
"account_number_last4": "4182",
"statement_start": "01/04/2026",
"statement_end": "30/04/2026",
"currency": "AUD",
"opening_balance": "58,214.00",
"closing_balance": "61,589.00",
"transactions": [
{
"date": "03/04/2026",
"description": "Client transfer ACME",
"debit": "",
"credit": "3,250.00",
"balance": "61,464.00"
},
{
"date": "04/04/2026",
"description": "Office lease",
"debit": "2,480.00",
"credit": "",
"balance": "58,984.00"
}
]
}
}
}Where teams use bank statement OCR.
Loan and onboarding flows
Extract account holder, statement period, balances, and transaction rows so your product can pre-fill affordability, income, or proof-of-funds checks.
Reconciliation imports
Turn bank PDFs into transaction arrays ready for matching against ledger entries, invoices, payroll, or card processor settlements.
Mixed statement sources
Handle downloaded PDFs, scanned paper statements, and phone photos through one upload flow, with typed output shaped by your schema.
Bank statement OCR questions.
Can OCRWell extract transaction rows?
Yes. Describe transactions as an array in the schema and include the fields your app needs, such as date, description, debit, credit, and balance.
Can it handle multi-page statements?
Yes. The job response includes page count metadata, and structured mode can return one transaction array for the statement document.
Does OCRWell store bank statements after processing?
Uploaded files are deleted after processing and job results expire five minutes after first retrieval. Use the security page for the full retention model.
Start free. Pay only when you scale.
- No credit card required.
- Hard cap, no overage charges.
- Paid plans from $20/mo when you grow.
Explore nearby OCR workflows.
Extract statement data today.
Generate an API key, upload your first bank statement, and get typed JSON back in seconds. Free forever tier covers 200 OCR pages per month.