Cosmic Module
O
Qubits of DPK
March 23, 2026
Core Open Source
What This Module Is (Big Picture)
The progressive loan module extends the standard loan module.
Traditional loans:
- fixed repayment schedule
- equal installments
- schedule generated once
Progressive loans:
- repayment schedule changes dynamically
- interest recalculated after each repayment
- remaining installments adjusted
Layman
A borrower may repay:
Month 1 → ₹1200
Month 2 → ₹800
Month 3 → ₹1500
Instead of fixed EMIs, the system recalculates remaining installments dynamically.
Where the Code Lives
Key Package
org.apache.fineract.portfolio.loanaccount.progressive
This package implements the dynamic loan schedule engine.
Responsibilities:
- recalculating loan schedules
- adjusting installments
- computing interest after repayments
Core Domain Concept: Progressive Loan Schedule
The progressive loan schedule recalculates remaining installments after each repayment.
Example
Loan Amount = ₹10,000
Interest = 12%
Tenure = 10 months
Normal loan
Month 1 → ₹1,000
Month 2 → ₹1,000
Month 3 → ₹1,000
Progressive loan
Month 1 → ₹1,200
Month 2 → ₹850
Month 3 → recalculated
Key Class Example
Path
fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/progressive/domain/ProgressiveLoanScheduleGenerator.java
This class generates repayment schedules dynamically.
Example simplified structure
java
QUBITS OF DPK
Technical Explanation of the Code
The schedule generator:
- #starts with the original loan principal
- #calculates interest on remaining principal
- #divides principal into installments
- #updates remaining principal after each installment
- #builds the installment schedule
This allows declining balance interest calculations.
Layman Explanation of the Code
Imagine someone borrows ₹10,000.
Each month:
- #system calculates interest on remaining balance
- #borrower pays part of the principal
- #next month’s interest becomes smaller
Example
Month 1
Principal = 10,000
Interest = 1,000
Month 2
Principal = 9,000
Interest = 900
Interest decreases as principal decreases.
Repayment Processing Example
When a borrower makes a repayment:
java
QUBITS OF DPK
Technical Explanation
The repayment process:
- #subtracts payment from outstanding balance
- #recalculates remaining repayment schedule
- #updates loan schedule records
Layman Explanation
When a borrower pays money:
- the system reduces remaining loan balance
- recalculates future installments
- updates repayment plan
API Layer
Progressive loans use the same loan APIs.
Examples
java
QUBITS OF DPK
However, when repayments happen, the progressive schedule engine runs automatically.
Command Handlers
Important handlers include
- CreateProgressiveLoanCommandHandler
- RepaymentCommandHandler
- RecalculateScheduleCommandHandler
Each handler processes a specific progressive loan operation.
Repository Layer
Exceptions
How It All Connects (Full Flow)
Example: borrower makes repayment
java
QUBITS OF DPK
Why This Module Matters
Progressive loans allow institutions to support:
- irregular borrower income
- flexible repayments
- dynamic interest calculations
This is extremely important in microfinance environments.
One-Sentence Summary
fineract-progressive-loan extends the loan system to support dynamic repayment schedules where installments and interest are recalculated after each repayment.