Skip to main content

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.