Skip to content

4.4 Bank-statement analysis (BSA)

A BSA engine ingests a borrower’s bank statement (PDF or AA-fetched) and produces:

  • Normalised transactions with categorisation (salary / sales / EMI / NACH / GST / vendor payment / tax / etc.).
  • Account-level aggregates — Average Bank Balance, MAB, monthly credit / debit turnover, ending balance trend.
  • Cash-flow analytics — operating in / out, net cash flow, volatility.
  • Behavioural signals — bounce count, EMI obligations, circular transactions, related-party transfers, large cash deposits.
  • Fraud / tampering signals — text-layer inconsistencies, font mismatches, totals not reconciling.

For SME WC underwriting BSA is the second-most-important data source after GST. The quality of BSA features directly shapes credit quality.

VendorStrengthsURL
PerfiosMost mature in India; deep coverage across banks; PDF + netbanking + AA; bank-statement-analysis is its flagshipperfios.com
FinBox BankConnectStrong BSA + AA SDK; fast adoptionfinbox.in
PrecisaSpecialised BSA, document forensicsprecisa.in
ScoreMeBSA + scoring; growingscoreme.in
Karza / Perfios KarzaBSA via aggregatorkarza.in
  • PDF — borrower-uploaded; many bank-format variants; protected vs unprotected; multi-page.
  • Netbanking fetch — borrower logs in via vendor’s SDK; statement programmatically fetched.
  • AA-fetched — preferred; structured at source.

PDF coverage is widest, AA growing, netbanking declining in favour of AA.

A good BSA output looks like:

  • account_holder_name, bank_name, account_number, account_type, ifsc.
  • period_start, period_end.
  • aggregates: average_balance, mab_by_month, total_credit, total_debit, total_credit_count, total_debit_count, max_eod, min_eod.
  • categories: per-month sum + count per category (sales, EMI, NACH, salary, GST, transfer, cash deposit, etc.).
  • transactions[]: date, value, narration, category, party (where derivable), reference.
  • recurring_emi[]: detected EMIs with lender (best guess), amount, frequency.
  • bounces[]: NACH / cheque bounce events.
  • circular_transactions[], related_party[]: pattern detections.
  • tampering_flags[]: indicators of manipulation.
  • PDF parse: ₹15 – ₹50 per statement (12-month).
  • AA-fed BSA: ₹10 – ₹30 (no parsing complexity).
  • Netbanking fetch + parse: ₹20 – ₹60.
  • Vendor API: 1 – 3 weeks integration.
  • AA-fed BSA via FinBox / Perfios: tighter integration with the AA SDK from the same vendor.
  • PDF protected / wrong password.
  • Scanned / image-only PDF — OCR fallback; quality varies.
  • Multi-page split with overlap — dedupe by transaction hash.
  • Bank format change — vendor catches up over days; queue + retry.
  • Tampering flagged — manual review queue.
  • AA-fed BSA when PDF fails.
  • Manual statement entry in extreme cases.
  • AA MD if AA-fed.
  • DPDP — bank statement is highly sensitive personal / business data; strict purpose limitation.
  • Outsourcing MD — vendor governance.
  • BSA: Buy. Building a competitive BSA engine requires years of vendor relationships with banks, statement-format coverage, and tampering-detection R&D. Buy from Perfios or FinBox.
  • Custom features on top (industry-specific patterns) — Build.