Skip to main content

Confirm Loan Offer (Staff-Initiated)

Overview​

Fetches the borrower's salary history from Remita, computes a DTI-based loan offer, and persists a Draft RemitaLoanRequest that can be tracked through the normal approval workflow. This is a staff-initiated operation that does not require a customer CIF — the loan request is created with CIF = "STAFF_REQUEST".

The computed loan offer uses 70% of the 3-month minimum salary average (i.e., the bottom 3 salary payments out of the full history) as a conservative, risk-adjusted offer amount.

Command Details​

  • Command: ConfirmLoanOfferByStaffCommand
  • Type: Command (write operation)
  • Route: POST /api/Remitta/confirmloanofferbystaff (or via the unified BPM endpoint)

API Endpoint​

POST /api/bpm/cmd

Request Structure​

FieldTypeRequiredDescription
$typestringYesMust be ConfirmLoanOfferByStaffCommand
accountNumberstringYesBorrower's bank account number
bankCodestringYesCBN bank code for the borrower's bank
bvnstringNoBorrower's Bank Verification Number
firstNamestringNoBorrower's first name
lastNamestringNoBorrower's last name
middleNamestringNoBorrower's middle name
phoneNumberstringNoBorrower's mobile number
useMobileNumberForSearchboolNoSearch by phone number instead of BVN (default: false)
authorisationChannelstringNoRemita authorisation channel (default: "USSD")
Search strategy

Remita supports three lookup strategies (applied in this priority order):

  1. Mobile number search — if useMobileNumberForSearch: true and phoneNumber is provided
  2. BVN search — if bvn is provided (along with name and account details)
  3. Account number search — fallback using accountNumber + bankCode only

Try It Out​

POST/api/bpm/cmdConfirmLoanOfferByStaffCommand
Request Body
Minimal request

Only accountNumber and bankCode are required. Remita will look up the salary history using the account number alone. Provide bvn, firstName, lastName, and middleName for a more precise BVN-based lookup, or set useMobileNumberForSearch: true with a phoneNumber to search by mobile.

Full request example (BVN-based lookup)​

POST/api/bpm/cmdConfirmLoanOfferByStaffCommand
Request Body

Response Structure​

Success:

{
"isSuccessful": true,
"statusCode": "00",
"message": "Loan Offer retrieved successfully",
"data": {
"id": 42,
"requestId": "1742641200000/1742641200000",
"accountNumber": "0012345678",
"bankCode": "058",
"applicationDate": "2026-03-22",
"customerName": "John Doe",
"companyName": "Acme Corporation",
"latestSalaryAverage": 450000.00,
"latestSalaryMaximum": 480000.00,
"latestSalaryMimumum": 420000.00,
"computedLoanOffer": 294000.00,
"installmentFeeRateDesc": "Loan Repayment",
"salaryPaymentDetailsList": [
{
"paymentDate": "2026-02-25",
"amount": 450000.00,
"accountNumber": "0012345678",
"bankCode": "058"
},
{
"paymentDate": "2026-01-25",
"amount": 480000.00,
"accountNumber": "0012345678",
"bankCode": "058"
},
{
"paymentDate": "2025-12-25",
"amount": 420000.00,
"accountNumber": "0012345678",
"bankCode": "058"
}
],
"loanHistoryDetails": []
}
}

Salary history not found:

{
"isSuccessful": false,
"statusCode": "01",
"message": "No salary history found for the provided account details."
}

How the Loan Offer is Computed​

StepFormula
Fetch salary historyCall Remita salary history API with provided account/BVN details
Sort paymentsOrder all salary payments ascending by amount
Take bottom 3Use the 3 lowest payments as the conservative baseline
Compute baseline averageAverage of those 3 payments
Apply DTI capMultiply by 70% to get the safe repayment-to-income ratio
Round to 2 decimal placesFinal computedLoanOffer
note

latestSalaryMimumum (note: original Remita field name has a typo — "Mimumum") reflects the minimum salary payment across the full history, while computedLoanOffer uses the bottom-3 average for a more conservative offer.

Next Steps​

After receiving a loan offer, continue the loan lifecycle:

  1. Create Loan — Create a formal loan request using the offer details
  2. Submit for Approval — Submit the Draft loan for review
  3. Approve Loan — Approve the submitted loan request
  4. Activate Mandate — Activate the Remita salary deduction mandate
  5. Disburse Loan — Transfer funds to the borrower's account