Financial Services

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 converts bank statement data into structured JSON for income verification, cash flow analysis, and lending workflows.

income verification | lending decisions | KYC

Validated JSON

Schema-enforced output; every field matches your contract

Source coordinates

Every value links back to page + bounding box for audit

Per-document pricing

Predictable cost. No token-volatility surprises

Trusted by teams turning documents into production data

Why bank statements are harder than they look

Thousands of institutions, each with unique layouts. Multi-page transaction tables with running balances. Multi-account statements that mix checking, savings, and money market. Hybrid extraction handles all of it.

01

Institution Format Diversity

How do you handle thousands of bank formats? Every institution uses its own column headers, date formats, and transaction layouts. Regional credit unions differ from national banks. Each institution gets its own SenseML configuration that maps to your target schema.

02

Transaction Table Complexity

Ten pages. Fifty pages. Deposits, withdrawals, fees, running balances, all stitched across page breaks without duplicated or missing rows. The table continuation logic preserves the running balance sequence from first page to last.

03

Multi-Account Statements

One PDF, three accounts: checking, savings, money market. Account boundaries are identified automatically, and each account's transactions return as a distinct section in the JSON output.

Managed services

Don't want to build it? We'll write your configs from your samples.

Solutions engineers handle plan, build, deploy, and adjust on your behalf. You see clean JSON in your API response. Same engine as self-serve, just with the configuration work outsourced.

What's included

01Plan.Engineers review your samples and pick the right method

02Build.SenseML configs written from your samples

03Deploy.Same engine as self-serve, ready for production

04Adjust.We update configs when formats shift or new edge cases appear

05Integrate.Help with custom integration into your downstream systems

Fields we extract

We configure every bank statement extraction to your exact schema, not a fixed field list. The fields below are the ones lending teams pull most often — tell us what your lending or cash-flow workflow needs and we map the rest.

01

Account information

Account holder name, account number (last 4), account type, bank name, statement period, opening balance, closing balance

02

Transactions

Transaction date, posted date, description, amount, debit/credit indicator, running balance, check number (if applicable)

03

Summary

Total deposits, total withdrawals, total fees, interest earned, average daily balance, number of transactions

config.json

SenseML

{ /* SenseML: bank statement extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{ "id": "account_number", "description": "account number, account #, account ending in" },
{ "id": "ending_balance", "description": "ending balance, closing balance, balance as of" },
{ "id": "total_deposits", "description": "total deposits, total credits, deposits and additions" },
{ "id": "statement_end_date", "description": "statement period ending, through date, statement date" }
// + more fields, mapped to your schema
]
}
}
]
}

Supported bank statements

Pre-built templates cover major banks (Chase, BofA, Wells Fargo, Citi, Capital One) and many regional institutions. New bank formats can be configured in hours using SenseML's deterministic extraction rules.

Major banks

Chase, Bank of America, Wells Fargo, Citi, US Bank, Capital One, PNC, TD Bank, and all national banks

Other institutions

Regional banks, credit unions, online banks (Ally, Marcus, SoFi), international banks, brokerage account statements

Common Questions

Answers about bank format support, transaction parsing, and multi-account handling.

Does Sensible extract opening and closing balances?

By default, Sensible pulls opening balance, closing balance, total deposits, total withdrawals, and statement period for each account. Those fields are defined in configuration, so you can keep that set, add fees or interest, or drop what you don't need. The output matches the schema you define, not a fixed list.

Can Sensible handle multi-account bank statements?

Yes. Statements covering checking, savings, and money market accounts are parsed into separate account sections with their own transaction lists and balances.

How does Sensible extract transactions from bank statements?

Each transaction comes out with date, description, amount, and running balance by default, and multi-page transaction tables are stitched into a single array. What gets captured is defined in configuration, so you can pull additional columns like check number or transaction type when a statement carries them.

Which banks' statements does Sensible support?

Any of them. Sensible processes statements from any bank or credit union, and the library ships pre-built bank statement configurations to start from. The extraction logic is yours to control, so when a layout hasn't been built yet, the config gets extended to fit it rather than hitting a wall.

Do you support webhooks?

Yes. Sensible sends extraction results to your webhook endpoint when processing completes. You can also poll the API for status.

Does Sensible support human review?

Yes. Sensible flags extractions with low confidence for human review. You can configure review thresholds and workflows.

What security certifications does Sensible have?

Sensible is SOC 2 Type II certified and HIPAA compliant. Data is encrypted in transit and at rest.

How long is document data retained?

Document data is stored indefinitely by default. Custom retention policies are available and can be configured for same-day deletion if needed.

Is there a free trial?

Yes. Sensible offers a 14-day free trial on the Growth plan. No credit card required to start.

How is pricing structured?

Sensible uses per-document pricing for predictable costs. No token-based billing or usage surprises. Volume discounts are available for higher throughput.

How do I integrate with Sensible?

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.

What file formats does Sensible support?

Sensible processes PDFs (native or scanned), Microsoft Word (DOC, DOCX), spreadsheets (XLSX, XLS, CSV), single-page images (JPEG, PNG), multi-page images (TIFF), and email bodies with attachments.

How accurate is the extraction?

Accuracy depends on document quality and configuration. Most production deployments achieve 95%+ accuracy with proper validation rules and confidence signals.

How fast is document processing?

Processing speed depends on document size, page count, OCR requirements, and which extraction methods are used. Simple single-page documents process in seconds. Larger or more complex documents that use LLM-based extraction take longer.

Start free

Turn your next bank statement into JSON.

Free 14-day trial. No credit card required. Start extracting in minutes.