Free bank statement OCR
Upload a bank statement and extract its account details, balances and transactions as structured data, free. It reads digital PDFs, scanned statements and phone photos from any bank, in any country. You don't need an account.
- Free
- No sign-up, no card
- Download as Excel, CSV or JSON
A bank statement holds personal financial data. Upload your own, or one you may share. We keep the first page and the result for 7 days to run and improve this tool, then delete them. The rest of your file is not stored. Privacy policy
Northfield Bank
Account statement
- Client Name
- Alex Sample
- Account Number
- 0012 3456 7890
- Statement Start Date
- 2026-09-01
- Statement End Date
- 2026-09-30
- Starting Balance
- 4,210.55
- Ending Balance
- 3,872.10
| Date | Description | Amount | Balance |
|---|---|---|---|
| 2026-09-02 | Card payment, Market Hall | -48.20 | 4,162.35 |
| 2026-09-03 | Salary, Brightwater Ltd | 2,400.00 | 6,562.35 |
| 2026-09-05 | Rent transfer | -1,150.00 | 5,412.35 |
{
"client_name": "Alex Sample", "account_number": "0012 3456 7890", "statement_start_date": "2026-09-01", "statement_end_date": "2026-09-30"}Any layout, no template
It works out the fields from the page itself, so there's nothing to set up.
Scans and phone photos
Digital PDFs, scanned pages and photos all go through the same way.
Structured, not just text
Named fields and table rows you can download as Excel, CSV or JSON, not a wall of OCR text.
An API when you need it
The same data from your own code, as the sample call further down shows.
What the free bank statement extractor reads
A statement is two things on one page: a header with the bank, the holder and the balances, and a table of transactions. The free try returns both, the header as named fields and the transactions as rows, so you get a table rather than a wall of OCR text. Because it works out the fields from the page, it doesn't need a template for your bank.
- Bank and branch: bank name, branch, address.
- Account: holder name, account number, IBAN, account type, currency.
- Period: statement date, start date and end date.
- Balances: opening balance, closing balance, total deposits and withdrawals.
- Transactions: date, description, reference, debit, credit and running balance.
Bank statement to text, Excel or CSV
Once the statement is read, use Download to save it as Excel (.xlsx), CSV or JSON, or copy the fields as text. For a spreadsheet with amounts you can sum, see bank statement to Excel. For a file to import into QuickBooks, Xero or another accounting package, see bank statement to CSV.
Bank statement names and formats by region
The same document goes by different names, and the identifiers on it change with the country. These are the ones people search for and the details to look for on each.
| Region | Also called | Account details printed |
|---|---|---|
| Pakistan | Bank statement, account statement, e-statement | 24-character PK IBAN, branch code |
| India | Bank statement, passbook, account statement | Account number, IFSC code, MICR code |
| Bangladesh, Sri Lanka, Nepal | Bank statement, account statement | Account number, branch, SWIFT code |
| UAE, Saudi Arabia, Gulf | Account statement, salary statement | AE or SA IBAN, in English and Arabic |
| United Kingdom | Bank statement, current account statement | Sort code, account number, IBAN |
| United States | Checking or savings statement | Routing number, account number |
| Canada | Chequing account statement | Transit number, institution number |
| Europe | Kontoauszug, relevé bancaire, extracto bancario, estratto conto | IBAN, BIC |
| Latin America | Estado de cuenta, extrato bancário | CLABE in Mexico, agência and conta in Brazil |
| Australia, New Zealand | Bank statement, transaction listing | BSB in Australia, account number |
Types of bank statement you can upload
- Current, checking and savings account statements.
- Business account statements, including salary and payroll accounts.
- Credit card statements, and mini statements from an ATM or app.
- Scanned statements and passbook pages, including photos taken on a phone.
- Statements with money in and out in separate columns, or one signed amount column.
Long statements and multi-page files
Most statements run to several pages, and the transactions go on past the first. Lenders and bookkeepers need all of them, which is why an account reads every page and joins the rows into one table. A run is also flagged if the table comes back shorter than the statement, so missing rows don't pass unnoticed. See the full field list for all 41 bank statement fields.
Sample API call
This is how the same bank statement looks from your own code. wf_demo_bank_statement is a dummy workflow id and every value below is invented, so the call won't run as written. A real run reads every page and adds a confidence score and page position to each field.
curl -X POST "$DOCREFINERY_API/v1/workflows/wf_demo_bank_statement/run" \
-H "Authorization: Bearer $DOCREFINERY_API_KEY" \
-F "[email protected]"
# Take trace_id from the answer, then poll until status is "fulfilled"
curl "$DOCREFINERY_API/v1/runway/9f1c0a7e" \
-H "Authorization: Bearer $DOCREFINERY_API_KEY"{
"trace_id": "9f1c0a7e",
"status": "fulfilled",
"document_type": "bank_statement",
"result": {
"fields": [
{
"key": "client_name",
"alias": "Client Name",
"text": "Alex Sample",
"field_confidence": 0.99,
"location": { "page": 1, "bbox": [0.08, 0.12, 0.46, 0.14] }
},
{
"key": "account_number",
"alias": "Account Number",
"text": "0012 3456 7890",
"field_confidence": 0.98,
"location": { "page": 1, "bbox": [0.08, 0.17, 0.46, 0.19] }
},
{
"key": "statement_start_date",
"alias": "Statement Start Date",
"text": "2026-09-01",
"field_confidence": 0.97,
"location": { "page": 1, "bbox": [0.08, 0.22, 0.46, 0.24] }
},
{
"key": "transactions",
"alias": "Transactions",
"table": [
[
{ "key": "date", "alias": "Date", "text": "2026-09-02" },
{ "key": "description", "alias": "Description", "text": "Card payment, Market Hall" },
{ "key": "amount", "alias": "Amount", "text": "-48.20" },
{ "key": "balance", "alias": "Balance", "text": "4,162.35" }
]
]
}
],
"extraction_approval": "auto",
"low_confidence_fields": []
}
}Make it run on your own bank statement
- Create a free account.
- Upload one sample under Workflows, keep the fields you want and save. That gives you a real workflow id.
- Create an API key under Settings. Keys are switched on per account, so ask us if you don't see the option.
- Set
DOCREFINERY_APIandDOCREFINERY_API_KEYas in the quickstart, and swap in your id.
Free try or free account?
| Feature | Free try | Free account |
|---|---|---|
| Pages read | Page 1 | Every page |
| Allowance | 5 tries a day | 100 pages a month |
| File size | Up to 10 MB | Up to 100 MB |
| How it reads | Finds the fields on the page | Built-in bank statement fields, or your own workflow |
| Checking | Compare with your page | Confidence scores and page citations |
| Output | Fields on screen, download as Excel, CSV or JSON | Excel, CSV and JSON for every page, and API keys on request |
Common questions
Is this bank statement OCR really free?
Yes. You get 5 free tries a day with no account and no card, and each try reads the first page of one statement. A free account then reads whole statements, up to 100 pages a month.
Can I convert a bank statement PDF to Excel?
Yes. After a free try, use Download to save the result as Excel (.xlsx), CSV or JSON. The free try reads the first page, so a free account is the way to convert every page of a long statement. See bank statement to Excel.
Does it work with scanned bank statements?
Yes. Upload a scan or a phone photo as well as a digital PDF. Keep the page flat, well lit and in focus, because a blurred figure is hard for anyone to read. Password-protected PDFs can't be read, so remove the password first.
Which banks does it support?
It isn't tied to a list of banks. It reads what is printed on the page, so a statement from HBL in Pakistan, HDFC in India or Barclays in the UK goes through the same way. Always check the figures against your statement.
Is it safe to upload a bank statement?
A statement holds personal financial data, so upload only your own or one you're allowed to share. We keep the first page and the result for 7 days to run and improve the tool, then delete them, and the rest of the file isn't stored.
Related
- Bank statementTurn bank statement PDFs into balances and transaction rows. A table that comes back short is flagged, and extracted cells are tied to their page and position.
- Lending and mortgageMortgage document extraction for pay stubs, bank statements, W-2s and closing packets: one PDF split into its documents, every field scored and cited.
- Invoice OCRFree invoice OCR and data extraction. Pull supplier, tax, totals and line items from a PDF or scan as structured JSON, with no account or card needed.
- ID card OCRFree ID card OCR for CNIC, Aadhaar, Emirates ID and national ID cards. Extract name, ID number and dates as structured data, with no account needed.
Try it on your own bank statement.
Free, with no sign-up and no card.