Bank statement API
Upload a PDF, get structured JSON back — transactions, categories, fraud signals, or an accounting-ready export file. One key, six endpoints, no infrastructure to run yourself.
- Files deleted after extraction
- Bearer key auth, no OAuth flow
- Built for fintech, accounting, and lending platforms
One request, structured data back
curl -X POST https://mybankstatementanalysis.com/api/extract-transactions \
-H "Authorization: Bearer mbsa_YOUR_KEY" \
-F "file=@statement.pdf"
// Response
{
"transactions": [
{ "date": "2026-01-15", "description": "WHOLE FOODS", "amount": -87.32, "category": "Groceries" },
{ "date": "2026-01-14", "description": "PAYROLL DEPOSIT", "amount": 3200.00, "category": "Income" }
],
"statementMonth": "2026-01",
"fileName": "statement.pdf",
"pageCount": 4
}Six endpoints, one key
Not just transaction parsing — fraud detection and redaction are the same API, same auth header, same file upload pattern.
Extract transactions
POST /api/extract-transactions
The single-call endpoint most integrations start with — upload a PDF, get transactions back as JSON in the response body.
Full analysis
POST /api/analyze
Runs the same pipeline the web app uses — categorization, recurring-charge detection, income/spend summary — and returns an analysis ID.
Export transactions
POST /api/export/{format}
csv, excel, qif, ofx, qbo, or iif — upload once, get the file for whichever accounting format your pipeline needs.
Fraud detection
POST /api/detect-fake
Authenticity score plus explicit red/green flags — for underwriting or tenant-screening flows that need to catch edited PDFs.
Redact statement
POST /api/redact-statement
Strips account numbers, names, and addresses, returns a redacted PDF — for sharing statements without exposing account identity.
AI financial advisor
POST /api/chat
Streamed chat against a specific analysis — ask questions about the data instead of writing queries against it yourself.
Full request/response reference and copy-paste examples for each endpoint on /developers.
Authentication
Every endpoint reads the same header — no OAuth flow, no key rotation requirement.
Authorization: Bearer mbsa_...Rate limits
Usage counts against your plan's page allowance per billing cycle.
- Business ($49/mo)
- 500 pages/cycle
- Overage
- $0.08/page
- Over limit
- 402 or 429 + limitReached: true
Why teams build on this instead of their own pipeline
Parsing bank statements yourself means three separate systems: a PDF text-extraction layer, an OCR pipeline for scanned documents, and a classification model that actually understands financial transaction descriptions. Each one is its own maintenance burden before you've written a line of product code.
This API replaces all three with a single HTTP call. Send a PDF to /api/extract-transactions, get back structured JSON with every transaction extracted and categorized. Digital and scanned PDFs both work — OCR runs automatically when the document needs it.
The endpoints beyond parsing are the part a generic OCR API can't give you: fraud/tampering detection for underwriting and tenant screening, and redaction for sharing statements without exposing account identity. Building either from scratch is a project on its own — here it's the same auth header and file upload as everything else.
When the API is the right choice
Fintech apps
Loan & tenant underwriting
Accounting platforms
One-off use
Secure
Private
Clear pricing
Bank statement analyzer pricing
Your first upload is free. Pay once for a single statement, or subscribe if you have many.
Pass
One statement · no subscription
- 1 upload, up to 100 pages
- Every transaction, categorized
- Subscriptions and savings found
- Report kept for a year

Pro
Most popular$144 billed yearly · save 37%
- Everything in Pass, plus
- 100 pages every month (~20 statements)
- Reports kept for as long as you want
- Priority support
Business
$372 billed yearly · save 37%
- Everything in Pro, plus
- 500 pages every month (~100 statements)
- Never blocked: $0.08 per extra page
- REST API with your own keys
Bank statement API — FAQ
What does a single API call actually return?
POST /api/extract-transactions with a PDF returns JSON in the response body: transactions (date, description, amount, category per row), statementMonth, fileName, and pageCount. No polling, no webhook — one request, one response.
How do I get an API key?
API access is included with the Business plan ($49/mo, 500 pages/cycle). Sign in, open /developers, and create a key instantly — no approval process, no sales call. The key works immediately at your plan's limits.
How is a request authenticated?
Bearer token in the Authorization header: Authorization: Bearer mbsa_.... The same header works across every endpoint — analysis, export, fraud detection, redaction.
Which banks and formats are supported?
Any bank worldwide that produces a PDF statement — digital or scanned. OCR runs automatically for scanned documents. Max file size is 10MB per upload; formats accepted are PDF, JPG, and PNG.
What happens when I hit a rate limit?
The response includes { limitReached: true } with a 402 or 429 status, depending on plan and endpoint. Usage counts against your plan's page allowance per billing cycle; Business overage is $0.08/page beyond the 500-page allowance.
Can I export straight to an accounting format instead of JSON?
Yes — POST /api/export/{format} with format as csv, excel, qif, ofx, qbo, or iif returns the file directly. Same auth, same file upload, different endpoint.
Is uploaded data stored?
No. Files are sent over HTTPS and deleted right after extraction — we don't keep them. Only the structured data in the API response is ever produced.
Something else on your mind? Write to contact@mybankstatementanalysis.com.

Get an API key. Ship the integration today.
Business plan, 500 pages/cycle. Create a key in your dashboard — no approval process, no sales call.










