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; written_off, withdrawn, disputed and insolvency are recorded by the incaseof.law team when they close a claim that was not paid; merged when they merge claims.
A debtor’s objection in the debtor portal does not change the case status by itself. The incaseof.law team reviews it first: only when they find it substantiated does the claim become disputed and this event is sent. An objection they find unsubstantiated is answered, the claim stays open and no event is sent.

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 team finds the debtor’s objection substantiated

Example: the creditor withdraws a disputed claim

A merged claim names the claim that continues it: