Installment Schedule Notification
Use Case
Use this webhook to sync the latest loan state from the lender. It is sent after loan activation and after each repayment allocation.
TRIAL integrations send the loan summary object only. STANDARD integrations extend the same notification with the full installment array.
Integration: TRIAL + STANDARD
Request
POST /lender/open/notify/installment-schedule
See Lender Notification API Overview for base URL, request headers, HMAC signature, common request fields, idempotency, and response format.
Request Body
The request body includes the Common Request Fields plus the fields below.
| Parameter | Type | Required | Description |
|---|---|---|---|
| lenderReferenceId | Stable application or loan identifier generated by the lender. See Loan Identification. | ||
| contractNumber | Conditional | Contract number. Secondary reference for reconciliation against contract documents. | |
| loan | Latest loan summary. See Data of loan. | ||
| installments | Conditional | Full installment schedule. Required for STANDARD; not required for TRIAL. See Data of installments. |
Data of loan
TRIAL fields
These fields are required for all integrations.
| Attribute | Type | Required | Description |
|---|---|---|---|
| loanStatus | Current loan status. Values: ACTIVE, OVERDUE, PAID, TERMINATED, CANCELLED. | ||
| disbursedAmount | Total principal disbursed to customer in VND. | ||
| outstandingDueAmount | Total amount currently due, including overdue and current period principal, User Service Fee, and Late Payment Fee. | ||
| nextDueDate | Next scheduled due date. Format: yyyy-MM-dd. Send null when the loan is fully paid. | ||
| pendingAllocationAmount | Amount received from customer but not yet allocated to debt. | ||
| virtualAccount | Virtual account details for customer repayment. See Data of virtualAccount. | ||
| lastUpdatedDatetime | Latest update time from the lender. Format: yyyy-MM-ddTHH:mm:ss+0700. |
STANDARD additional fields
These fields are required for STANDARD integrations. TRIAL integrations can also optionally send these fields if available.
| Attribute | Type | Required | Description |
|---|---|---|---|
| paidAmount | Total amount paid by customer to date in VND. Equal to the sum of all allocatedTotal across all installments. | ||
| outstandingPrincipal | Total remaining principal balance in VND. | ||
| overduePrincipal | Principal amount currently past due, where DPD > 0, in VND. | ||
| overdueServiceFee | User Service Fee amount currently past due in VND. | ||
| accruedPenalty | Late Payment Fee accrued to date and not yet paid in VND. | ||
| dpd | Days Past Due at the time of this notification. |
Data of virtualAccount
| Attribute | Type | Required | Description |
|---|---|---|---|
| accountNumber | Virtual account number for customer repayment. | ||
| accountName | Conditional | Virtual account name or beneficiary name, if available. | |
| bankCode | Conditional | Bank code, if available. | |
| bankName | Conditional | Bank display name, if available. |
Data of installments
The installments array is STANDARD only. TRIAL integrations do not include it.
| Attribute | Type | Required | Description |
|---|---|---|---|
| installmentId | Installment ID generated by the lender. | ||
| installmentNumber | Installment sequence number, starting from 1. | ||
| dueDate | Scheduled due date. Format: yyyy-MM-dd. | ||
| remainingAmount | Remaining unpaid amount for this installment in VND. | ||
| status | PENDING, PARTIALLY_PAID, PAID, OVERDUE, CANCELLED. | ||
| originalPrincipal | Original scheduled principal for this installment in VND. | ||
| originalServiceFee | Original scheduled User Service Fee for this installment in VND. | ||
| paidPrincipal | Conditional | Principal paid for this installment to date in VND. Required if lender can provide payment breakdown. | |
| paidServiceFee | Conditional | User Service Fee paid for this installment to date in VND. Required if lender can provide payment breakdown. | |
| paidPenalty | Conditional | Late Payment Fee paid for this installment to date in VND. Required if lender can provide payment breakdown. | |
| paidDatetime | Conditional | Datetime payment was completed. Required when status = PAID. Format: yyyy-MM-ddTHH:mm:ss+0700. |
Example Requests
TRIAL after activation
{
"requestId": "WH_REQ_202505300003",
"fundiinApplicationId": "APP1234567890",
"lenderCode": "LENDER_A",
"requestingDatetime": "2025-05-30T10:15:00+0700",
"lenderReferenceId": "LN20250530001",
"contractNumber": "CNTR20250530001",
"loan": {
"loanStatus": "ACTIVE",
"disbursedAmount": 3000000,
"outstandingDueAmount": 0,
"nextDueDate": "2025-06-30",
"pendingAllocationAmount": 0,
"virtualAccount": {
"accountNumber": "9901234567890",
"accountName": "NGUYEN VAN A",
"bankCode": "VCB",
"bankName": "Vietcombank"
},
"lastUpdatedDatetime": "2025-05-30T10:10:00+0700"
},
"installments": null
}
STANDARD after repayment
{
"requestId": "WH_REQ_202507150003",
"fundiinApplicationId": "APP1234567890",
"lenderCode": "LENDER_A",
"requestingDatetime": "2025-07-15T09:15:00+0700",
"lenderReferenceId": "LN20250530001",
"contractNumber": "CNTR20250530001",
"loan": {
"loanStatus": "ACTIVE",
"disbursedAmount": 3000000,
"outstandingDueAmount": 0,
"nextDueDate": "2025-07-30",
"pendingAllocationAmount": 0,
"virtualAccount": {
"accountNumber": "9901234567890",
"accountName": "NGUYEN VAN A",
"bankCode": "VCB",
"bankName": "Vietcombank"
},
"lastUpdatedDatetime": "2025-07-15T09:12:00+0700",
"paidAmount": 1054000,
"outstandingPrincipal": 2084000,
"overduePrincipal": 0,
"overdueServiceFee": 0,
"accruedPenalty": 0,
"dpd": 0
},
"installments": [
{
"installmentId": "INS_001",
"installmentNumber": 1,
"dueDate": "2025-06-30",
"originalPrincipal": 916000,
"originalServiceFee": 138000,
"remainingAmount": 0,
"status": "PAID",
"paidPrincipal": 916000,
"paidServiceFee": 138000,
"paidPenalty": 0,
"paidDatetime": "2025-07-15T09:08:00+0700"
},
{
"installmentId": "INS_002",
"installmentNumber": 2,
"dueDate": "2025-07-30",
"originalPrincipal": 916000,
"originalServiceFee": 138000,
"remainingAmount": 1054000,
"status": "PENDING",
"paidPrincipal": 0,
"paidServiceFee": 0,
"paidPenalty": 0,
"paidDatetime": null
},
{
"installmentId": "INS_003",
"installmentNumber": 3,
"dueDate": "2025-08-30",
"originalPrincipal": 916000,
"originalServiceFee": 138000,
"remainingAmount": 1054000,
"status": "PENDING",
"paidPrincipal": 0,
"paidServiceFee": 0,
"paidPenalty": 0,
"paidDatetime": null
}
]
}
Response
See Common Response.