Loan rescheduling
Â
Â
Overview
We have identified are 4 basic scenarios when rescheduling a loan:Â
- Extension of the loan term by adding extra instalments to the loanÂ
- Change of the due date of each of the future instalments by X days (to allow shifting of days)
- Give the client an extra grace period of X instalments to catch up on repayments
- Adjust the interest rate for the remainder of the loan.
In certain situations one or more of the above could apply at the same time, such as extending the loan term, and giving a grace period at the same time. The different scenarios might or might not affect the interest calculation on the loan. So in cases whereby the loan term is extended it might be still using the same original Principal and interest amount , but there should also be a possibility of the interest increasing.
Considerations:
- We can already do a very simplistic form of rescheduling, by waiving outstanding interest on a loan. Although this is not rescheduling perse it will still be available to cover (or extend) scenarios described for this topic
- The undo disbursement feature can still be used to correct basic mistakes on loans that have just been disbursed. For instance loan term of 4 weeks was selected instead of 4 months etc. This obviously has the trade-off for the user that they need to re-enter payments. But the expectation is that this is normally identified very early on in the loan schedule.Â
Background and strategic fit
Managing the portfolio in arrears is a very difficult tasks for MFI's in which they require a lot of tools that increase chances of recovery on non performing loans. Being able to reschedule loans by allowing clients to repay at a slower pace, or granting an extra grace period greatly increases chances of recovery. Many MFI's have already requested this feature, and other systems actively offer it as well.
Â
Requirements/User Stories
# | Title | User Story | Importance | Notes |
---|---|---|---|---|
1 | Extend loan repayment period | As a Branch Manager, I want to extend the loan term for a client who has difficulty to repay by a number of instalments | Must Have | Â |
2 | Change repayment date | As a loan officer, I want to change the day on which payments are due for a client when they change meeting days | Must Have | TBD whether the actor is the Loan officer or the BM as well. |
3 | Add a mid-loanterm grace period | As a Branch Manager, I want to add a grace period to an existing loan schedule to allow clients to catch up on repayments | Must Have | Grace period can be either on P, or P+I |
4 | Adjust interest rate for remainder of loan | As a Branch Manager, I want to adjust the interest rate for the remainder of the loan to allow clients to catch up on repayments | Nice to Have | Right now only for future instalments to avoid reprocessing of payments and issues arising around accounting (close periods etc) |
5 | Revert to original schedule | As a Branch Manager, I want to be able to revert a loan to the original schedule, to fix any mistakes made by clients | Must Have | Another solution: Undo reschedule feature, that would remove it again. |
6 | View rescheduled loans | As a Branch Manager, I want to be able to see loans that have been rescheduled and who performed the reschedule | Must Have | Â |
7 | View previous schedules | As a loanofficer, I want to be able to view previous loan schedules for a loan that has been rescheduled | Must Have | Â |
Â
Business Rules
Attributes
Loan
Attribute | Description | Notes |
---|---|---|
Rescheduledon_date | Date | Â |
Rescheduledon_userID | UserID who approved the reschedule | Â |
Â
For Loan rescheduling request
Attribute | Description | Notes |
---|---|---|
LoanID | Loan ID | Â |
Status | Status of the reschedule request | (Similar Enum to loans etc) |
from installment | Reschedule starting at this instalment # | Â |
Grace on Principal | Integer describing how many instalments will be added with 0 principal | Instalments will be added straight after the from instalment. |
Grace on Interest | Integer describing how many instalments will be added with 0 interest | Grace on P and I will be combined into 1 if applicable. |
Change instalment date | New Date for the selected instalment | Used to reschedule rest of the loan from this instalment forward |
Extra Terms | Integer for # of extra terms to add at end of schedule | Â |
Interest Rate | New Interest rate for the loan | Applied to the remainder of the loan. |
Recalculate interest? | Boolean , always true if Interest is entered. | If true then the new schedule will recalculate the interest using the P outstanding at starting instalment, and the new end-date of loan. |
Reschedule_Reason | CodeValue | Link to Code listing reasons for rescheduling |
Reschedule_Comments | Free text | Free text description to be used in addition to the CV. |
Submitted On | Date | Â |
Submitted By | UserID | Â |
Approved On Date | Date | Â |
Approved By | UserID | Â |
Declined On | Date | Â |
Declined By | UserID | Â |
Â
Loan Schedule History
Attribute | Description | Notes |
---|---|---|
Loan Reschedule ID | ID Of the reschedule request | Â |
Loan_ID | Â | Â |
From Date | Â | Â |
Due Date | Â | Â |
Instalment # | Â | Â |
Principal | Â | Â |
.... | This item just follows same attributes as current loan schedule table. | Â |
Security and Permissions
The feature should follow regular security rules, so permissions required for:
- Ability to do maker/checker on the reschedule feature.
- Creating a request (Maker)
- Approving (Checker)
- Both can be done in 1 step if maker-checker is off for the feature.
Mifos Functionality Enhancements
TBD
Â
New Screens
TBD
Changes to Existing Screens
TBD
Â
Changes/Enhancements to Batch Jobs
TBD
Changes/Enhancements to Accounting Entries
No changes
User interaction and design
TBD
Exception Handling
Exceptions should be raised in cases whereby:
- Instalments that have been completed before are adjusted
- Instalments that fall in closed accounting periods are adjusted
- Account transfers have been done after date of (proposed) adjustment
Reporting
No new reports or changes to existing reports needed.
APIs
- /Loans/{loanId} needs to be adjusted to reflect that the loan was rescheduled and at what time
- /rescheduleloans - New API to cover creation, approving etc.Â
- /rescheduleloans/{id} view current and historical schedule for loan incl params
- /rescheduleloans/{id}?command=approve/declineÂ
- /rescheduleloans/{id}?command=undo
Notes
TBD
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Question | Outcome |
---|---|
What do we do with product level limits, such as max loan term, min/max interest etc. Proposal is to ignore them, as this is already a feature for exception cases. | |
Do we want to store historical schedules in the same loan schedule table? This might have negative effects on performance of that table. It also avoids the need to go in and change all areas of code (reports/jobs/loans package) that use this code. | Â |
Right now the reschedule is a simple maker/checker workflow, do we want to extend it to the more extensive, create / pending approval / approved / declined workflow? | Â |
We have the ability to classify loans as NPA, do we need to automatically do this for restructured loans? (some regulations do require this) | Â |
When storing the old schedule for comparison, do we also copy the derived fields (paid etc) ? | Â |
Do we allow loan repayments backdated before date of reschedule? | Â |
In some banking regulations only one reschedule per loan is allowed (to avoid it being used to cover long debts, and force those into write-offs), do we also want to incorporate that restriction? | Â |
Â
Out of Scope
- Flexible loan schedules. Even though the feature might re-use a lot of code from this feature we do not want to implement it straight away to reduce complexity. At the same time this process should take place before creating loan, rescheduling is after the disbursement.
- Rescheduling of interest on past instalmentsÂ
- Rescheduling of instalments that have already been fully or partially paid.
Â
Â