Pillar guide

Financial data extraction from PDFs and bank statements

Turn any PDF bank statement, invoice, or receipt into clean structured data — JSON, CSV, Excel, or a direct QuickBooks / Xero / Tally import — in seconds.

PDF → JSON

Structured output with statement metadata, opening/closing balances, and per-transaction fields ready for downstream apps and LLM pipelines.

PDF → CSV / Excel

Flat transaction tables normalised for date, amount, description, category and running balance. Import anywhere.

PDF → Accounting

Direct exports to QBO, OFX, IIF, Tally XML, Zoho, Xero — no re-mapping, no double entry.

How the extraction pipeline works

  1. 1. Ingest

    PDF, CSV, image or scanned document up to 50 MB per file. Password-protected PDFs supported via one-time client-side unlock.

  2. 2. Detect

    Bank fingerprinting on layout, header text, and font signatures — 200+ built-in templates plus a generic tabular fallback.

  3. 3. Parse

    Text-layer PDFs parsed with pdf.js; scanned pages routed to OCR (Tesseract + layout model). Multi-column and rotated pages handled.

  4. 4. Normalise

    Dates → ISO-8601, amounts → decimal, descriptions cleaned, split debits/credits reconciled against running balance.

  5. 5. Categorise

    Rule-based plus LLM-assisted categorisation (GST-aware for India, VAT-aware for UK/UAE/ZA, Schedule-C for US).

  6. 6. Export

    JSON, CSV, Excel, QBO, OFX, IIF, QIF, Tally XML, Zoho Books, Xero.

JSON output shape

Every extraction returns the same schema so you can code against it once:

{
  "bank_name": "HDFC Bank",
  "currency": "INR",
  "account_number_masked": "xxxx1234",
  "period_from": "2025-01-01",
  "period_to": "2025-01-31",
  "opening_balance": 124567.89,
  "closing_balance": 158234.12,
  "transactions": [
    {
      "date": "2025-01-03",
      "description": "UPI-ZOMATO-...",
      "debit": 450.00,
      "credit": null,
      "balance": 124117.89,
      "category": "Meals & Entertainment"
    }
  ]
}

Why teams pick BankToBooks over generic PDF parsers

  • Bank-specific templates beat generic OCR on multi-column and split-transaction layouts.
  • Running-balance reconciliation catches parser errors before they hit your ledger.
  • One JSON schema across 200+ banks — code against it once.
  • Free tier processes in-browser; nothing uploaded.
  • Ready-to-import files for QuickBooks, Xero, Tally, Zoho — no glue code.
  • Developer API with idempotency, webhooks, and per-org rate limits.

FAQs

What is financial data extraction?

Financial data extraction converts unstructured financial documents — bank statements, invoices, receipts, credit-card statements, tax forms — into structured, machine-readable data (CSV, JSON, Excel, or direct accounting-software imports). Modern pipelines combine PDF parsing, OCR, layout detection, and LLM-assisted field extraction.

How is PDF-to-JSON different from PDF-to-CSV?

CSV flattens transactions into a table. JSON preserves nested structure — statement metadata (bank, account, period, opening/closing balance), the transaction list, and per-transaction fields including split categories, running balance, and source coordinates. JSON is the right output when you're feeding a downstream application, ledger, or ML pipeline.

Do I need OCR for scanned bank statements?

Only for image-based PDFs. BankToBooks runs OCR only when the PDF has no embedded text layer, so digital statements stay fast and lossless. Scanned pages fall back to Tesseract-plus-layout detection.

Can I extract data from any bank's PDF?

Yes. We ship parsers for 200+ banks across India, US, UK, UAE, ZA, Australia and more, plus a generic fallback that infers columns from any tabular PDF.

Is my data private?

PDFs are processed in-browser for the anonymous free tier; nothing leaves your device. Paid tier uses ephemeral server-side processing with no long-term retention.

Related

Extract your first statement free — no signup

3 free extractions/day. JSON, CSV, Excel or direct accounting-app import.

Upload a PDF