Cosmic Module
O
Qubits of DPK
March 20, 2026
Core Open Source
The Analogy
A Client in Fineract is like a customer file at a bank. When you walk into a bank for the first time, they create a file for you with your name, photo ID, address. Everything you do — open a savings account, take a loan — is linked to that file. The "Client" is that file.
What is a Client?
A Client is the person or entity that the bank serves. They can be:
- Individual (Person): A person with a name, date of birth, gender
- Entity (Business): A company or organisation (legalFormId = 2)
Client Status State Machine
javascript
QUBITS OF DPK
Creating a Client
API Call
javascript
QUBITS OF DPK
Code Flow
javascript
QUBITS OF DPK
DB Table: m_client
sql
QUBITS OF DPK
External ID — The Key Feature (Your PR #5659!)
Why It Exists
When integrating Fineract with another system:
- Your CRM has customer ID: CRM-12345
- Fineract has internal ID: 42
- Problem: you have to maintain a mapping table
External ID solves this: You tell Fineract externalId = "CRM-12345" when creating the client. From then on, you can call ALL Fineract APIs using your own ID instead of Fineract's.
API Pattern with External ID
Instead of:
javascript
QUBITS OF DPK
You can use:
javascript
QUBITS OF DPK
All these endpoints exist for external ID:
javascript
QUBITS OF DPK
Auto-Generated External ID
Fineract can automatically generate a UUID as external ID if you enable the global configuration:
javascript
QUBITS OF DPK
Once enabled, every new client gets a UUID external ID automatically.
Client Identifiers (KYC Documents)
A client can have multiple identity documents:
javascript
QUBITS OF DPK
Stored in m_client_identifier table.
Client Hierarchy — Office, Group, Client
javascript
QUBITS OF DPK
- Office = Bank branch. Clients belong to an office.
- Group = Cluster of clients (used in group lending). Optional.
- Client = Individual person or entity.
Client Actions (State Transitions)
All these go through ClientWritePlatformServiceImpl via separate CommandHandlers.
GlobalConfigurationHelper — Feature Flags
The GlobalConfigurationHelper in tests manages Fineract-wide feature flags:
java
QUBITS OF DPK
This maps to:
javascript
QUBITS OF DPK
These flags are stored in c_configuration table and affect all tenants.