Apache Fineract

Design and build an Apache Fineract core banking implementation with configured loan and savings products, ledger mapping, integrations and data migration.

On this page

What a Fineract implementation involves

Apache Fineract is a core banking platform from the Apache Software Foundation, licensed under Apache-2.0. It manages clients and groups, loans, savings, deposits, charges and an integrated general ledger through a REST API. Fineract is headless: teams pair it with the Mifos X web app (an Angular application from the Mifos Initiative, licensed under MPL-2.0) or with their own interfaces.

Teams use Fineract for digital lending, microfinance, savings groups and as the account and ledger engine behind fintech products. The project README notes that a production deployment can be complex and that the project does not publish a comprehensive production guide. Most of the effort goes into product design, accounting, integrations, migration and testing.

Discovery: products, ledgers and money movement

Credit, finance, operations and engineering each own part of these answers. Settle them before configuring anything.

AreaQuestions to settleOutput
Loan productsInterest method, schedule type (cumulative or progressive), transaction processing strategy, grace periods, charges, delinquency buckets and charge-off rules.Product specifications signed off by credit and finance, with worked schedule examples.
Savings and depositsInterest compounding and posting periods, minimum balances, overdrafts, fixed deposit terms and dormancy.Savings and deposit product specifications.
Chart of accountsGL structure, cash or accrual accounting per product, and mapping of portfolio, income, write-off and suspense accounts.Chart of accounts and product-to-GL mapping approved by finance.
Organization and controlsOffices, staff, client and group hierarchy, roles, and which actions need maker-checker approval.Role and approval matrix.
Money movementWhich rails disburse and collect funds, how repayments are matched to loans, settlement timing and reversals.Payment flow diagrams and a payment type list.

Configuration, extension or custom code

Much of the work is configuration through the API or web app: products, charges, GL accounts, payment types, holidays, roles, maker-checker settings, data tables that add fields to clients or accounts, reports and hooks. Script it and keep it in version control so every environment can be rebuilt and compared.

Integrations to design

Fineract holds accounts and the ledger. Most other functions connect to it through the API or its external events.

Payment rails and processors

Disbursements and repayments usually pass through a payment hub that talks to banks, mobile money or card processors and posts to Fineract with the matching payment type. Send Fineract's idempotency key header so retries do not create duplicate repayments.

KYC and AML providers

Fineract stores client records, identifiers and documents. Identity verification, sanctions screening and transaction monitoring run in specialist services, with account activation gated on their result.

External events

Fineract can publish business events, such as a client being created, to ActiveMQ or Apache Kafka. They are off by default and suit notifications, data warehouse feeds and fraud monitoring.

Finance and reporting

Journal entries flow to an ERP or data warehouse. Regulatory and management reports are specific to each implementation, so plan their sources and owners early.

Data migration and reconciliation testing

Moving from a legacy system means migrating clients, accounts, balances, schedules, any history you need and opening GL balances. Decide early whether to replay history or migrate positions as of a cutover date. Replaying transactions through the API applies Fineract's validation and accounting but takes longer; loading positions is faster and needs care with interest and fees accrued before cutover.

Run several trial migrations into a staging tenant. For each run, reconcile record counts, principal, interest and fee balances per account, arrears status and GL totals against the source system and the finance team's figures. Agree tolerances with finance before the first run and investigate every account outside them.

Product testing needs its own plan: compare generated schedules with expected values from the credit policy, test backdated transactions and reversals, run Close of Business across several simulated days, and confirm that payments, balances and journal entries agree. Automate these tests, since every upgrade needs them.

Hosting, availability and the nightly run

Fineract is a Spring Boot application on a relational database. Most availability work sits in the database and the batch design.

ConcernApproachCheck
DatabasePostgreSQL is the recommended database; MySQL and MariaDB are deprecated. Run PostgreSQL with replication, point-in-time recovery and monitored storage.A failover and a point-in-time restore have both been rehearsed.
Instance rolesInstances can run as read, write or batch instances. Keep batch work off API instances, and give read instances a read-only datasource.A batch run does not push API latency past agreed limits.
Close of BusinessCOB is a Spring Batch job that large portfolios can partition across a manager and workers coordinated through ActiveMQ or Kafka. Write calls against a loan in process trigger an inline COB run or are rejected.COB finishes inside the batch window on a production-sized test portfolio, and loans left locked raise an alert.
Multi-tenancyEach tenant has its own database, registered in a tenants database and selected per request with the Fineract-Platform-TenantId header. Tenant database passwords are encrypted with a master password.The master password sits in your secrets manager, and tenant isolation has been tested.

Security hardening and access

Change the default administrator credentials first and remove unused accounts. Basic authentication is on by default, and OAuth2 and two-factor authentication are configuration options. Connect staff logins to your identity provider through OAuth2 where your release supports it, and give each API client its own narrowly scoped credentials.

Fineract enforces HTTPS by default with a self-signed development certificate, so production deployments usually terminate TLS at a managed proxy or gateway. Restrict the permissive CORS defaults, enable HSTS, and turn on maker-checker for disbursements, write-offs, product changes and permission changes.

Encrypt database storage and backups, limit database access to the application and named administrators, and forward application and audit logs to your SIEM. DeployOpen can run penetration testing of the API and staff interfaces before go-live.

Fineract operating ownership

A core banking platform needs named owners for the platform, the products, the ledger and the controls around them.

Platform team

  • Runs instances, the database and message brokers.
  • Monitors COB duration, failed jobs and locked loans.
  • Rebuilds custom modules for each release.

Finance

  • Owns the chart of accounts and GL mapping.
  • Reconciles daily GL balances with bank statements.
  • Signs off accounting changes.

Product and credit

  • Owns products, charges and delinquency rules.
  • Runs new products through the regression suite.
  • Retires products closed to new accounts.

Security and compliance

  • Reviews roles, maker-checker and privileged users.
  • Tracks security advisories and upgrade timing.
  • Keeps evidence for audits and regulators.

Fineract implementation questions

Which version should we run?

Official releases are created quarterly, and the project site marks older lines end of life; at the time of writing 1.15.0 is the current stable release. Plan a regular upgrade cycle and test each release against your products, custom modules and integrations.

How do upgrades work?

Read the release notes, rebuild custom modules against the new version, restore a copy of production into staging, let Liquibase apply the schema changes, and run the regression suite, including schedule comparisons and several COB days. Take a database snapshot before upgrading production.

What should backups cover?

The tenants database and every tenant database with point-in-time recovery, configuration scripts, custom module builds, and the master password in your secrets manager. Rehearse restoring one tenant as well as the whole platform.

Can Fineract meet our regulator's expectations?

Fineract provides accounting, maker-checker and audit records, but meeting your obligations depends on your controls, reporting and operating model. Confirm requirements with your compliance function. DeployOpen supports readiness work and does not issue audit reports or certifications.

Scope and handover

Effort depends on the number of products and their complexity, the accounting model, how many integrations are needed, whether a legacy migration is in scope, portfolio size for COB, tenancy and availability targets. Product design and migration reconciliation usually take longer than the platform build.

DeployOpen runs discovery with your credit, finance and operations teams, configures products and accounting as code, builds custom modules and integrations, migrates and reconciles data, deploys and hardens Fineract in your infrastructure, and supports go-live. Handover includes product and GL specifications, the configuration repository, custom module source, migration reconciliation records, COB and upgrade runbooks, and the regression suite.

Sources and further reading

More on Apache Fineract

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.