Bank Statement API · REST · JSON

Bank statement API that proves its own numbers

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.

Balance-verified responses Scans & photos (OCR) Multi-currency Any layout
Live demo

Run it on a real statement, right now

No key, no signup. This calls the same extraction engine the API uses and shows you the actual JSON — including how long it took.

Sample is a EUR statement with comma decimals and payment references.

Files are processed in memory and never stored. Download the sample to inspect it yourself.

Why this API

The parser that checks its own work

Verified

Reconciled, not guessed

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.

Universal

Any layout, no training

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.

Categorized

Transactions pre-sorted

Every transaction comes back with a category — Income, Utilities, Fees, Subscriptions and more — classified from the description in any language.

Simple

One call, structured out

POST a file, get transactions with date, description, reference, category, signed amount, running balance and currency. No webhooks to wire up for standard files.

Example

A request and its response

Request
# 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.

Response
{
  "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": []
}
Good to know

Built for real integrations

Latency

Typically 10–15 seconds

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.

Signed amounts

No column guessing

Debits are negative, credits positive — separate debit/credit columns and regional formats are normalised for you into one signed amount.

Honest warnings

It tells you when unsure

Duplicate recap sections, balance-column corrections and unreconciled totals are surfaced in warnings — never hidden.

Limits & errors

What to expect

SituationStatusWhat it means
Success200Parsed. Check each section's verified flag and any warnings.
Bad input400Missing or unreadable file, invalid pdf_url (https only, no redirects).
File too large413Inline files are limited to ~4 MB — send larger files (up to 20 MB) via pdf_url.
Too many pages422The file exceeds your plan's pages-per-request cap. Split the PDF or upgrade.
No transactions422Nothing recognisable found — often a cover page or non-statement document.
Not subscribed403Requests 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.

Pricing

Priced per request, not per page

Billing, keys and quotas are handled by RapidAPI. Start free, upgrade when you ship.

PlanPriceRequests / monthPages per request
BASICFree105
PRO$291508
ULTRA$494008
MEGA$991,2008

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.

Start building

Subscribe on RapidAPI, grab your key, and make your first call in minutes. A free tier is available.

Get your API key