4.4 Bank-statement analysis (BSA)
What BSA does
Section titled “What BSA does”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.
Vendors
Section titled “Vendors”| Vendor | Strengths | URL |
|---|---|---|
| Perfios | Most mature in India; deep coverage across banks; PDF + netbanking + AA; bank-statement-analysis is its flagship | perfios.com |
| FinBox BankConnect | Strong BSA + AA SDK; fast adoption | finbox.in |
| Precisa | Specialised BSA, document forensics | precisa.in |
| ScoreMe | BSA + scoring; growing | scoreme.in |
| Karza / Perfios Karza | BSA via aggregator | karza.in |
Input formats
Section titled “Input formats”- 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.
Data fields returned
Section titled “Data fields returned”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.
Pricing proxy
Section titled “Pricing proxy”- PDF parse:
₹15 – ₹50per statement (12-month). - AA-fed BSA:
₹10 – ₹30(no parsing complexity). - Netbanking fetch + parse:
₹20 – ₹60.
Implementation complexity
Section titled “Implementation complexity”- Vendor API:
1 – 3weeks integration. - AA-fed BSA via FinBox / Perfios: tighter integration with the AA SDK from the same vendor.
Failure cases
Section titled “Failure cases”- 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.
Fallback
Section titled “Fallback”- AA-fed BSA when PDF fails.
- Manual statement entry in extreme cases.
Compliance implications
Section titled “Compliance implications”- AA MD if AA-fed.
- DPDP — bank statement is highly sensitive personal / business data; strict purpose limitation.
- Outsourcing MD — vendor governance.
Build vs buy
Section titled “Build vs buy”- 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.