Event reference
Common envelope for every event (webhook body and poll-API item are identical):
{
"eventId": "evt_01a2b3c4d5e6f7a8b9c0",
"type": "payment.collected",
"occurredAt": "2026-07-23T09:31:00.000Z",
"version": 1,
"lenderCode": "YOURORG",
"sourceLoanNumber": "LN-2026-0001",
"sequence": 3,
"payload": { }
}
Default subscription: case.received, payment.collected, case.closed.
Opt into the rest at onboarding (or later).
case.received
Your pushed case is live in the network.
{ "sourceLoanNumber": "LN-2026-0001", "caseId": "CC-2026-2388ED42", "status": "pending" }
case.assigned
A field partner took the case.
{ "sourceLoanNumber": "LN-2026-0001", "caseId": "CC-2026-2388ED42", "assignedAt": "2026-07-23T06:10:11.000Z" }
visit.completed
A visit was recorded, whatever the outcome (outcome list).
{
"sourceLoanNumber": "LN-2026-0001", "caseId": "CC-2026-2388ED42",
"outcome": "ptp", "visitAt": "2026-07-23T08:45:02.000Z",
"ptpDate": "2026-07-26", "notes": "Will pay after salary credit"
}
payment.collected
Money verifiably received on your rails. Absolute values.
{
"sourceLoanNumber": "LN-2026-0001", "caseId": "CC-2026-2388ED42",
"amount": 3000, "mode": "upi", "reference": "UTR2026072312345",
"totalCollected": 3000, "outstandingAfter": 9500,
"collectedAt": "2026-07-23T09:30:12.000Z"
}
Timing: Mode A fires after our ops verifies the proof; Mode B fires when you confirm the capture. Money is never announced before it is booked.
verification.completed
Only if you use the address-verification product.
{ "sourceLoanNumber": "LN-2026-0001", "result": "verified", "verifiedAt": "…" }
case.closed
Terminal — fully collected, recalled, or closed unrecovered.
{
"sourceLoanNumber": "LN-2026-0001", "caseId": "CC-2026-2388ED42",
"status": "collected", "reason": "full_settlement", "totalCollected": 12500
}
reason values include full_settlement, recalled, or a terminal visit
outcome.
ping
Sent by the webhook self-test — verify, dedupe, return 2xx like any event.