Convert any bank statement PDF to clean, structured JSON. Perfect for developers, fintech apps, and automated financial workflows. 100% free, no signup.
Drag & drop your bank statement PDF or use our REST API
Our AI extracts transactions into structured data objects
Get a clean .json file ready for your app or database
Our JSON output is clean, consistent, and designed for easy parsing. Every conversion returns the same predictable schema:
{
"account": {
"bank_name": "Chase Bank",
"account_number": "****4521",
"currency": "USD",
"statement_from": "2024-01-01",
"statement_to": "2024-01-31"
},
"summary": {
"opening_balance": 4300.00,
"closing_balance": 6848.82,
"total_debits": 301.18,
"total_credits": 2850.00,
"transaction_count": 6,
"balance_verified": true
},
"transactions": [
{
"date": "2024-01-03",
"description": "AMAZON.COM MARKETPLACE",
"debit": 49.99,
"credit": null,
"balance": 4250.01
},
{
"date": "2024-01-05",
"description": "DIRECT DEPOSIT - EMPLOYER",
"debit": null,
"credit": 2850.00,
"balance": 7100.01
}
]
}
| Field | Type | Description |
|---|---|---|
account.bank_name | string | Detected bank name from the statement header |
account.account_number | string | Masked account number (last 4 digits) |
account.currency | string | ISO 4217 currency code (USD, GBP, INR, etc.) |
account.statement_from | date | Statement start date (ISO 8601 format) |
account.statement_to | date | Statement end date (ISO 8601 format) |
summary.opening_balance | number | Opening balance at start of statement period |
summary.closing_balance | number | Closing balance at end of statement period |
summary.balance_verified | boolean | True if extracted balances match mathematically |
transactions[].date | date | Transaction date in YYYY-MM-DD format |
transactions[].description | string | Full transaction narrative/narration text |
transactions[].debit | number|null | Amount debited (money out), null if credit |
transactions[].credit | number|null | Amount credited (money in), null if debit |
transactions[].balance | number | Running balance after this transaction |
Use our REST API to convert bank statements programmatically. Ideal for fintech platforms, lending apps, accounting integrations, and automated workflows.
curl -X POST https://bankstatementconverter.com/api/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@statement.pdf" \
-F "format=json"
import requests
with open("statement.pdf", "rb") as f:
response = requests.post(
"https://bankstatementconverter.com/api/upload",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"file": f},
data={"format": "json"}
)
data = response.json()
transactions = data["transactions"]
print(f"Extracted {len(transactions)} transactions")
Auto-extract 12 months of statements for cash flow analysis, income verification, and credit decisions.
Let users upload PDFs when bank API connections aren't available. Parse and categorise transactions automatically.
Feed transaction JSON directly into your accounting database. Skip manual data entry entirely.
Pass transaction descriptions to an LLM for automatic categorisation, anomaly detection, or spending insights.
Aggregate structured transaction data across multiple accounts and time periods for reporting dashboards.
Build tools that automatically flag deductible transactions, compute tax exposure, or prepare audit trails.