What Does the Bank Statement API Do?
The Bank Statement Engine API is a REST API purpose-built for extracting structured financial data from bank statement PDFs. You upload a PDF, we parse it, and you get back clean transaction data — every row, every column, every penny — in the format your application needs.
The API handles everything that makes bank statement parsing hard: multi-column layouts, continuation lines, page headers and footers, balance carry-overs, OCR for scanned documents, password-protected PDFs, and the enormous variation in statement formats across 10,000+ banks worldwide. You send us a PDF; we send you structured data.
Key Features
- 10,000+ banks supported — US, UK, India, Australia, Canada, UAE, EU, and 50+ countries
- Multiple output formats — JSON (default), CSV, Excel (XLSX), MT940 (.sta), QBO, OFX
- OCR included — Scanned PDFs and photographed statements processed automatically
- Password-protected PDFs — Pass the password in the request; we handle the rest
- No bank connection — Works with any PDF, no OAuth, no bank partnership needed
- Free tier — 50 requests/month at no cost, no credit card required
- Fast processing — Digital PDFs in under 5 seconds; scanned PDFs in 15–45 seconds
- Bulk processing — Submit multiple PDFs; retrieve results asynchronously
API Authentication
All API requests require an API key passed in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Get your API key by registering at bankstatementengine.com/register. Free tier keys are issued instantly with no credit card required.
Core Endpoints
POST /api/upload — Submit a PDF
curl -X POST https://bankstatementengine.com/api/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@barclays_june_2026.pdf" \
-F "output_format=json" \
-F "password=optional_pdf_password"
Response:
{
"run_id": "run_7f3a9b2c",
"status": "processing",
"estimated_seconds": 4
}
GET /api/result/{run_id} — Retrieve Results
curl https://bankstatementengine.com/api/result/run_7f3a9b2c \
-H "Authorization: Bearer YOUR_API_KEY"
Response (truncated):
{
"status": "complete",
"bank_name": "Barclays",
"account_number": "****8819",
"currency": "GBP",
"statement_period": { "from": "2026-06-01", "to": "2026-06-30" },
"opening_balance": 3241.55,
"closing_balance": 4876.22,
"transaction_count": 47,
"transactions": [
{
"date": "2026-06-03",
"description": "FASTER PAYMENT FROM J SMITH",
"reference": "FP20260603001",
"debit": null,
"credit": 1500.00,
"balance": 4741.55
},
{
"date": "2026-06-05",
"description": "AMAZON MKTPLACE PMTS",
"reference": "VD4892933",
"debit": 34.99,
"credit": null,
"balance": 4706.56
}
]
}
Output Format Options
Use Cases
Accounting Automation Platforms
Accounting software companies integrate the Bank Statement API to accept client PDF uploads and automatically populate transaction data — eliminating the "CSV import" step that confuses non-technical users. The API handles all bank format variations so the accounting software does not need to maintain bank-specific parsers.
Lending & Credit Scoring
Lenders use the API to process bank statements from loan applicants. The structured JSON output enables automated income verification (identify recurring credits above a threshold), expense analysis (total debits by category), average balance calculation, and bounced payment detection — all from the PDF the applicant already has.
Bookkeeping Services
Bookkeeping firms that process hundreds of client bank statements monthly use the Bulk API to submit multiple PDFs in parallel and retrieve results asynchronously. Combined with our Bank Statement Analysis API, they can auto-categorise transactions and prepare draft accounts with minimal human review.
Expense Management
Expense management apps that need to reconcile employee spending against bank records integrate the API to import business bank statement data and automatically match against submitted expense claims.
Pricing Tiers
Frequently Asked Questions
What is the Bank Statement Engine API?
A REST API that accepts bank statement PDFs and returns structured transaction data as JSON, CSV, Excel, MT940, or QBO. Works with 10,000+ banks worldwide. No bank account connection or OAuth required.
What are the main API endpoints?
POST /api/upload (submit PDF, returns run_id) and GET /api/result/{run_id} (retrieve structured transaction data). Additional endpoints for webhooks and bulk processing are available on paid plans.
How do I get an API key?
Register at bankstatementengine.com — free tier keys issued instantly. Pass in the Authorization header: Authorization: Bearer YOUR_API_KEY.
What does the JSON response include?
bank_name, account_number (masked), currency, statement_period, opening_balance, closing_balance, transaction_count, and a transactions array with date, description, reference, debit, credit, and balance per transaction.
Does the API support scanned PDFs?
Yes. OCR is included. Digital PDFs process in under 5 seconds. Scanned PDFs take 15–45 seconds depending on scan quality.
Which banks does the API support?
10,000+ banks — Chase, Bank of America, Wells Fargo, Barclays, HSBC, Lloyds, HDFC, ICICI, SBI, ANZ, Westpac, Emirates NBD, and thousands more.
Can the API handle password-protected PDFs?
Yes. Pass the password in the request body. It is used only for decryption and never stored.
What output formats does the API support?
JSON (default), CSV, Excel (XLSX), MT940 (.sta), QBO, and OFX. Specify via the output_format parameter.
Is there a free tier?
Yes — 50 requests/month, no credit card required. Paid plans from 500 requests/month.
How is this different from Open Banking?
Open Banking (Plaid, TrueLayer) requires users to authenticate with their bank via OAuth and only works with banks in the Open Banking network. Our API works with any PDF from any bank — no bank login required, no geographic restriction.
Ready to Integrate the Bank Statement API?
Free tier · 10,000+ banks · JSON, CSV, Excel, MT940, QBO output · OCR included
View API Docs →