Skip to content

Apache Fineract Overview

Apache Fineract is an open-source core banking platform governed by the Apache Software Foundation. It powers loan portfolios, savings accounts, client management, and financial accounting for banks, microfinance institutions, credit unions, SACCOs, and fintech companies in over 80 countries.

The platform was originally developed by Mifos Initiative for microfinance institutions and later donated to the Apache Software Foundation, where it has been continuously developed by a global community of contributors, financial institutions, and technology companies.

What Fineract Is

Fineract is a system of record for financial institutions. It stores and manages the authoritative data about loans, savings, clients, and accounting - the data that regulators, auditors, and management rely on. It is not a general-purpose database or a workflow engine; it is purpose-built for the data structures, business rules, and compliance requirements of formal financial services.

At its core, Fineract models the lifecycle of financial products:

  • A loan moves from application through approval, disbursement, repayments, and closure
  • A savings account moves from application through approval, activation, deposits, withdrawals, and closure
  • Every state change is recorded with the date, the staff member responsible, and the accounting entries that result

All of this is accessible via a REST API that the web interface, mobile apps, and integrations use as their single source of truth.

Architecture

Fineract is a Java (Spring Boot) application that runs as a single deployable unit. It connects to a relational database (MySQL or MariaDB) for persistence and exposes a REST API over HTTPS.

┌─────────────────────────────────────────────────┐
│                  Clients                         │
│   Web UI (Mifos X)  │  Mobile App  │  API Client │
└─────────────────────┼──────────────┼─────────────┘
                       │              │
                 HTTPS REST API (port 443 / 8443)

┌──────────────────────▼──────────────────────────┐
│              Apache Fineract                     │
│                                                  │
│  Spring Boot application                         │
│  Spring Security (auth + RBAC)                   │
│  Spring Batch (COB / batch jobs)                 │
│  Spring Data JPA (persistence)                   │
│  Liquibase (schema migrations)                   │
└──────────────────────┬──────────────────────────┘

         ┌─────────────┼───────────────┐
         │             │               │
   ┌─────▼────┐  ┌─────▼────┐  ┌──────▼──────┐
   │ Tenant   │  │ Tenant   │  │  Message    │
   │ Store DB │  │ Database │  │  Broker     │
   │(registry)│  │(per tnt) │  │(Kafka/JMS)  │
   └──────────┘  └──────────┘  └─────────────┘

Database: Each tenant (institution) has its own isolated database. A separate registry database (fineract_tenants) stores connection details for each tenant. This is the multi-tenancy model - one application, many independent databases.

Message broker (optional): When the business events system is enabled, Fineract publishes domain events to Kafka or ActiveMQ. This is how external systems (CRMs, accounting software, notification services) are notified of changes in real time.

Batch processing: A separate batch worker process handles nightly COB (Close of Business) processing across the loan portfolio. In small deployments, this runs in the same JVM as the API. In scaled deployments, dedicated worker nodes process COB partitions in parallel.

Core Modules

Loan Management

The most widely used module. Fineract supports a wide variety of loan product configurations:

  • Multiple interest calculation methods: flat rate, declining balance, equal instalments, equal principal
  • Flexible repayment frequencies: weekly, fortnightly, monthly, quarterly, or custom
  • Multiple disbursement tranches
  • Grace periods for principal, interest, or both
  • Overdue charge schedules for late payments
  • Write-off and charge-off workflows
  • Loan rescheduling and restructuring
  • Full double-entry accounting for every loan transaction

All loan logic - repayment schedule generation, arrears calculation, interest accrual - is configured through loan products. A loan product is a template from which individual loans are created.

Savings and Deposits

Savings accounts, current accounts, fixed deposits, recurring deposits, and call accounts are all handled through the savings module. Key features:

  • Configurable minimum balance requirements and dormancy rules
  • Interest posting on configurable intervals and compounding periods
  • Withdrawal limits and frequency controls
  • Fixed deposit and recurring deposit products with maturity dates
  • Full transaction history and statement generation

Client Management

Clients are the individuals, households, groups, or legal entities that hold loans and savings accounts. Fineract supports:

  • Individual clients with a full profile (name, date of birth, external ID, address, identifiers)
  • Groups and centres (the group lending model used in microfinance)
  • Corporate clients
  • Client activation, rejection, and closure workflows
  • Custom fields on every client record via the datatable system

Accounting

Fineract uses double-entry accounting. Every financial transaction - a loan disbursement, a repayment, a savings deposit, an interest posting - generates the corresponding journal entries in the general ledger automatically, based on the accounting rules configured for each product.

The chart of accounts is fully configurable. Standard account types (asset, liability, equity, income, expense) are supported. Accounting rules map product-level events to specific GL accounts, which means a loan officer disbursing a loan never needs to think about accounting - the entries happen automatically.

Reporting

Fineract ships with a library of standard reports covering portfolio performance, arrears, client statistics, and accounting statements. Reports can be run on demand or scheduled for regular delivery. Custom reports can be written as SQL queries or Pentaho report definitions and registered in the system.

The reporting system also exposes a flexible SQL runner that authorised users can use to query any data in the tenant database through the API.

API-First Design

Fineract is API-first: every operation that can be performed through the web interface can also be performed via the REST API. The API is documented with OpenAPI (Swagger) and the interactive Swagger UI is available at every running instance.

This makes Fineract the right foundation for:

  • Mobile banking apps that use Fineract as the back-end system of record
  • Custom web frontends that replace or supplement Mifos X
  • Integration with third-party systems via business events or direct API calls
  • Automation of routine operations (bulk loan creation, batch data import, scheduled report generation)

See the REST API Overview for authentication, request conventions, and common operation patterns. If you're new to the platform, start with the Getting Started guide.

Multi-Tenancy

A single Fineract deployment can serve multiple independent institutions. Each tenant has its own isolated database, its own users, its own products, and its own configuration. Tenants share compute infrastructure but cannot access each other's data.

This architecture is what makes Finecko's managed model viable: one platform serves all customers, each completely isolated from the others. See Multi-Tenancy for the full explanation.

Extensibility

Fineract is designed to be extended without forking the codebase. The main extension points are:

Datatables - attach custom fields to any entity (clients, loans, savings accounts, offices, products) via the datatable API. No code required. See Custom Data Fields (Datatables).

Plugin JARs - drop a JAR into /app/plugins/ to add new Spring beans, REST endpoints, business logic, and event listeners without modifying Fineract's source. See Plugin JAR Extensibility.

Business Events - subscribe to domain events published to Kafka or ActiveMQ to build integrations, notifications, and data pipelines outside Fineract. See Business Events.

Active Development

Apache Fineract is under active development. The Apache Software Foundation publishes releases regularly, with the community contributing bug fixes, new features, performance improvements, and compliance updates. Finecko tracks the official release cycle and applies updates to managed instances as part of the standard maintenance process.

The project is open-source under the Apache 2.0 licence. Source code, release notes, and issue tracking are at github.com/apache/fineract.


Next Steps