Cosmic Module

O

Qubits of DPK

March 23, 2026

Core Open Source

What This Module Is (Big Picture)

The rates module manages configurable rate values used in financial calculations.
Instead of hardcoding rates inside the system, Fineract allows administrators to define them dynamically.
Rates may represent:
  • interest rates
  • penalty rates
  • adjustment rates
  • financial product rates
This module ensures that rates can change over time without modifying application code.

Layman Example

Suppose a bank offers a savings product.
Interest rate = 5%
After one year, the bank changes it to:
Interest rate = 6%
Instead of rewriting the system logic, the bank simply updates the rate configuration.
The fineract-rates module manages these configurations.

Where the Code Lives

Key Package

org.apache.fineract.portfolio.rate
Responsibilities include:
  • defining rate rules
  • storing rate values
  • managing rate history
  • retrieving applicable rates

Core Domain Entity:

Rate.java

Path
fineract-rates/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java
This entity represents a financial rate definition.

Key fields on

Rate

Rate History

Rates may change over time.
Example:
Instead of replacing the old value, the system stores historical rates.
This ensures that past financial transactions remain correct.

Example Rate Calculation

Loan Amount = ₹10,000
Interest Rate = 12%
Interest = ₹1,200
The rate module provides the percentage value used in calculations.

Example Rate Calculation Code

java
QUBITS OF DPK
1public BigDecimal applyRate(BigDecimal amount, BigDecimal ratePercentage) {
2
3    BigDecimal result =
4        amount.multiply(ratePercentage)
5              .divide(BigDecimal.valueOf(100));
6
7    return result;
8}
This method calculates the value derived from applying a rate.

API Layer

Main controller
RatesApiResource
Example endpoints
java
QUBITS OF DPK
1GET  /v1/rates
2POST /v1/rates
3GET  /v1/rates/{rateId}
4PUT  /v1/rates/{rateId}
These APIs allow administrators to:
  • create rate definitions
  • update rate values
  • retrieve current and historical rates

Read Services

Read services retrieve rate information.
Examples include:
  • retrieving rate definitions
  • retrieving current active rates
  • retrieving historical rate values
These services are used when financial calculations require a rate.

Write Services

Write services manage rate configurations.
Responsibilities include:
  • creating new rates
  • updating existing rates
  • activating or deactivating rates
  • managing rate history

Repository Layer

Exceptions

These exceptions ensure rates are properly configured.

How It All Connects (Full Flow)

Example: Loan interest calculation
java
QUBITS OF DPK
1Loan Service
2Loan created
34Rate Service
5    │ retrieve interest rate
67Rate Engine
8    │ apply percentage calculation
910Loan Module
11    │ compute interest amount
1213Accounting Module
14record financial transaction
1516Database

Why This Module Matters

The rates module ensures:
  • flexible rate management
  • historical rate tracking
  • correct financial calculations
Banks often change rates frequently, and this module allows those changes without modifying application logic.

One-Sentence Summary

fineract-rates manages configurable financial rates used in banking calculations such as interest rates and penalty percentages.