Cosmic Module
O
Qubits of DPK
March 23, 2026
Core Open Source
Relevance to Your Proposal 2
FINERACT-2485 (Transaction Idempotency) specifically targets the Savings module transaction APIs. The idempotency gaps are most visible here — a customer retrying a withdrawal on unstable network could be double-debited. This is exactly the problem your proposal fixes.
fineract-savings
— Full Codebase Explanation
Apache Fineract is open-source
What This Module Is (Big Picture)
The savings module manages deposit accounts.
Unlike loans where money flows from bank → customer, savings accounts represent money flowing from customer → bank.
This module manages:
- opening savings accounts
- deposits
- withdrawals
- interest calculation
- balance tracking
- account closure
Layman
If a customer opens a savings account, the bank must:
- #Create an account record
- #Accept deposits
- #Allow withdrawals
- #Calculate interest
- #Maintain account balance
The fineract-savings module automates these operations.
Where the Code Lives
Layman
- fineract-savings = savings department
- fineract-core = financial utilities
- fineract-provider = operational services
- fineract-accounting = ledger system
Key Package 1:
org.apache.fineract.portfolio.savings
This package contains the core savings account domain logic.
The Main Entity:
SavingsAccount.java
Path
plain text
QUBITS OF DPK
This class represents a savings account owned by a customer or group.
Each SavingsAccount object corresponds to one real savings account in the bank.
Key fields on
SavingsAccount
Key methods inside
SavingsAccount.java
plain text
QUBITS OF DPK
These methods represent basic banking actions:
- activate account
- deposit money
- withdraw money
- close account
Savings Account Lifecycle
plain text
QUBITS OF DPK
Savings accounts move through different lifecycle states during their operation.
DTO Layer:
SavingsAccountData.java
Path
plain text
QUBITS OF DPK
This DTO represents savings account data returned by APIs.
Key fields
plain text
QUBITS OF DPK
These fields allow the UI to display:
- account details
- balance
- transaction history
API Layer
SavingsAccountsApiResource.java
Path
plain text
QUBITS OF DPK
This is the REST controller for savings account operations.
Key endpoints
plain text
QUBITS OF DPK
These endpoints allow the system to:
- create accounts
- activate accounts
- deposit money
- withdraw money
- close accounts
Read Services
SavingsAccountReadPlatformService
Paths
plain text
QUBITS OF DPK
This service retrieves savings account information.
Key read operations
plain text
QUBITS OF DPK
These methods retrieve:
- account details
- transaction history
- template information for creating accounts
Write Services
SavingsAccountWritePlatformService
Paths
plain text
QUBITS OF DPK
Handles account changes and transactions.
Key write operations
plain text
QUBITS OF DPK
These represent real operations performed on savings accounts.
Interest Calculation
Example simplified interest calculation:
plain text
QUBITS OF DPK
If a customer has ₹10,000 with a 5% interest rate, the interest calculation would produce ₹500 annually.
Command Handlers
Path
plain text
QUBITS OF DPK
Key handlers include
plain text
QUBITS OF DPK
Each handler processes a specific savings account operation.
Repository and Data Access Layer
Exceptions
These exceptions prevent invalid financial operations.
How It All Connects (Full Flow)
Example: Customer deposits money
plain text
QUBITS OF DPK
Why This Module Matters
Savings accounts interact with several modules.
Examples:
- fineract-portfolio → connects savings accounts to clients
- fineract-branch → accounts belong to branches
- fineract-accounting → deposits recorded in general ledger
- fineract-reporting → generates account reports
One-Sentence Summary
fineract-savings manages deposit accounts, including account creation, deposits, withdrawals, interest calculation, and balance tracking.