Extract bank statements to structured JSON
Bank statements list every transaction in an account over a statement period. Formats differ by institution, account type, and delivery channel. Sensible extracts bank statement data into validated JSON for income verification, cash flow analysis, and lending workflows.

Why bank statements are harder than they look
Thousands of bank formats and multi-page tables with running balances make extraction hard.

Chase, Wells Fargo, and thousands of regional banks each produce unique layouts. Sensible adapts to any format with a consistent schema.

Transaction tables span multiple pages with deposits, withdrawals, and fees. Sensible extracts each line with full detail.

Statements covering checking, savings, and money market accounts appear in one document. Sensible extracts each account independently.
Fields we extract
Extract any data you need from bank statements into your desired output schema
Account holder name, account number (last 4), account type, bank name, statement period, opening balance, closing balance
Transaction date, posted date, description, amount, debit/credit indicator, running balance, check number (if applicable)
Total deposits, total withdrawals, total fees, interest earned, average daily balance, number of transactions
Capital One 360 checking and savings account statements.
U.S. Bank personal and business banking statements.
Wells Fargo banking statements across checking, savings, and money market accounts.
Bank of America consumer and business account statements.
Citibank consumer and commercial account statements.
JPMorgan Chase checking and savings account statements.
Supported bank statements
Sensible processes bank statements from any institution worldwide, many of which can be found in Sensible's template library. Any bank format can be custom configured within hours.
Chase, Bank of America, Wells Fargo, Citi, US Bank, Capital One, PNC, TD Bank, and all national banks
Regional banks, credit unions, online banks (Ally, Marcus, SoFi), international banks, brokerage account statements



Common Questions
How Sensible extracts data from bank statements.
Yes. Sensible captures opening balance, closing balance, total deposits, total withdrawals, and statement period for each account on the statement.
Yes. Statements covering checking, savings, and money market accounts are parsed into separate account sections with their own transaction lists and balances.
Sensible extracts each transaction with date, description, amount, and running balance. Multi-page transaction tables are combined into a single array.
Sensible processes statements from any bank or credit union. Pre-built templates cover Chase, Bank of America, Wells Fargo, Citi, and Capital One. Any bank format can be configured.
Yes. Sensible sends extraction results to your webhook endpoint when processing completes. You can also poll the API for status.
Yes. Sensible flags extractions with low confidence for human review. You can configure review thresholds and workflows.
Sensible is SOC 2 Type II certified and HIPAA compliant. Data is encrypted in transit and at rest.
Documents are deleted after 30 days by default. You can configure shorter retention periods or request immediate deletion via API.
Yes. Sensible offers a free tier with 50 documents per month. No credit card required to start.
Sensible uses per-document pricing for predictable costs. No token-based billing or usage surprises. Volume discounts are available for higher throughput.
Sensible provides REST APIs and SDKs for Python and Node.js. Most integrations take a few hours. Webhooks, Zapier, and direct API calls are all supported.
Sensible processes PDF, PNG, JPG, and TIFF files. PDFs can be native or scanned.
Accuracy depends on document quality and configuration. Most production deployments achieve 95%+ accuracy with proper validation rules and confidence scoring.
Most documents process in 2 to 10 seconds depending on complexity and page count.
