Periodic Accrual for Loans

Target release
Document statusDRAFT
Document owner 


Financial Institutions may close their accounting books periodically and hence want to know the status of the accrued incomes and expenses as of the particular date.

Today, for Accounting Type as "Accrual (Periodic)", the accrual accounting happens in Mifos on the date a payment is due. This will be enhanced so that the organization can

a) recognize income/expenses periodically for loans (as specified as a configuration):


b) recognize income/expenses as on a particular date for loans (which will be manually specified when invoking the accrual job).

Mifos will continue to accrue income/expense for loans on the dates on which they fall due. There will not be any change to this functionality.

Background and strategic fit

This feature will allow Mifos to cater to standard accounting procedures followed by larger Financial Institutions and move towards making Mifos a more accepted core banking solution.

Requirements/User Stories

#TitleUser StoryImportanceNotes
1Set accrual accounting frequencyAs a head accountant, I wish to specify how frequently accrued income and expenses will be recognized in accountingMust have 
2Automatic periodic accrualAt the frequency specified by the head accountant, Mifos internally invokes a batch job that will take the current date as input and recognize all unrecognized income and expenses for loans till this dateMust have 
3Manual accrualAs a head accountant, I wish to manually invoke the accrual job as on a specific date to recognize all income and expenses for loans till this dateMust have 

Business Rules

The definition of periodicity of accrual will be applied to the whole Mifos installation (i.e. it is organization wide and not restricted to specific products).

Mifos should support accrual periodicity of the following:

     - yearly - on 31st March

     - half yearly - on 30th June and 31st Dec

     - quarterly - on 31st March, 30th June, 30th Sep and 31st Dec

     - monthly - on last day of month

     - on 25th of every month

     - fortnightly, on second Thursdays

     - weekly on Saturdays

     - daily


The following attributes will be captured for "Accrual Setup" (under Accounting)

Accrual Type

Automatic or


Automatic - means will be invoked automatically on specified periodicity

Manual - will be invoked by an accountant or head accountant by manually specify a date and invoking the accrual job

This is set for the organization and not for a specific product. Defaulted to Manual.

Accrual PeriodicityMonthly, weekly, quarterly etc.

Only specified when Accrual Type = Automatic

Should support above frequencies


Security and Permissions

New permissions to be introduced for:

  • Manually invoking the "Period-Ending Accrual for Loans" job
  • Maintaining the Accrual Set-up parameters

Mifos Functionality Enhancements

New Screens

  • Accrual Setup (under Accounting) - to maintain the above attributes

Changes to Existing Screens


Changes/Enhancements to Batch Jobs

Existing "Add Accrual Transactions" batch job to continue as it is. No changes to this.

A new batch job which will do the following for all active loans:

  • Calculate the apportioned unpaid income for:
        Period start: Last time any income was recognized
        Period end: date which is given as input (includes the date given)
  • Pass journal entries for recognizing this income - the entries will remain the same as what is specified under: Accrual Accounting- Techno functional Spec (under section "Basic Scenario" under "Automated System Accrual Event")
  • Nothing to be done for expenses - since the only expense associated to a loan account is the loans written off which can't be accrued (till the time Mifos starts supporting automatic loan loss provisions - which is envisioned to be done manually as of now)
  • If the income to be recognized changes due to any backdated entries made - then the job will cancel existing accounting entries that recognize income and will pass new entries with corrected amounts

This new batch job will be invoked at the frequency specified in the "Accrual Setup" (under Accounting)

Changes/Enhancements to Accounting Entries


User interaction and design


Exception Handling

  • If income was recognized already for a loan account on or after the date specified, and there is no new backdated transaction for this account, then the batch job will skip this loan account.
  • It should be possible to re-run the batch job for a given date (for example: after making back dated entries, accountants wants to re-run the job for a given date)




An API to maintain the "Accrual Setup" attributes

An API to invoke the periodic accrual batch job as on a specified date


Accrual Type to be defaulted to "Manual" during upgrades


Database changes 

  1. Modifications to Loan Account(“m_loan”)

    Column NameData TypeDescription
    accrued_tillDateto identify till which date accruals are done

Use cases:

  1. calculate accrual amount till specified date
    1. system will calculates accrual amount per one day first
    2. then apply this  to number of days between last accrued and till the date specified/periodic date  
    3. if days on month set as 30, then in calculation 30 days will be consider even for 31 days(on 30th day and 31st day accrual amount will be same)
  2. batch job, which accrues based on periodicity mentioned in batch job settings 
  3. API for capturing accruals till the date specified(Manual) . date must not be in future.
  4. if there is any difference in amount because of back dated entry, system will do accrual or reversal of accrual for that varied amount. 



Below is a list of questions to be addressed as a result of this requirements document:

Confirm that the handling of backdated transactions as described above is accurate from an accounting perspectiveTBD

Out of Scope