Mifos X Database

 Mifos X ER diagram - All table (pdf)

Core MifosX Database Tables (pdf)

MifosX Application Users, Roles and Permissions Tables( pdf)

MifosX Code, Enum, Notes and CurrencyTables (pdf)

MifosX Reporting MetaData Tables (pdf)


Table NameDescription
Core Tables 
m_officeOffices and Branches. Hierarchical structure. There is a 'hierarchy' field which has a dot notation e.g. '.3.2.' is the value for office_id 2 which has a parent office_id of 3 and the parent of 3 is the default top office with a hierarchy of '.' - if you order office records by hierarchy field they are returned in the tree structure of the hierarchy.

Allow recording of office transactions into and out of an m_office. It can be used to set opening balances e.g. someone funded the Head Office with $25,000 US. It can be used to show the Head Office giving and receiving funds from branches. It can be used to declare incidental costs within a branch e.g. $100 US for furniture.


Note: This table is used for Heaven Family MFI, and in general need not be applicable to others.

, m_staffAll the MFI's staff. Some (or all) of these will have logins for Mifos X (m_app_user). Currently, very lonely as development recently started.
m_groupGroups, Centers
m_group_clientAll formation of a group by adding clients. A Client can be in more than one group at one time. (development recently started)
m_chargeFees, Penalties and Charges - still under development - may need to have separate tables for fees, penalties and charges - may not. Currently scope to all flat and % fees for loans.
m_product_loanDefines a loan product.
m_product_loan_chargeDefines the list of m_charges associated with loan product.
m_fundIdentifies a fund. And so can be used for seeing how funds have been 'disbursed'. Can be associated with loan products and loans.
m_loan_chargeList of charges associated with a loan.
m_loan_transactionLoan Disbursals, Repayments, Waivers and Adjustments.
m_loan_repayment_scheduleLoan schedules (installments for loans).
m_product_savingsDefines a savings product (very lonely at the moment, doesn't even have its m_savings table set up - still under development)
m_product_depositDefines a deposit account. The current scope is Fixed Term Deposit Accounts and Certificate of Deposit Accounts.
m_deposit_accountDeposit account - relates to m_product_deposit

Deposit account transactions - deposits, withdrawals and interest postings

m_client_identifierIdentifiers associated with a customer
m_documentMetadata of documents associated with various entities (clients, loans, client Identifiers, staff)
Application Users, Roles & Permissions Tables 
m_appuserMifos X application users (logins)
m_roleApplication roles
m_appuser_roleRoles associated with an application user
m_permissionApplication permissions
m_role_permissionPermissions associated with a role.
Codes, Enums, Notes & Currency Tables 
m_codeUser definable codes. Right now there are no user defined codes in the mifos X database. But there will be e.g. gender, title. Some 'user-defined' code values may be shipped with the database but these values can be changed and added to.

User defined values for m_code. The code field will typically save the m_code_value.id. Example SQL

select cv.code_value as Occupation from m_client c left join m_code_value cv on cv.id = c.occupation_id


Database version of Java enums. Not linked to Java code. For reporting only. e.g. If I want to report on loan statuses, I see what enums are used and put values on this table. Example SQL

select l.id, st.enum_message_property as Status from m_loan l left join r_enum_value st on st.enum_name = "loan_status_id" and st.enum_id = l.id

m_currencyList of currencies and currency data.
m_organisation_currencyList of currencies that can be used within the MFI (organisation). Probably will be put in the "On the way out Tables" list at some point as the same functionality can be achieved by adding a "can_use" flag onto m_currency.
m_noteGeneral note table. Other tables such as m_client, m_loan, m_loan_transactions can have notes associated with them.
ref_loan_transaction_processing_strategyThe 'strategy' to be applied when receiving loan repayments e.g. What order to pay fees, penalties, interest and principal.
Reporting MetaData TablesFunctionality related to these tables runs Pentaho reports and returns Pentaho output (html, pdf, excel, csv formats). Also runs "screen-based" reports/charts where the Java API returns a generic resultset output which is processed by a reporting JQuery plugin based on JQuery Data Tables
stretchy_reportData for Pentaho reports, screen-based reports and charts (includes SQL if not Pentaho)
stretchy_parameterParameter definition data (may include SQL)
stretchy_report_parameterParameters for Reports
rpt_sequenceUtility table (just has an id value) used to create certain reports... not important. Might be put in the "On the Way Out" list at some point.
Registered External Data Tables 
x_registered_tableContains a list of registered external tables (currently MySql in same database as Mifos X schema) and the Mifos X core table to which they are associated. Allows the external table's data to be restricted to the user hierarchy and CRUD permissions to be managed.