One POST turns a bank statement PDF, scan or photo into structured JSON — transactions, balances, references and categories. Every response is reconciled against the statement's own opening and closing balances, so you know when the data is trustworthy. Free tier, no sales call.
No key, no signup. This calls the same extraction engine the API uses and shows you the actual JSON — including how long it took.
Files are processed in memory and never stored. Download the sample to inspect it yourself.
Every response includes a verified flag — opening balance plus transactions must equal the closing balance, or the section is flagged. You know when to trust the data.
Digital PDFs, scans, and phone photos across bank formats worldwide — including European comma-decimals, multi-currency fintech statements, and payment references. No per-bank setup.
Every transaction comes back with a category — Income, Utilities, Fees, Subscriptions and more — classified from the description in any language.
POST a file, get transactions with date, description, reference, category, signed amount, running balance and currency. No webhooks to wire up for standard files.
# POST a statement (via RapidAPI) curl -X POST \ https://bank-statement-parser4.p.rapidapi.com/api/v1/parse \ -H "X-RapidAPI-Key: YOUR_KEY" \ -H "X-RapidAPI-Host: bank-statement-parser4.p.rapidapi.com" \ -H "content-type: application/json" \ -d '{"pdf_url": "https://.../statement.pdf"}'
Send pdf_base64 for inline files, pdf_url for larger ones, or image_base64 for photos and scans.
{ "pages": 2, "currency_sections": [{ "currency": "EUR", "opening_balance": 4720.43, "closing_balance": 4221.08, "verified": true, "transactions": [{ "date": "2026-06-01", "description": "PLATBA KARTOU — SUNO.COM", "reference": "3005229585114", "category": "Subscriptions", "amount": -11.07, "balance": 4709.36 }] }], "warnings": [] }
A standard 1–4 page statement returns in about 10–15s — normal for AI-based extraction. Call it from a background job and show your user a processing state.
Debits are negative, credits positive — separate debit/credit columns and regional formats are normalised for you into one signed amount.
Duplicate recap sections, balance-column corrections and unreconciled totals are surfaced in warnings — never hidden.
| Situation | Status | What it means |
|---|---|---|
| Success | 200 | Parsed. Check each section's verified flag and any warnings. |
| Bad input | 400 | Missing or unreadable file, invalid pdf_url (https only, no redirects). |
| File too large | 413 | Inline files are limited to ~4 MB — send larger files (up to 20 MB) via pdf_url. |
| Too many pages | 422 | The file exceeds your plan's pages-per-request cap. Split the PDF or upgrade. |
| No transactions | 422 | Nothing recognisable found — often a cover page or non-statement document. |
| Not subscribed | 403 | Requests must come through RapidAPI with your key. |
Reading the results: verified: true means the statement's own opening balance plus all transactions equals its closing balance — the numbers are proven. false means they don't reconcile: review before use. null means the statement printed no balances to check against.
Billing, keys and quotas are handled by RapidAPI. Start free, upgrade when you ship.
| Plan | Price | Requests / month | Pages per request |
|---|---|---|---|
| BASIC | Free | 10 | 5 |
| PRO | $29 | 150 | 8 |
| ULTRA | $49 | 400 | 8 |
| MEGA | $99 | 1,200 | 8 |
One request = one statement file, up to the page cap. Paid plans continue past quota at a per-request overage rate rather than cutting you off mid-month.
Subscribe on RapidAPI, grab your key, and make your first call in minutes. A free tier is available.