Cosmic Module

O

Qubits of DPK

March 20, 2026

Core Open Source

The Analogy

Think of Fineract like a large hospital. A hospital has different departments — cardiology, orthopaedics, emergency, pharmacy. Each department has its own team, its own equipment, its own records. But they all share the same building and communicate with each other.
Fineract's modules are exactly like those departments. Each module owns a specific domain and has its own code, but they all run together as one application.

️ The Module Map

javascript
QUBITS OF DPK
1fineract/
2├── fineract-provider/        ← 🏠 The MAIN APPLICATION (entry point)
3├── fineract-core/            ← 🧱 Foundation utilities used by EVERYONE
4├── fineract-client/          ← 🤝 Auto-generated Java HTTP client (OpenAPI)
5├── fineract-client-feign/    ← 🤝 Feign-based HTTP client for tests
6├── fineract-loan/            ← 💳 Everything about loans
7├── fineract-savings/         ← 💰 Everything about savings accounts
8├── fineract-investor/        ← 📈 Loan investment / securitisation
9├── fineract-progressive-loan/← 📊 Advanced loan scheduling engine
10├── fineract-accounting/      ← 📒 Double-entry bookkeeping (GL accounts)
11├── fineract-reporting/       ← 📊 Reports, Pentaho integration
12├── fineract-tax/             ← 🧾 Tax calculation on charges
13├── fineract-charge/          ← 💸 Fees and penalties
14├── fineract-document/        ← 📄 Document management
15├── fineract-bulk-import/     ← 📤 Excel bulk import (clients, loans)
16├── fineract-sms/             ← 📱 SMS notifications
17├── fineract-twofactor/       ← 🔐 Two-factor authentication
18├── fineract-branch/          ← 🏢 Office/branch management
19├── fineract-shares/          ← 📑 Share accounts
20├── fineract-guarantor/       ← 🤝 Loan guarantors
21├── fineract-collateral/      ← 🏠 Loan collateral management
22├── fineract-rates/% Interest rate management
23├── fineract-template/        ← 📝 Document/email templates
24├── fineract-calendar/        ← 📅 Recurring meeting schedules
25├── fineract-survey/          ← 📋 Client surveys (poverty scoring)
26├── fineract-group/           ← 👥 Group lending
27├── fineract-portfolio/       ← 📂 Client + Loan portfolio management
28└── integration-tests/        ← 🧪 All integration tests

fineract-provider — The Main Application

Layman: This is the reception desk of the hospital. Everything starts here.
What it does:
  • Contains FineractApplication.java — the main() method that starts the whole server
  • Contains Spring Security configuration
  • Contains application.properties (all configuration)
  • Wires all the other modules together
  • Hosts the Swagger UI endpoint
Key files:
javascript
QUBITS OF DPK
1fineract-provider/src/main/java/org/apache/fineract/
2├── FineractApplication.javamain() entry point
3├── infrastructure/
4│   ├── core/Threading, data source, caching
5│   ├── security/Spring Security config
6│   ├── jobs/Scheduler API + job registry
7│   ├── hooks/Webhook/event hooks
8│   └── businessdate/Business date management

fineract-core — The Foundation

Layman: This is the hospital's plumbing and electricity — invisible but everything depends on it.
What it does:
  • Base command/query infrastructure (CommandHandler, CommandProcessingResult)
  • Exception hierarchy (AbstractPlatformException)
  • Utility classes (DateUtils, StringUtils, MoneyHelper)
  • Data source configuration (multi-tenancy infrastructure)
  • Domain primitives (Money class)
The Money class is critical:
java
QUBITS OF DPK
1// Money always has amount + currency — never just a plain double
2Money amount = Money.of(currency, BigDecimal.valueOf(10000));
3Money interest = amount.percentageOf(BigDecimal.valueOf(12)); // 12% interest
Why? Because floating-point arithmetic (like double) loses precision with money. Money uses BigDecimal internally.

fineract-loan — The Loan Engine

Layman: This is the loans department. Everything related to giving money out and getting it back.
What it owns:
  • Loan application, approval, disbursal
  • Repayment schedule generation
  • Repayment processing
  • Interest calculation
  • Penalty/charge calculation
  • Loan write-off
  • Delinquency classification
  • Loan state machine
Key packages:
javascript
QUBITS OF DPK
1fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/
2├── domain/Loan, LoanRepaymentScheduleInstalment, LoanTransaction
3├── service/LoanWritePlatformService, LoanReadPlatformService
4├── api/REST controllers (LoanApiResource)
5├── command/LoanApproveCommand, LoanDisbursementCommand
6└── data/DTOs (LoanData, LoanRepaymentData)

fineract-savings — The Savings Engine

Layman: The savings accounts department.
What it owns:
  • Savings account opening
  • Deposit and withdrawal transactions
  • Interest calculation and posting
  • Dormancy detection
  • Fixed deposits (FD), Recurring deposits (RD)

fineract-accounting — The Ledger

Layman: The accounting department that records every money movement in double-entry format.
What it does:
  • Every loan disbursal, repayment, fee → creates journal entries
  • Maintains the General Ledger (GL)
  • GL accounts: Assets, Liabilities, Income, Expense, Equity
Double-entry explained:
When a loan of ₹10,000 is disbursed:
javascript
QUBITS OF DPK
1DEBIT:  Loans Receivable (Asset)     +10,000Bank is owed money
2CREDIT: Bank Account (Asset)         -10,000Cash went out
Every transaction must balance. This is how real accounting works.

integration-tests — The Test Suite

Layman: The hospital's quality control team that tests everything.
Structure:
javascript
QUBITS OF DPK
1integration-tests/src/test/java/org/apache/fineract/integrationtests/
2├── common/Helper classes (ClientHelper, LoanHelper...)
3├── support/Test infrastructure (instance mode support)
4├── LoanIntegrationTest.java
5├── ClientExternalIdTest.javaYour PR #5659
6├── InstanceModeIntegrationTest.javaYour PR #5658
7└── ...200+ test files

How Modules Depend on Each Other

javascript
QUBITS OF DPK
1fineract-provider
2    ├── depends on → fineract-loan
3    ├── depends on → fineract-savings
4    ├── depends on → fineract-accounting
5    ├── depends on → fineract-core (everyone depends on this)
6    └── depends on → all other modules
7
8fineract-loan
9    ├── depends on → fineract-core
10    ├── depends on → fineract-accounting
11    └── depends on → fineract-charge
12
13fineract-core
14    └── depends on → nothing (it's the base)
Rule: fineract-core depends on nothing. Everything else depends on fineract-core. fineract-provider depends on everything.

Mentor Question: "Which module handles X?"