Skip to main content

Case Lifecycle

Reference for case lifecycle states and close codes returned by the API.

Business context: See Cases in Debitura for what each status means operationally.

Lifecycle States​

The lifecycle field indicates where a case is in the collection process.

API ValueDescription
Pending contract signingAwaiting creditor contract signature. Returned when allowPendingContracts: true and SDCA or PoA contracts are unsigned. See Creating a Case for handling.
Pending Verification InternalInternal review before partner assignment
Pending VerificationPartner reviewing case details
More Info RequiredAdditional information needed from creditor
Collecting QuotesLegal escalation requested, awaiting partner quotes
Pending Quote SelectionPartner has submitted a quote, awaiting selection
ActiveCase is being actively collected
PausedCollection temporarily suspended
ClosedCase resolved (check closeCode for outcome)
MergedCase was consolidated into another case (loser in a case merge). Read-only — no further collection actions are possible.

Close Codes​

The closeCode field indicates why a case was closed. Only present when lifecycle is Closed; Merged cases do not carry a closeCode.

API ValueCategorySettable via POST /cases/{id}/close?
PaidSuccess✅
Partially paidSuccess✅
Case never startedRejected❌ System/internal only
Invalid Case DataRejected❌ System/internal only
Debtor Insolvent/BankruptUncollectable✅
Debtor UntraceableUncollectable✅
Disputed – Legal Action Declined by ClientClient decision✅
Withdrawn by ClientClient decision✅
Pre-Legal Exhausted – No PaymentCollection exhausted✅
Statute of Limitations ExpiredCollection exhausted✅
Settlement Rejected by ClientClient decision✅
Unresponsive ClientClient decision✅
Uneconomical to PursueCollection exhausted✅
No Quotes ReceivedSystem❌ System-assigned
Quotes Expired – Not AcceptedSystem❌ System-assigned
OtherOther✅

Only the 12 codes marked ✅ may be submitted as the closeCode on POST /cases/{id}/close — the endpoint validates the value against this exact allowlist and returns 400 for any other value, including the codes marked ❌ above, numeric representations, and unrecognized strings. Codes marked ❌ are assigned automatically by internal system or lifecycle flows and can appear in closeCode on a case you read back, but can never be set through this endpoint.

Business context: See Case Close Codes for what each outcome means and when it applies.

API Response Fields​

FieldTypeDescription
lifecyclestringCurrent lifecycle state
closeCodestringOutcome reason (only when lifecycle is Closed; null for Merged and all other states)
dateFinisheddatetimeWhen case was closed
dateCollectionStarteddatetimeWhen collection began

Tracking Changes​

Subscribe to webhook events to receive real-time lifecycle updates:

EventTrigger
case.createdCase first created — may be in Pending contract signing if SDCA not yet signed at creation time
case.updatedLifecycle state changed
case.closedCase reached Closed status

See Client Webhooks or Referral Partner Webhooks for event payloads and setup.

Transitions to Merged do not currently fire case.updated or case.closed. Poll the case endpoint if you need to detect merge transitions.

Alternatively, poll the case endpoint:

GET /cases/{caseId}
XApiKey: YOUR_API_KEY

Integration Pattern​

1. Receive case.updated or case.closed webhook
2. Validate signature (see webhook security)
3. Update status in your database
4. For closures, store closeCode for reporting

Use the event id field for idempotent processing.

When closeCode is Paid or Partially paid, cross-reference with payment.created events for reconciliation. See Payments and Reconciliation.