Skip to main content

Waive Repayment Installment

Overview​

WaiveRepaymentScheduleInstallmentCommand marks a specific loan repayment installment as Waived. Use this when a borrower has settled an installment through an external channel (cash, bank transfer, mobile money, etc.) and the system's automated NIBSS debit should not be attempted for that installment.

Note: Waiving an installment sets amountPaid = 0 and records the action in the loan's approval history with the reason supplied. It does not cancel any existing NIBSS mandate — mandate management is handled separately.

Command Details​

  • Command: WaiveRepaymentScheduleInstallmentCommand
  • Type: Command (write operation)
  • Authorization: Admin role required

API Endpoint​

POST /api/bpm/cmd

Request Structure​

FieldTypeRequiredDescription
loanRequestIdlongYesID of the loan quote (LoanQuote.Id)
installmentNumberintYes1-based installment number to waive
reasonstringYesReason for waiving (e.g. "Client paid by cash on 2025-09-10")

Try It Out​

POST/api/bpm/cmdWaiveRepaymentScheduleInstallmentCommand
Request Body

Response Structure​

{
"response": {
"isSuccessful": true,
"statusCode": "00",
"message": "Installment 3 has been waived successfully.",
"data": {
"loanQuoteId": 1001,
"installmentNumber": 3,
"dueDate": "2025-11-15T00:00:00Z",
"waivedAmount": 46666.67,
"waivedBy": 42,
"reason": "Borrower paid via bank transfer on 2025-11-10 — reference TRF20251110-98765"
}
},
"responseCode": "00",
"responseDescription": "Success"
}

Validation Rules​

RuleError CodeMessage
Loan not found04"Loan request not found."
Installment not found04"Installment {installmentNumber} not found for this loan."
Installment already paid09"Installment {installmentNumber} has already been paid and cannot be waived."
Installment already waived09"Installment {installmentNumber} has already been waived."

Audit Trail​

Every waiver is recorded in the loan's approval history (LoanApprovalHistory) with:

FieldValue
Action"Installment Waived"
ActionDescriptionFull description including installment number, due date, amount, and reason
CommentThe reason string supplied in the request
ActionDateUTC timestamp of the waiver
ApproverIdID of the authenticated officer who performed the waiver

What "Waived" Means​

AspectBehaviour
statusSet to Waived
paidDateSet to the UTC timestamp of the waiver action
amountPaidSet to 0 (waived, not collected)
Installment counts towards totalAmountPaidNo — amountPaid is 0
Included in outstandingAmount calculationNo — excluded from outstanding balance
NIBSS mandate cancelledNo — mandate management is separate