13.10 LMS
Epic overview
Section titled “Epic overview”The LMS is the system of record for every loan event in the platform. Every cent moves through it. Daily classification, daily accrual, lockstep co-lending updates, IRACP-compliant provisioning, and audit-grade event sourcing are non-negotiable.
This module is also the most-regulated in terms of accounting and prudential treatment. Penal charges must be separately ledgered (per RBI Aug 2023 circular); restructuring must downgrade per IRACP; upgrade only on full clearance per Nov 2021 circular.
User stories
Section titled “User stories”- As an ops user, I want daily classification and provisioning to run automatically end-of-day and finish by
02:00 IST. - As a borrower, I want a clear statement showing principal, interest accrued, charges, dues — with no double-counting of any line.
- As a borrower making a repayment, I want my payment to apply per the disclosed waterfall (penal → fees → interest → principal) without surprises.
- As an auditor, I want every loan event traceable: when it was posted, by whom, what changed, what the new state is.
- As a credit head, I want SMA bucket transitions (
SMA-0 → SMA-1 → SMA-2 → NPA) reflected daily and surfaced for triage. - As a CRO, I want NPA classification to upgrade ONLY on full clearance of arrears — partial payments must not upgrade.
- As a finance officer, I want monthly close to be possible by day
5of the next month with all accruals, provisions, charges posted. - As an ops user, I want to apply a charge (bounce, late, penal) per the board-approved policy, with the borrower notified.
- As a co-lender, I want my share’s outstanding, accrual, repayments, and classification to mirror perfectly on daily MIS.
- As a borrower seeking foreclosure on a floating-rate MSME loan, I want zero foreclosure charge per RBI 2014 rule.
- As a borrower with an EMI on a non-floating product, I want pre-disclosed foreclosure charges applied transparently.
- As an analyst restructuring a loan per approved policy, I want the workflow to downgrade per IRACP and start an observation period.
- As a system, I want to freeze interest accrual immediately when a loan turns NPA and reverse any accrued-but-uncollected interest from the prior period.
- As a finance officer, I want every charge to generate a GST invoice in the right state’s tax form (CGST + SGST vs IGST).
- As an admin, I want the board-approved penal-charges configuration to apply across all loans, versioned, audit-trailed.
API requirements
Section titled “API requirements”Loan account
Section titled “Loan account”POST /v1/loans— create on disbursement.GET /v1/loans/{id}— read with current state.GET /v1/loans/{id}/events?from={t}&to={t}— event history.GET /v1/loans/{id}/schedule— current schedule.
Drawdowns (for revolving lines)
Section titled “Drawdowns (for revolving lines)”POST /v1/loans/{id}/draws— create new drawdown. Body:{ amount, tenure }.GET /v1/loans/{id}/draws— list.GET /v1/loans/{id}/draws/{draw_id}/schedule— per-draw schedule.
Repayment
Section titled “Repayment”POST /v1/loans/{id}/repayments— record repayment (internal; from NACH adapter or PG webhook). Body:{ amount, source, source_ref, received_at }.GET /v1/loans/{id}/repayments?from={t}— list.POST /v1/loans/{id}/repayments/{rid}/re-allocate— manual re-allocation (rare; with audit).
Charges
Section titled “Charges”POST /v1/loans/{id}/charges— apply charge. Body:{ type, amount, reason }.GET /v1/loans/{id}/charges— list.POST /v1/loans/{id}/charges/{cid}/waive— waive with approval.
Prepayment / Foreclosure
Section titled “Prepayment / Foreclosure”POST /v1/loans/{id}/prepayment— partial prepayment.POST /v1/loans/{id}/foreclose— full closure pre-tenure. Returns{ closed_at, noc_uri, foreclosure_charge }.
Restructure
Section titled “Restructure”POST /v1/loans/{id}/restructure— initiate. Body:{ reason, proposed_terms }. Returns{ workflow_id }.
Write-off
Section titled “Write-off”POST /v1/loans/{id}/writeoff— approve write-off. Body:{ approver_id, reason }.POST /v1/loans/{id}/writeoff/recovery— record post-write-off recovery.
Classification + provisioning
Section titled “Classification + provisioning”- Cron: daily classification job.
GET /v1/loans/{id}/classification— current.GET /v1/loans/{id}/classification-history— daily snapshots.GET /v1/loans/{id}/provision— current.
Closure
Section titled “Closure”POST /v1/loans/{id}/close— final closure (after foreclosure or full schedule).GET /v1/loans/{id}/noc— NOC retrieval.
Statement
Section titled “Statement”GET /v1/loans/{id}/statement?from={t}&to={t}— statement; format query param forpdf/json.
Co-lending mirror
Section titled “Co-lending mirror”GET /v1/loans/{id}/lender-shares— per-lender share data.
GST invoice
Section titled “GST invoice”POST /v1/gst-invoices— auto-generated by charge events.GET /v1/gst-invoices/{id}.
Data model
Section titled “Data model”loan_account,loan_event(append-only),schedule_line,repayment,allocation,charge,classification_snapshot,provision,restructuring,writeoff,loan_allocation(co-lending),gst_invoice.
See 5.9 Schema reference.
UI screens
Section titled “UI screens”- Loan dashboard with classification distribution.
- Exception queue (failed accrual, recon issues, restructure pending).
- Daily batch run status.
Borrower
Section titled “Borrower”- Account view (outstanding, last EMI, next due).
- Statement download.
- Repayment via PG / UPI link.
- Repayment history.
Analyst
Section titled “Analyst”- Per-loan view with full event history, schedule, classification timeline.
Finance
Section titled “Finance”- Monthly close dashboard.
- Provisioning schedule.
- Charges register.
- GST output reconciliation.
Backend services
Section titled “Backend services”- LMS core — owns
loan_account,loan_event,schedule_line. - Accrual engine — daily.
- Classification engine — daily IRACP.
- Provisioning engine — daily.
- Repayment processor — allocates per waterfall.
- Restructure workflow — long-running.
- Charge service — applies charges per board policy.
- GST invoice service — generates invoices.
- Co-lending mirror — keeps share-level ledger consistent.
External integrations
Section titled “External integrations”- Sponsor bank for NACH presentation + bounce files + statements.
- NPCI rails for UPI AutoPay.
- Payment gateways for borrower-initiated payments.
- Internal accounting / GL for daily postings.
- GST portal via GSP for invoice filing.
- Bureau for monthly classification submission (via reporting module).
- Partner systems for co-lending MIS.
Test cases
Section titled “Test cases”Happy path
Section titled “Happy path”- Schedule generation correct for bullet (WC line draw), EMI (term), structured.
- Daily accrual computes correctly on weekends and bank holidays.
- Bounce processed; bounce fee applied to charges ledger (not principal).
- Repayment allocation per waterfall: penal → fees → interest → principal.
- Restructure downgrades per IRACP.
- Upgrade requires full payment of arrears (not just current EMI).
- Foreclosure of floating-rate MSME term loan applies zero foreclosure charge.
- Foreclosure of fixed-rate non-MSME applies charge per disclosed policy.
- Co-lending mirror shows identical classification across both lenders.
Failure / edge
Section titled “Failure / edge”- Repayment received before due date → applied as advance per policy.
- Partial NACH success → partial credit; remaining is bounce.
- Multiple bounces in NACH cycle → re-presentation per NACH rules; cap respected.
- Schedule change after restructuring → old schedule preserved for audit; new schedule active.
- Daily classification crossing month-end — daily snapshots used for monthly aggregates.
- GST rate change mid-loan → apply prospectively; invoice versioned.
- Multi-state operations → invoice in right tax mode (CGST+SGST vs IGST).
- Backdated correction to a loan → adjustment journal with explanation; prevent silent retroactive change.
Compliance
Section titled “Compliance”- Penal charges in separate ledger from interest (Aug 2023 compliance).
- No capitalisation of penal charges into principal.
- Upgrade only on full clearance (Nov 2021 compliance).
- Restructure triggers downgrade immediately if previously standard.
- Co-lending lockstep classification verified.
Edge cases
Section titled “Edge cases”- Borrower with multiple loans, one delinquent — borrower-level view influences case priority; classification may cascade per policy.
- Restructured loan re-restructured — fresh stress event; full downgrade.
- Loan with overdue AND prepayment received same day — allocation order per agreement.
- Fraud-classified loan — 100% provisioning; no upgrade; reported to RBI.
- Settled-less-than-full disposition — recorded; bureau updated; no upgrade.
- Partial write-off — remaining principal continues to accrue.
- NACH ack arrives late (delayed by sponsor bank) — repayment timestamp is processing-effective date, not ack date, for classification purposes.
- Co-lending pool exit mid-cycle — buyback or substitution per agreement.
Acceptance criteria
Section titled “Acceptance criteria”- Daily classification + provisioning runs end-to-end by
02:00 ISTfor the entire book. - Schedule + accrual mathematically auditable (unit tests against worked examples).
- Penal charges in separate GL (Aug 2023 compliance verified).
- Upgrade-on-full-clearance enforced (cannot bypass).
- Co-lending share segregation verified (originator vs partner share totals match per-loan).
- Statement on-demand within
5 seconds. - Monthly close support — all postings complete by day
5of next month. - GST invoices generated for every chargeable event.
Compliance touchpoints
Section titled “Compliance touchpoints”- IRACP norms — daily classification, upgrade discipline, restructure treatment.
- Penal Charges circular (Aug 2023) — separate ledger.
- RBI Foreclosure circular (2014) — no foreclosure charge on floating-rate MSME.
- GST law — invoices, ITC, return filing.
- Bureau reporting — monthly classification submission.
- Co-Lending guidelines — share-level segregation, lockstep classification.
Related
Section titled “Related”- 3.J LMS module.
- 2.10 Asset classification, NPA, provisioning.
- 2.10.1 IRACP edge cases.
- 2.11.1 Penal charges examples.
- 5.8 Sequence diagrams — repayment + classification flows.
- 5.11 Worked data example — LMS rows for one loan.