Bank statement parsing, as an API.
One REST endpoint. PDF in, structured JSON out — plus one-click Tally XML, QuickBooks .qbo, Zoho Books CSV, or Xero CSV formats.
per statement, ≤ 30 pages
across 45 countries incl. US, UK, EU, Canada
Batch API Beta
Enqueue up to 1,000 PDFs per request. Poll or receive a webhook when the batch completes.
curl -X POST https://convertbankstatements.co/api/public/batch \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"files": [
{ "url": "https://your-cdn.com/stmt-1.pdf", "bank_code": "chase", "format": "qbo" },
{ "url": "https://your-cdn.com/stmt-2.pdf", "bank_code": "hdfc", "format": "tally" }
],
"webhook_url": "https://your-app.com/hooks/b2b",
"callback_secret": "shhh"
}'
// → 202 Accepted
{ "job_id": "job_abc123", "status": "queued", "accepted": 2,
"poll_url": "/api/public/batch?id=job_abc123",
"eta_seconds": 12 }
// Webhook (POST) fires when complete:
{ "job_id": "job_abc123", "status": "completed",
"completed": 2, "total": 2,
"results": [
{ "file_url": "...", "status": "ok", "bank": "chase",
"transaction_count": 84,
"download_urls": { "qbo": "https://.../out.qbo" } }
] }Native accounting-tool exports
One conversion, twelve output formats. No post-processing.
Quick example
curl -X POST https://convertbankstatements.co/api/public/convert \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@statement.pdf" \
-F "bank_code=hdfc" \
-F "format=tally"
// → 200 OK
{
"statement": {
"bank_name": "HDFC Bank",
"currency": "INR",
"period_from": "2026-06-01",
"period_to": "2026-06-30",
"opening_balance": 152430.55,
"closing_balance": 187214.10,
"transaction_count": 84
},
"transactions": [
{ "date": "2026-06-01", "description": "SALARY-ACME-INC",
"credit": 250000, "category": "Salary" }
/* ... */
],
"download_urls": {
"excel": "https://convertbankstatements.co/dl/xxx.xlsx",
"tally_xml": "https://convertbankstatements.co/dl/xxx.xml"
}
}How to convert bank statements with the API
From key to structured JSON in three calls.
- Step 1
Get an API key
Create an account and generate a key from the dashboard. Keys are scoped per environment and can be rotated without downtime.
- Step 2
POST the statement
Send the PDF as a URL or multipart upload to /api/public/convert, optionally with a bank code and target format. Batches of up to 1,000 files go to /api/public/batch.
- Step 3
Receive structured JSON
Poll the job or register a signed webhook. The response contains normalised transactions plus the requested export file — JSON, Excel, .qbo, OFX or Tally XML.
Frequently asked questions
What does the API return?
A normalised transaction array — date, description, debit, credit, running balance, detected category and counter-party — plus account metadata and a link to the generated export file.
How is the API priced?
Per statement converted, with volume tiers. Failed conversions are not billed.
Is there a batch endpoint?
Yes. POST up to 1,000 files per request to /api/public/batch and receive an HMAC-signed webhook when the batch completes.
How do you secure webhooks?
Every callback is signed with your callback secret, and destination URLs are validated against private, loopback and cloud-metadata ranges before dispatch.
What are the rate limits?
Per-key request limits apply and are returned in the response headers so you can back off cleanly. Higher limits are available on request.
Pricing
Get early access.
The API is in private beta. Sign up and mention "API access" — we'll onboard you within 24h.
Request access