Skip to content

13.10 LMS

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.

  1. As an ops user, I want daily classification and provisioning to run automatically end-of-day and finish by 02:00 IST.
  2. As a borrower, I want a clear statement showing principal, interest accrued, charges, dues — with no double-counting of any line.
  3. As a borrower making a repayment, I want my payment to apply per the disclosed waterfall (penal → fees → interest → principal) without surprises.
  4. As an auditor, I want every loan event traceable: when it was posted, by whom, what changed, what the new state is.
  5. As a credit head, I want SMA bucket transitions (SMA-0 → SMA-1 → SMA-2 → NPA) reflected daily and surfaced for triage.
  6. As a CRO, I want NPA classification to upgrade ONLY on full clearance of arrears — partial payments must not upgrade.
  7. As a finance officer, I want monthly close to be possible by day 5 of the next month with all accruals, provisions, charges posted.
  8. As an ops user, I want to apply a charge (bounce, late, penal) per the board-approved policy, with the borrower notified.
  9. As a co-lender, I want my share’s outstanding, accrual, repayments, and classification to mirror perfectly on daily MIS.
  10. As a borrower seeking foreclosure on a floating-rate MSME loan, I want zero foreclosure charge per RBI 2014 rule.
  11. As a borrower with an EMI on a non-floating product, I want pre-disclosed foreclosure charges applied transparently.
  12. As an analyst restructuring a loan per approved policy, I want the workflow to downgrade per IRACP and start an observation period.
  13. 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.
  14. As a finance officer, I want every charge to generate a GST invoice in the right state’s tax form (CGST + SGST vs IGST).
  15. As an admin, I want the board-approved penal-charges configuration to apply across all loans, versioned, audit-trailed.
  • 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.
  • 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.
  • 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).
  • 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.
  • POST /v1/loans/{id}/prepayment — partial prepayment.
  • POST /v1/loans/{id}/foreclose — full closure pre-tenure. Returns { closed_at, noc_uri, foreclosure_charge }.
  • POST /v1/loans/{id}/restructure — initiate. Body: { reason, proposed_terms }. Returns { workflow_id }.
  • POST /v1/loans/{id}/writeoff — approve write-off. Body: { approver_id, reason }.
  • POST /v1/loans/{id}/writeoff/recovery — record post-write-off recovery.
  • Cron: daily classification job.
  • GET /v1/loans/{id}/classification — current.
  • GET /v1/loans/{id}/classification-history — daily snapshots.
  • GET /v1/loans/{id}/provision — current.
  • POST /v1/loans/{id}/close — final closure (after foreclosure or full schedule).
  • GET /v1/loans/{id}/noc — NOC retrieval.
  • GET /v1/loans/{id}/statement?from={t}&to={t} — statement; format query param for pdf / json.
  • GET /v1/loans/{id}/lender-shares — per-lender share data.
  • POST /v1/gst-invoices — auto-generated by charge events.
  • GET /v1/gst-invoices/{id}.
  • 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.

  • Loan dashboard with classification distribution.
  • Exception queue (failed accrual, recon issues, restructure pending).
  • Daily batch run status.
  • Account view (outstanding, last EMI, next due).
  • Statement download.
  • Repayment via PG / UPI link.
  • Repayment history.
  • Per-loan view with full event history, schedule, classification timeline.
  • Monthly close dashboard.
  • Provisioning schedule.
  • Charges register.
  • GST output reconciliation.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Daily classification + provisioning runs end-to-end by 02:00 IST for 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 5 of next month.
  • GST invoices generated for every chargeable event.
  • 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.