Skip to main content

Case lifecycle & statuses

Your system sees a deliberately simple four-state model — internal operational sub-states are mapped so we can evolve them without breaking you.

External statusMeaning
pendingAccepted, awaiting a field partner
in_progressPartner assigned / working / payment or verification in flight
collectedFully collected — terminal
closed_unrecoveredTerminal without full recovery (incl. your recall, write-off)

Visit outcomes

Delivered in visit.completed events:

OutcomeMeaning
collected / partialMoney collected (full / part)
ptpPromise-to-pay with a committed date (ptpDate)
delivered_acknowledgedPayment notice delivered and acknowledged
refused / not_availableBorrower refused / not found this visit
wrong_address / shiftedAddress problem — your cue to push a corrected address (just re-send the row)

Reading state correctly

  • The webhook stream is the narrative; GET /cases/{loan} is the authoritative snapshot — when in doubt (e.g. a sequence gap), fetch it.
  • Payment events carry absolute values (totalCollected, outstandingAfter) — never accumulate deltas yourself.