Case study · Lending and wallets
Novopay and IDFC: an open-source lending and wallet core at bank scale
IDFC Bank's new Bharat Banking division needed rural group lending, and Novopay needed a ledger for its agent wallet network. I was architect and lead engineer on the Apache Fineract-based lending and wallet core that served both.
The problem
IDFC received its banking licence in 2014 with a mandate to serve rural India. Its Bharat Banking division needed joint-liability group (JLG) and micro-enterprise lending through business correspondents in the field, without buying a legacy core banking system.
- Novopay had a parallel problem. It was building a retailer-led payments network for the unbanked ("mobile + Aadhaar + retail") and didn't want to build wallet management from scratch.
- Open source was a hard sell to banks. Buyers doubted the quality of free software, and knowledge transfer from core developers through partners was slow and expensive.
- The lending rules were regulator-grade, not generic. Repayments had to be applied interest-first while a loan was performing and principal-first once it was 90 days past due or written off. Loans had to move automatically through standard, sub-standard, doubtful and loss provisioning. RBI priority-sector and FATCA tags had to be recorded.
- Lending happened where connectivity didn't. Field agents needed to onboard borrowers biometrically, offline.
- The pilot was still taking shape. In August 2014 regions, retail versus group lending, the wallet and service levels were all still open.
The outcome
- A complete lending engine by 2014–15: individual and group loan products, chart of accounts, tablet onboarding with document capture, disbursement, repayment, charges, waivers and write-offs, with maker-checker, audit log, reporting, batch jobs and multi-tenancy.
- IDFC's instance configured end to end, including LDAP-only sign-in, an RBI-aligned chart of accounts and IDFC-specific accounting entries.
- The same ledger ran Novopay's agent network at scale: by Novopay's own figures, 50,000+ agents across 20+ states, 2.1 million wallet clients and over US$1 billion in transactions a year.
- Kept running in production through 2018, with ongoing fixes to foreclosure, interest accrual and other batch jobs.
- Cited by the Mifos Initiative as its flagship fintech adoption in India.
What shipped, when
| When | Milestone |
|---|---|
| Aug 2014 | Lending engine presented to IDFC: group and individual products, onboarding, full loan lifecycle |
| Oct 2015 | Product suite: assets architecture, ML credit-scoring design, loan-officer route planning |
| Nov 2017 | Solution architecture document v1.0 |
| Apr 2018 | Solution architecture v2.0: active/active DMZ and TOTP second factor |
| 2018 | Production support for foreclosure, accrual and batch jobs |
How it worked
Instead of a new core, both businesses ran on Apache Fineract, extended where banking rules demanded it:
- Field origination: offline biometric login for agents, rule-based duplicate detection, PAN validation and real-time credit bureau checks.
- Group lending through correspondents, with a first-loss default guarantee and revenue share settled by file exchange.
- Regulatory arithmetic inside the ledger: repayment appropriation that switches order at 90 days past due, automatic provisioning classes, priority-sector and FATCA tagging, and interest accrual that stops when a borrower is marked deceased.
- Wallets on the same ledger: Aadhaar-enabled deposits, withdrawals and remittance through partner banks, prepaid wallets, and utility and telecom payments for Novopay's retailer, merchant and consumer apps. At a billion dollars a year of wallet transactions, a duplicate post is real money — the reason I put idempotency keys in front of ledger writes.
The 2018 architecture: security and scale
The solution architecture document for IDFC's lending platform went to v2.0 in April 2018. It described a loan web application used by branch, zonal and head-office staff, reachable over the internet and inside the bank's network, sized for 750 simultaneous users with a target response of about three seconds. Version 2.0 added an active/active DMZ and a TOTP second factor (RFC 6238, eight digits, a 15-second step, with a two-step window each way for clock skew). Every integration, from the credit bureau and UIDAI eKYC to the bank's core banking, reconciliation and limit-management systems, was SOAP. Machine-learning credit scoring, designed in 2015, was explicitly out of scope for the loan pilot.
Tradeoffs worth keeping
- Open source over a licensed core. It meant earning banks' trust on quality, but both businesses got a proven ledger they didn't have to build or license. I made the same call again for Finseer's rural agent banking, where Fineract's real accounts, not a payment switch, were the point.
- Put regulatory rules in the core, not around it. Provisioning and appropriation implemented in the ledger stay correct in every report and batch job; rules bolted on around it drift.
- Design for the field, not the branch. Offline biometric onboarding cost extra engineering, and it's what made lending through village correspondents workable.
What this account leaves out, and why
IDFC's go-live date and its loan, borrower and branch volumes are not in any record I hold, so I don't quote them. The scale figures above are Novopay's own, from its Mifos case-study responses, and the engine's feature list comes from the August 2014 status presentation and the solution guide. What I would do differently is on the knowledge-transfer side: buyers doubted free software and learned it slowly through partners at marked-up rates. Writing the regulatory arithmetic down in the solution guide helped; publishing it earlier, as configuration rather than tribal knowledge, would have helped more.