Cosmic Module
O
Qubits of DPK
March 20, 2026
Core Open Source
The Analogy
A loan in Fineract is like a patient in a hospital. It enters (application), gets diagnosed and approved, gets treated (disbursed), goes through follow-ups (repayments), and eventually gets discharged (closed). At every stage, its STATUS changes and different departments handle it.
Loan Status State Machine
javascript
QUBITS OF DPK
Step 1 — Loan Application (Submit)
What Happens
A customer applies for a loan. The loan officer enters details: amount, term, interest rate, product type.
API Call
javascript
QUBITS OF DPK
Code Flow
javascript
QUBITS OF DPK
Key DB Tables
sql
QUBITS OF DPK
Step 2 — Loan Approval
What Happens
A senior loan officer reviews and approves. Sets the approved principal amount.
API Call
javascript
QUBITS OF DPK
Code Flow
javascript
QUBITS OF DPK
Step 3 — Loan Disbursal
What Happens
Money is actually given to the customer. This is the most critical step — it triggers accounting journal entries.
API Call
javascript
QUBITS OF DPK
Code Flow
javascript
QUBITS OF DPK
Step 4 — Repayment Schedule
What It Is
When a loan is disbursed, Fineract generates a schedule of instalments. For a ₹1,00,000 loan at 12% for 12 months:
Stored in m_loan_repayment_schedule table.
Repayment Schedule Engine
java
QUBITS OF DPK
Step 5 — Making Repayments
API Call
javascript
QUBITS OF DPK
Code Flow
javascript
QUBITS OF DPK
Repayment Allocation Strategy
Fineract applies payments in this order by default:
- #Penalties (late fees) first
- #Fees (processing charges)
- #Interest
- #Principal
This order can be configured per loan product.
Step 6 — Delinquency
What It Is
If a customer misses a repayment, the loan becomes delinquent (overdue). Fineract classifies delinquency into buckets:
How It's Detected
The COB (Close of Business) batch job runs nightly and:
- #Checks every active loan's repayment schedule
- #If today > due date and not paid → marks as overdue
- #Calculates days past due
- #Assigns to appropriate delinquency bucket
- #Applies penalty charges if configured
Step 7 — Loan Closure
Natural Closure (Full Repayment)
When the last instalment is paid, Fineract automatically:
- Sets loan status = CLOSED (600)
- Sets closedOnDate
- Publishes LoanClosedBusinessEvent
Write-Off
If the bank gives up:
javascript
QUBITS OF DPK