BANK STATEMENT → JSON

Bank statement PDF to structured JSON.

A typed schema you can trust. Every transaction is a well-formed object with ISO dates, numeric amounts, and normalised fields — ready to pipe into pandas, PowerBI, your API, or any database.

Convert your first PDF See pricing
Typed schema
ISO dates, numeric amounts
Ready for pandas / SQL / APIs
HOW IT WORKS

PDF in, JSON out — three steps.

Upload the PDF
From your app, dashboard, or a manual test — same endpoint.
AI extracts everything
Statement meta + every transaction, normalised.
Download or POST
Get a JSON file, or (Firm plan) use our REST API to skip the browser entirely.
WHAT YOU GET

A clean JSON file, ready to use.

Every column laid out consistently. No cleanup, no manual re-formatting.

statement_bankxl.json
date (ISO)descriptiondebit (number)credit (number)balance (number)ref_no
01/04/2025NEFT-CR-INFOSYS LTD-SAL APR202585,000.001,35,000.00
05/04/2025EMI-HDFC HOME LOAN-HOUSING LOAN32,500.001,02,500.00
07/04/2025NEFT-DR-MAHESH LANDLORD-RENT35,000.0067,500.00
12/04/2025UPI-ZOMATO-zomato@paytm-MUM1,425.0566,074.95
15/04/2025ATM WDL-HDFC0001-ANDHERI5,000.0061,074.95
WHY BANKXL FOR JSON

Built for real accounting workflows.

Predictable schema
Every response has the same shape: { meta: {...}, transactions: [...] }. Meta includes bank_name, account_no, IFSC, period_from/to, opening/closing balance. Each transaction has date (YYYY-MM-DD), description, debit, credit, balance, ref_no.
Numbers are numbers
Amounts are JSON numbers, not strings. Dates are ISO 8601. Nulls where data is genuinely missing. No parsing gymnastics on your side — just JSON.parse() and go.
Works with pandas
One line: pd.json_normalize(response["transactions"]) and you've got a DataFrame ready for analysis.
REST API available
Firm plan customers get a REST endpoint. POST a PDF, GET JSON back. Perfect for pipelines.
Idempotent output
Same PDF in, same JSON out. Great for testing and pipelines.
Bulk-friendly
Small file sizes. Batch-process dozens of statements without paginating downloads.
WHO'S THIS FOR

Purpose-built for people who spend real time on bank data.

Fintech developers
Skip building your own OCR + parsing pipeline. Get clean, typed transaction data as an API response.
Data analysts
Straight into pandas / PowerBI / Tableau. Categorise, aggregate, chart.
CA-firm devs
Automate month-end for your firm — pipe JSON into your practice-management software.
Lenders & underwriters
Feed transaction data into cash-flow scoring, DSCR calculators, or ML models.
FAQ

Frequently asked.

What does the JSON structure look like?

{ "meta": { "bank_name": "HDFC Bank", "account_no": "50100...", "ifsc": "HDFC0001234", "period_from": "2025-04-01", "period_to": "2025-04-30", "opening_balance": 50000, "closing_balance": 61074.95, "currency": "INR" }, "transactions": [ { "date": "2025-04-01", "description": "NEFT-CR-INFOSYS LTD-SAL APR2025", "debit": null, "credit": 85000, "balance": 135000, "ref_no": "N91185..." }, ... ] }

Do you have a REST API for this?

Yes. Firm-plan customers get a REST endpoint that accepts a PDF via multipart/form-data and returns JSON. Documented at /api-docs.

What about date and number formats?

Dates are ISO 8601 strings (YYYY-MM-DD). Amounts are JSON numbers, not strings. Missing data is null (never empty string, never zero as a placeholder). You can JSON.parse() and use it without preprocessing.

Can I use this with pandas / Excel / PowerBI?

Yes. Pandas: pd.json_normalize(data["transactions"]). Excel/PowerBI: import the JSON via Power Query. Any tool that reads JSON works.

Is JSON export free?

It requires the Pro plan (₹499/month, 800 pages). Free users get Excel. For high-volume API access, see the Firm plan.

Try it with your own PDF.

50 free pages every month, no credit card. Upgrade only when you actually need more.

OTHER FORMATS
Bank statement to ExcelBank statement to CSVBank statement to Tally XMLBrowse by bank →