Skip to main content
Sent when the case status of a claim changes — and when a closed claim’s closure reason changes. The case status has three values: open, disputed, closed. A closure carries its reason, so you can tell a claim paid in full from one written off. The event type you’ll see in the body and in the X-IcoLaw-Event header is claim.status_changed. It is not sent when a claim is created: every claim starts open. A closure also sends claim.collection_stage_changed (to closed); the two are enqueued together, the stage event first.

Payload

The envelope (id, type, created_at, api_version) is the same as for every event — see Collection Stage Events → Envelope fields.

data fields

uuid
required
ID of the claim. Look up the full claim via GET /openapi/claims/{id}.
string | null
The partner_reference you provided when creating the claim through the API; for a claim created by incaseof.law, its external_reference.
enum
required
The case status before the change: open, disputed or closed.
enum
required
The case status now: open, disputed or closed.
enum | null
required
Why the claim was closed — set when to_status is closed, null otherwise. See the reference below.
string (RFC 3339)
required
When the change was persisted server-side.

Case status

Closure reasons

paid and installment_plan follow from the payments; the other three are recorded by the incaseof.law team when they close a claim that was not paid.

Reconciliation

The same two values are on the claim itself: GET /openapi/claims/{id} and GET /openapi/claims return case_status and closure_reason. Failed deliveries are not re-sent — compare them with your mirror once a day (see Webhooks Overview). Claims closed before this event existed have closure_reason: null.
The claim’s status field is an internal workflow value — a claim paid in full reads paid there, a claim closed without payment may still read open. Use case_status and closure_reason.

Example: the debtor disputes the claim

Example: the creditor withdraws a disputed claim