🔌 REST API 🏛️ 10,000+ Banks 📦 Clean JSON Output 🔍 OCR Included 🔒 TLS 1.3 Encrypted

Bank Transactions API — Extract & Parse Bank Statement Data

A REST API that accepts any bank statement PDF and returns structured transaction data as JSON. Works with 10,000+ banks. No bank OAuth or account connection required.

🔌

Try the API — or use the free web tool

Read the full API documentation or try the browser-based converter for free

View API Documentation →

Free tier available · API key required for production · TLS encrypted

What Is the Bank Transactions API?

The Bank Statement Engine Bank Transactions API is a REST API that accepts a bank statement PDF file and returns all transactions as structured JSON data. It is designed for developers, fintechs, accounting software companies, and lenders who need to programmatically extract transaction data from bank statement PDFs at scale.

Unlike Open Banking APIs (Plaid, TrueLayer, Yapily), our API does not require a direct connection to the user's bank. There is no OAuth flow, no bank partner integration, and no geographic limitation to banks in a specific Open Banking scheme. If the bank issues a PDF statement — and every bank on earth does — our API can parse it.

API Endpoints

POST /api/upload — Submit a Bank Statement PDF

Upload a PDF file for processing. The API returns a run_id that you use to poll for results.

curl -X POST https://bankstatementengine.com/api/upload \ -H "Authorization: Bearer YOUR_API_KEY" \ -F "[email protected]" \ -F "password=1234" \ -F "output_format=json"

Response:

{ "run_id": "run_abc123xyz", "status": "processing", "estimated_seconds": 5 }

GET /api/result/{run_id} — Retrieve Extracted Transactions

Poll this endpoint (or use a webhook) to get the extracted transaction data once processing is complete.

curl https://bankstatementengine.com/api/result/run_abc123xyz \ -H "Authorization: Bearer YOUR_API_KEY"

Response:

{ "run_id": "run_abc123xyz", "status": "complete", "bank_name": "HDFC Bank", "account_number": "****1234", "currency": "INR", "opening_balance": 45200.00, "closing_balance": 52450.00, "statement_period": {"from": "2026-05-01", "to": "2026-05-31"}, "transactions": [ { "date": "2026-05-03", "description": "SALARY CREDIT / ACME CORP LTD", "reference": "NEFT2026050300123", "debit": null, "credit": 85000.00, "balance": 130200.00 }, { "date": "2026-05-07", "description": "UPI / AMAZON.IN PURCHASE", "reference": "UPI466893467", "debit": 3299.00, "credit": null, "balance": 126901.00 } ] }

Use Cases

Fintech Applications

Fintech apps that offer personal finance management, spending analysis, or budgeting need transaction data from users' bank statements. Our API lets you accept a PDF upload from the user and instantly populate your app with their transaction history — no bank partnership required, no geographic restriction, works globally from day one.

Lending & Credit Underwriting

Lenders traditionally require 3–6 months of bank statements to assess creditworthiness. Manually reviewing PDFs is slow and error-prone. Our API automatically extracts all transactions, enabling automated income verification, expense analysis, average balance calculation, and bounced payment detection — all from the PDF the applicant already has.

Accounting Automation

Accounting software and bookkeeping services that need to import client bank data can use our API to automatically convert uploaded PDFs into structured transaction records, ready to import into QuickBooks, Xero, or Tally without manual data entry.

Audit & Compliance

Compliance teams that need to verify financial records against bank statements can automate the comparison process — upload the PDF, extract transactions via API, compare programmatically to internal records, flag discrepancies.

Open Banking API vs Bank Statement PDF API

FactorOpen Banking API (Plaid, TrueLayer)Bank Statement PDF API (Us)
Bank coverageLimited to connected banksAny bank that issues PDFs (10,000+)
User authenticationOAuth login requiredPDF upload — no bank login
Geographic coverageUS, UK, EU onlyWorldwide (India, AU, UAE, etc.)
Historical dataUp to 24 months (varies)Any period in the PDF
Integration complexityHigh (OAuth flows, webhooks)Low (simple file upload)
Works without internet banking?NoYes — PDF is sufficient

Python Example

import requests API_KEY = "YOUR_API_KEY" BASE_URL = "https://bankstatementengine.com" # Step 1: Upload PDF with open("statement.pdf", "rb") as f: resp = requests.post( f"{BASE_URL}/api/upload", headers={"Authorization": f"Bearer {API_KEY}"}, files={"file": f}, data={"output_format": "json"} ) run_id = resp.json()["run_id"] # Step 2: Poll for result import time while True: result = requests.get( f"{BASE_URL}/api/result/{run_id}", headers={"Authorization": f"Bearer {API_KEY}"} ).json() if result["status"] == "complete": break time.sleep(2) # Step 3: Use the transactions for txn in result["transactions"]: print(txn["date"], txn["description"], txn["credit"] or -txn["debit"])

Frequently Asked Questions

What is a bank transactions API?
A REST API that accepts a bank statement PDF and returns all transactions as structured JSON — date, description, reference, debit, credit, balance. No bank connection required.
How is this different from Open Banking APIs?
Open Banking APIs require OAuth login to the user's bank and only work with connected banks. Our API works with any PDF from any bank — the user just uploads their statement file. It covers 10,000+ banks including those not in any Open Banking scheme.
What does the API response look like?
JSON with a transactions array. Each object has: date, description, reference, debit_amount, credit_amount, balance. Metadata includes bank_name, account_number (masked), statement_period, opening_balance, closing_balance.
How do I authenticate with the API?
Pass your API key in the Authorization header: Authorization: Bearer YOUR_API_KEY. Register at bankstatementengine.com to get a free tier key.
Which banks does the API support?
10,000+ banks worldwide — Chase, Bank of America, Wells Fargo, Barclays, HSBC, HDFC, ICICI, SBI, ANZ, Westpac, and thousands more.
Does the API work with scanned PDFs?
Yes. OCR processing is included. Digital PDFs process in under 5 seconds. Scanned PDFs take 15–30 seconds depending on scan quality.
What is the API rate limit?
Free tier: 50 requests/month. Paid plans from 500 requests/month. Enterprise plans with custom limits available.
What programming languages does the API support?
Any language that can make HTTP requests: Python, JavaScript/Node.js, PHP, Ruby, Java, Go, curl. We provide Python and curl examples.
Can the API handle password-protected PDFs?
Yes. Pass the password as a parameter: {"password": "1234"}. It is used only for decryption and never stored.
Is bank statement data secure via the API?
Yes. TLS 1.3 encryption, isolated processing containers, files deleted within 24 hours, never stored or shared.

Related API Docs & Tools

API Guide Bank Statement Analysis Tool Bank Statement API Bank Statement Extractor Bank Statement Parser Bank Statement to QuickBooks Bank Statement to Xero Bank Statement Analysis API

Ready to Integrate the Bank Transactions API?

Free tier available · 10,000+ banks · Clean JSON output · Works with any PDF

Read the API Docs →