Table of Contents |
---|
Introduction:
A Loan provisioning is an expense that reserved for default/bad performing loans/credits. It is an amount set aside in the event of that loans defaults. or It is an expense set aside as an allowance for bad loans or credits. Loan loss provision is also known as the "Valuation Allowance" or "Valuation Reserve". It is also known as "Allowance for Loan Loss"
In any group of loans, banks expect there can be some loans that do not perform as expected. These loans may be delinquent on their repayments or default the entire loan. This can create a loss to the bank on expected income. Therefore, banks can set aside a portion of the expected repayments from all loans in its portfolio to cover all or a portion of the loss. In the event of loss or in critical situations banks can use the amount set aside to cover the loss instead of taking a loss in its cash flow. This loan loss reserve acts as an internal insurance fund.
Example:
Let's assume MFI/Bank ABC has made $ 100,000 of loans to different individuals and companies. Though ABC MFI/Bank works very hard to ensure that it lends to only those people who can repay the total amount on time, naturally some may default, some may fall behind and for some ABC MFI/Bank has to renegotiate.
MFI/Bank ABC estimates that 1% of loans amount that is $ 1000 will never comeback. So this $ 1000 is ABC MFI's/Bank's loan loss reserve and it records this amount as negative number on the asset portion of its balance sheet.If and when MFI/Bank ABC decides to write all or a portion of a loan off, it will remove the loan from its asset balance and also remove the amount of the write-off from the loan loss reserve. The amount deducted from the loan loss reserve may be tax deductible for MFI/Bank ABC.
How to define a Loan Provision:
Any loan can be categorized into 4 types and the definition of these categories changes country to country. For example
...
- For the loans falls under Standard category no need to have any provision or management can take the decision to keep 5% of the loan amount aside
- For the loans falls under Sub-Standard category, the management can decide to keep 20% of the loan amount aside
- For the loans falls under Doubtful category, the management can decide to keep 50% of the loan amount aside
- For the loans falls under Loss category, the management can decide to keep 100% of the loan amount aside
Loan Loss Provision Implementation in Mifos X:
We need to create a table to keep all loan provision categories.The table name is 'm_provision_category''. The table definition is defined below. The category names will vary based customer to customer.
...
While editing the loan product, persisted provision details will be restored in the edit loan product screen
Provision Calculation For Loan:
By using the following query we can get all active loan ids along with product id, overdue in days, outstanding loan balance, provision category id, provision percentage, due date
...
Name | Datatype | Length | Remarks |
---|---|---|---|
id | BIGINT | 20 | PRIMARY KEY and AUTOINCREMENT |
currency_code | BIGINT | 20 | FOREIGN KEY m_currency.id |
office_id | BIGINT | 20 | FOREIGN KEY m_office.id |
product_id | BIGINT | 20 | FOREIGN KEY m_loan.id |
category_id | BIGINT | 20 | FOREIGN KEY m_provision_category.id |
overdue_in_days | BIGINT | 20 | DEFAULT 0 |
loan_outstanding_balance | BIGINT | 20 | DEFAULT 0 |
amount_to_be_reserved | BIGINT | 20 | DEFAULT 0 |
created_by | BIGINT | 20 | FOREIGN KEY |
created_on | DATE | NOT NULL | |
modified_by | BIGINT | 20 | FOREIGN KEY |
modified_on | DATE |
Changes required in existing Classes:
- While creating any loan product template, provision categories should be added to the response object. For this
- org.mifosplatform.portfolio.loanproduct.data.LoanProductData should have one more instance variable to hold provision categories
- New interface org.mifosplatform.organisation.provisioning.service.ProvisionCategoriesReadPlatformService should have a method to retrieve all provision categories.
- The method name is List<EnumOptionData> retrieveProvisionCategories() ;
- Provision Categories should retrieved and set to LoanProductData in org.mifosplatform.LoanProductsApiResource.handleTemplate(final LoanProductData productData)
- Client application should read response param "provisioncategoies" if available it should display provision categories as shown in create product mock up screen
- While creating a loan product, the provision categories along with min age, max age, percentage to provision should be read and saved into DB. For this
- New entity class org.mifosplatform.organisation.provisioning.domain.LoanProductProvision for 'm_loanproduct_provision_category' should be added
- org.mifosplatform.portfolio.loanproduct.domain.LoanProduct should have set of LoanProductProvision
- Client application should send loan product provision categories as part of the request params while creating a loan product. The parameter name is 'loanproductprovisons'
- Provision categories should be read and added in org.mifosplatform.portfolio.loanproduct.domain.LoanProduct.assembleFromJson(...)
- While retrieving a loan product (s), we need to retrieve the provision categories and associate with the Loan Product object (s). For this
- org.mifosplatform.portfolio.loanproduct.service.LoanProductReadPlatformServiceImpl.retrieveLoanProduct(Long loanProductId) should be modified to associate provision categories
- org.mifosplatform.portfolio.loanproduct.service.LoanProductReadPlatformServiceImpl.retrieveAllLoanProducts() should be modified to associate provision categories
- org.mifosplatform.organisation.provisioning.service.ProvisionCategoriesReadPlatformService should expose a method to retrieve the provision categories based on loan product id
- While updating a loan product (s), we need to update the provision categories associated to that loan product (s). For this
- org.mifosplatform.portfolio.loanproduct.service.LoanProductWritePlatformServiceJpaRepositoryImpl.updateLoanProduct(...) should be modified to validate and update loan product provision categories
Loan Loss Provision API(s)
1) https://serveraddress:port/mifosng-provider/api/v1/loanprovision
Request Parameters: "Date:date on which report to be generated, createjournalentry=true/false, regenerateprovisions:true/false, offset=number, limit=number", Method: GET
Description: This API should be used to generate loan loss provision entries. Date request parameter indicates on which the provision entries should be created. If createjournalentry parameter is true, then loan loss provision details will be added into journal entry. Before creating new journal entries, it will reverse previous journal entries if they present. If createjournalentry is false then it will not create the journal entries. If regenerateprovisions true, then it will delete previous provision entries if present and it will create new provision entries. If regenerateprovisions is false, it will return previous provision entries if present.The request parameters offset and limit are used for the pagination. This method will return list of provision entries in JSON data format
2) http://serveraddress:port/mifosng-provider/api/vi/loanprovision/list
Request Parameters; "offset=number, limit=number', Method: GET
...