Skip to main content

Cases

Base URL
https://customer-api.debitura.com
Authentication
API key in the XApiKey header

List collection cases

GET/cases

Returns a paginated list of collection cases for your account.

Pagination:

  • page (default: 1) - Page number, starting from 1
  • pageSize (default: 10, max: 100) - Number of results per page

Filters:

  • statuses - Filter by case lifecycle status (comma-separated list) Valid values: PendingContractSigning, PendingVerificationInternal, PendingVerification, NeedsAdditionalDetails, Leads, LeadsQuoteGiven, Active, Paused, Closed, Merged (case-insensitive; both name and description forms accepted)
  • divisionIds - Filter by creditor division IDs (comma-separated GUIDs, for multi-division creditors)
  • debtorIds - Filter by specific debtor IDs (comma-separated GUIDs)
  • ids - Filter by specific case IDs (comma-separated GUIDs)

Sorting:

  • sort - Sort field and direction (format: 'field:direction') Valid sort fields: DateCreated, DateUpdated, DateFinished, DateCollectionStarted, DueDate, Date, GrossAmount, Remainder, InterestFees, CollectionFees, ReminderFees, Lifecycle, CloseCode, ClaimType, Reference, CreditorReference, CollectionPartnerReference, Type, Classification, Debtor, Creditor, Country, ExclusivityEndDate, ActiveCollectionPeriodEndDate, PaymentTotalSum, CurrentPhase, CollectionPartner, Jurisdiction, ManagedByPartner, CreditorDivision, AssignedCollectorUser, AssignedCreditorUser, AssignedManagingPartnerUser, ReferralPartner Examples: 'DateCreated:desc', 'DueDate:asc', 'GrossAmount:desc' Unknown fields return HTTP 400. Equal values are ordered by case ID in the last requested direction.

Response:

  • Returns InvoiceListApiDTO with page metadata and cases array
  • Page metadata includes: totalResults, currentPage, skipped, pageSize

Query parameters

  • Pageinteger
  • PageSizeinteger
  • DebtorIdsarray of uuids
  • Idsarray of uuids
  • Statusesarray of strings

    Filter by case lifecycle status. Valid values: PendingContractSigning, PendingVerificationInternal, PendingVerification, NeedsAdditionalDetails, Leads, LeadsQuoteGiven, Active, Paused, Closed, Merged (case-insensitive; both name and description forms accepted).

  • DivisionIdsarray of uuids

    Optional list of division IDs to filter by

  • Sortstring

    Optional sorting string "Field[:asc|desc][,Field2[:asc|desc]]…". Valid sort fields: DateCreated, DateUpdated, DateFinished, DateCollectionStarted, DueDate, Date, GrossAmount, Remainder, InterestFees, CollectionFees, ReminderFees, Lifecycle, CloseCode. Examples: 'DateCreated:desc', 'DueDate:asc'. Unknown fields are silently ignored.

Returns

200 List returned

  • pageobjectRequired

    Stable v1 pagination metadata shared by public list responses.

  • casesarray of objectsnullable

    V1 Invoice DTO for external partner APIs

Errors

400Invalid query parameters

See Error handling.

GET/cases
curl https://customer-api.debitura.com/cases \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"page": {
"totalResults": 42,
"pageSize": 25,
"currentPage": 1,
"responseCount": 42,
"totalPages": 1
},
"cases": [
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"reference": "INV-2026-0042",
"creditorReference": "INV-2026-0042",
"creditorComments": "Payment plan agreed with the debtor.",
"claimDescription": "string",
"grossAmount": 2500,
"remainder": 1.5,
"interestFees": 2500,
"reminderFees": 2500,
"collectionFees": 2500,
"totalAddedFees": 2500,
"currency": "EUR",
"isTestCase": true,
"lifecycle": "string",
"dueDate": "2026-10-01T14:05:00Z",
"date": "2026-10-01T14:05:00Z",
"dateFinished": "2026-10-01T14:05:00Z",
"dateCollectionStarted": "2026-10-01T14:05:00Z",
"closeCode": "string",
"currentEngagementPhase": "string",
"claimType": "string",
"creditorDivisionId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"debtor": {
"type": "Company",
"name": "Pacific Trading LLC",
"contactPerson": "John Smith",
"companyRegistrationNumber": "47-1234567",
"address": "123 Market Street, Suite 400",
"zipCode": "94105",
"city": "San Francisco",
"state": "California",
"stateAlpha2": "CA",
"countryAlpha2": "US",
"country": "United States",
"email": "accounts@pacifictrading.com",
"phone": "+1 415 555 0123"
},
"collectionPartner": {
"name": "Muster GmbH",
"officeEmail": "finance@example.com",
"officePhone": "+49 30 1234567",
"publicSite": "string",
"surveyCadenceMode": 0
},
"creditor": {
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"companyName": "Muster GmbH",
"companyRegistrationNumber": "DE123456789",
"officeEmail": "finance@example.com",
"officePhone": "+49 30 1234567",
"address": "Friedrichstraße 68",
"city": "Berlin",
"zipCode": "10115",
"state": "string",
"country": "Germany",
"division": {
"id": {},
"name": {}
}
},
"bankAccount": {
"id": 3,
"label": "string",
"scheme": "string",
"currencyCode": "EUR",
"bankCountryCode": "DE",
"accountHolderName": "Muster GmbH",
"iban": "string",
"bic": "string",
"accountNumber": "string",
"localIdentifier": "string",
"localIdentifierType": "string",
"bankName": "Muster GmbH",
"bankAddress": "Friedrichstraße 68",
"bankCity": "Berlin",
"bankZipCode": "10115",
"bankState": "string"
},
"blendedAgeUpliftPoints": 1.5,
"preLegalSuccessFee": 2500,
"solutionUrl": "https://app.debitura.com/…",
"signingHandoff": {
"combinedSigningUrl": "https://app.debitura.com/…"
},
"exclusivePeriodEndDate": "2026-10-01T14:05:00Z",
"disputeStatus": "string",
"validation": {
"needsInfo": true
},
"assignedUser": {
"email": "finance@example.com",
"name": "Muster GmbH"
},
"allocationOutstanding": {
"principal": 1.5,
"interest": 1.5,
"reminderFees": 2500,
"collectionFees": 2500
}
}
]
}

Create collection case

POST/cases

Creates a new collection case for debt collection.

Test Mode:

  • Set isTest=true to create a test case (case IS created in the database but marked as test data)
  • Test cases are excluded from production metrics and can be easily filtered or deleted
  • Use test mode for integration testing and development

Debtor Rules:

  • debtor.type must be "Company" or "Private"
    • Company → debtor.name is mandatory (company name)
    • Private → debtor.name is mandatory (person's full name)

Geographic Rules:

  • debtor.countryAlpha2 (ISO 3166-1 alpha-2) is always required
  • debtor.state is a free-text region description
  • For US debtors: debtor.stateAlpha2 (two-letter state code) is also required – debtor.state is ignored in that scenario
  • Customer API submissions are limited to cases that match an exclusive pre-legal partner. If no eligible partner matches, the API returns 422 and does not create a case. The interactive portal's custom-quote/network-lead fallback is not available through this API.

Claim Amount and Aging — three ways to send it:

  1. amountToRecover plus a single dueDate
  2. amountToRecover plus the cumulative amountToRecoverOver6/12/24Months buckets
  3. claimLines[] — send the unpaid invoices and let us do the arithmetic (recommended for multi-invoice claims)
"claimLines": [
  { "dueDate": "2024-01-15", "amount": 423.42, "reference": "INV-1001" },
  { "dueDate": "2025-05-02", "amount": 700.87, "reference": "INV-1042" }
]
  • amount is the outstanding balance on that invoice — what the debtor still owes on it, already net of payments received and credit notes issued. It is not the invoice's original face value. Leave fully settled invoices out; every amount must be greater than zero, with at most 2 decimals.
  • We derive amountToRecover and all three age buckets from the lines, so send claimLines instead of amountToRecover and the amountToRecoverOver6/12/24Months fields. Sending both is a 400.
  • Use claimLines whenever the debtor has already part-paid: it is the only way to express an honest age profile on a part-paid claim, because the buckets are then computed on the same outstanding balances the total is computed on.
  • claimLines is a pricing input only. It is not stored and is not shown to the collecting partner — include a per-invoice breakdown in comments if the partner needs to see one.
  • Maximum 1000 lines. Per-line errors are returned keyed by index, e.g. ClaimLines[2].DueDate.
  • If you omit the case-level dueDate, it is set to the oldest due date across your lines — so in that case date must not be later than the earliest claimLines due date, or the request is rejected with a 400 on date. Send an explicit dueDate if you need a different case due date.

Optional Parameters:

  • creditorDivisionId - Assign case to a specific division (for multi-division creditors)
  • allowPendingContracts - Accept cases with unsigned contracts in 'PendingContractSigning' status instead of returning 422

Error Responses:

  • 400: Field validation errors (returns JSON object with field names as keys and error arrays as values)
  • 422: Business rule violations (returns BusinessErrorResponseApiDTO with type, message, and solutionUrl)
  • 500: Server errors

Headers

  • Idempotency-Keystring

    Optional non-empty, non-whitespace idempotency key (max 255 characters) for safely retrying this request. If a previous request used the same key with an identical body, the original terminal response is replayed verbatim. Reusing the key with a different body returns 422 with businessErrors[0].type: "IdempotencyConflict". Field-level 400 validation errors are not stored, so you may fix the request and retry with the same key.

    Max 255 characters

Request body

  • currencyCodestringnullableRequired
  • datedatetime
  • dueDatedatetimenullable
  • commentsstringnullable

    Optional comments about the case, e.g. payment history or communication context.

    Max 4000 characters
  • claimDescriptionstringnullable

    Client provided description of the claim

    Max 4000 characters
  • creditorReferencestringnullable
    Max 50 characters
  • debtorobject

    V1 Debtor DTO for external partner APIs. The debtor is the party that owes the debt.

  • creditorDivisionIduuidnullable
  • amountToRecovernumber

    The TOTAL amount to recover for this case. This represents the full principal amount across all invoices (if multiple invoices are bundled).

    For multi-invoice cases with different ages, you can optionally provide age breakdown fields (AmountToRecoverOver12Months and AmountToRecoverOver24Months) to enable blended age-based pricing.

    If age breakdown fields are omitted, age uplift will be calculated from the invoice due date (single-invoice pricing).

    Required unless you send ClaimLines, in which case this must be omitted or 0 — the server derives the total by summing the outstanding balance of every claim line. Sending both a non-zero AmountToRecover and ClaimLines is rejected, because the two would disagree.

  • amountToRecoverOver6Monthsnumbernullable

    OPTIONAL - MULTI-INVOICE AGE BUCKET PRICING (PRICING ZONE 180-DAY THRESHOLD)

    The portion of AmountToRecover that is more than 6 months (180 days) overdue. This includes amounts that are 12+ and 24+ months overdue.

    This field is optional and can only be provided alongside AmountToRecoverOver12Months and AmountToRecoverOver24Months. It enables precise pricing tier selection based on the 180-day threshold. When omitted, the system falls back to deriving the threshold from AmountToRecoverOver12Months.

    Validation rules:

    • Must be ≤ AmountToRecover
    • Must be ≥ AmountToRecoverOver12Months
  • amountToRecoverOver12Monthsnumbernullable

    OPTIONAL - MULTI-INVOICE AGE BUCKET PRICING

    The portion of AmountToRecover that is more than 12 months overdue. This includes amounts that are 24+ months overdue.

    If provided, AmountToRecoverOver24Months must also be provided. Both fields must be provided together or both omitted.

    Used to calculate blended age uplift for multi-invoice cases:

    • Amount under 12 months = AmountToRecover - AmountToRecoverOver12Months
    • Amount 12-24 months = AmountToRecoverOver12Months - AmountToRecoverOver24Months
    • Amount over 24 months = AmountToRecoverOver24Months

    Blended uplift formula: ((A12-A24)×10 + A24×20) / AmountToRecover where A12 = AmountToRecoverOver12Months, A24 = AmountToRecoverOver24Months

    Validation rules:

    • Must be ≤ AmountToRecover
    • Must be ≥ AmountToRecoverOver24Months
  • amountToRecoverOver24Monthsnumbernullable

    OPTIONAL - MULTI-INVOICE AGE BUCKET PRICING

    The portion of AmountToRecover that is more than 24 months overdue.

    If provided, AmountToRecoverOver12Months must also be provided. Both fields must be provided together or both omitted.

    Used to calculate blended age uplift for multi-invoice cases. See AmountToRecoverOver12Months for full details on the calculation.

    Validation rules:

    • Must be ≤ AmountToRecoverOver12Months
    • Must be ≤ AmountToRecover
  • claimLinesarray of objectsnullable

    OPTIONAL - the unpaid invoices making up this claim, one line per invoice, each carrying its own outstanding balance and payment deadline.

    When supplied, the server derives AmountToRecover and all three cumulative age buckets from these lines, so send them instead of — never alongside — AmountToRecover and the AmountToRecoverOver6/12/24Months fields. Supplying both is rejected with a 400.

    Use this whenever the debtor has already part-paid the claim: the buckets are then computed on the same outstanding balances the total is computed on, so the age profile stays honest. Maximum 1000 lines. When DueDate is omitted on the case, it is derived as the oldest line due date; an explicit DueDate is honoured.

    Claim lines are a pricing input only — they are not stored and are never shown to the collecting partner.

  • allowPendingContractsboolean

    When true, cases with unsigned contracts (SDCA/POA) are accepted in 'PendingContractSigning' status instead of being rejected with 422. The case transitions automatically once contracts are signed. Default: false (unsigned contracts return 422).

  • isTestboolean

    When true, creates a test case that IS persisted to the database but marked as test data. Test cases are excluded from production metrics and can be easily filtered or deleted. Use this for integration testing and development.

  • tagstringnullable

    Optional tag for scoped test data grouping (e.g. "suite-run-{uuid}"). Use this to group test cases created by a single CI pipeline run so they can be bulk-deleted via DELETE /test/cases?tag={tag} without affecting parallel runs. Only meaningful when IsTest is true. Max 100 characters.

    Max 100 characters
  • assignedUserEmailstringnullable

    Optional: Email address of the creditor team member to assign as the case owner. When provided, email notifications for this case will be sent only to this user instead of all team members. Must correspond to an active member of your team.

    Max 320 characters · Email address
  • returnUrlstringnullable

    Optional: URL the creditor user should land on after completing any pending signing chain (SDCA upgrade / PoA / JPA / KYC) on the Debitura Creditors app. Embedded, URL-encoded, into BusinessErrorResponseApiDTO.SigningHandoff.CombinedSigningUrl (on 422 with pending signings) and InvoiceDto.SigningHandoff.CombinedSigningUrl (on 200 when AllowPendingContracts=true with signings remaining).

    Must be an absolute http(s) URL. Values that fail validation (relative URLs, non-http schemes, header-injection characters) are silently dropped — the combined URL is still emitted but without the returnUrl query parameter, and the Creditors app falls back to its own safe in-app default landing.

    Additive. Existing integrations that omit this field see the same behaviour as before.

    Max 2048 characters

Returns

200 Case created

  • iduuid
  • dateCreateddatetime
  • dateUpdateddatetimenullable
  • referencestringnullable
  • creditorReferencestringnullable
  • creditorCommentsstringnullable
  • claimDescriptionstringnullable
  • grossAmountnumber
  • remaindernumber
  • interestFeesnumber
  • reminderFeesnumber
  • collectionFeesnumber
  • totalAddedFeesnumber
  • currencystringnullable
  • isTestCaseboolean
  • lifecyclestringnullable
  • dueDatedatetime
  • datedatetime
  • dateFinisheddatetimenullable
  • dateCollectionStarteddatetimenullable
  • closeCodestringnullable
  • currentEngagementPhasestringnullable

    The current phase of the case's engagement: "Pre-legal", "Legal", or "Enforcement". A different axis from Lifecycle/CloseCode — an Active case can be in any of the three phases.

    Null means "no active engagement" (e.g. lead / quoting / pre-contract-signing / unassigned, or a data-consistency gap) — this is a distinct third state, NOT a synonym for Pre-legal. Most cases legitimately read Pre-legal; phase only leaves Pre-legal on legal/enforcement quote flows.

    Not guaranteed to be monotonic: an admin correction can move phase backwards (e.g. Legal back to Pre-legal).

    Persists after case closure — reflects the case's last-known engagement phase, not the current Lifecycle. Note: this is a different field from a lead quote's own offered phase (the phase a partner's quote proposes to work the case at, if this case ever went through a quote flow) — this field is the case-level phase of its actual engagement, not a quote's terms.

  • claimTypestringnullable

    The type of claim for this case (e.g. "Unpaid Invoice", "Loan Repayment", "Breach of Contract"). Null if not set.

  • creditorDivisionIduuidnullable
  • debtorobject

    V1 Debtor DTO for external partner APIs. The debtor is the party that owes the debt.

  • collectionPartnerobject

    V1 Collection Partner DTO for external partner APIs

  • creditorobject

    Creditor (client) information for external partner APIs. Represents the party that the debtor owes money to.

  • bankAccountobject

    Bank account information for partner API. Full details provided as partners need this to:

    1. Provide payment instructions to debtors (when debtor pays client directly)
    2. Execute payouts to clients (when partner receives payment and pays out remainder)
  • blendedAgeUpliftPointsnumbernullable

    MULTI-INVOICE AGE BUCKET PRICING Calculated blended age uplift percentage points (0-20) for multi-invoice cases. Shows the additional fee percentage added due to invoice age. Formula: ((A12-A24)×10 + A24×20) / Total Principal Null for single-invoice cases (age uplift is calculated from due date instead).

  • preLegalSuccessFeenumbernullable

    PRE-LEGAL SUCCESS FEE The total pre-legal success fee percentage for this case. Includes base fee + age-based uplift (blended or single-invoice). Null if pricing has not been calculated yet or if case is not in pre-legal phase. Example: 20.5 represents 20.5% success fee.

  • solutionUrlstringnullableDeprecated

    When the case is created with allowPendingContracts=true and required contracts are unsigned, this URL points to the signing page. Null when contracts are already signed or not applicable.

  • signingHandoffobject

    Partner-facing handoff metadata for a creditor's pending signing chain. Returned on POST /cases responses (422 with pending-signing errors, or 200 with AllowPendingContracts=true when signings remain).

    Designed as an envelope so future fields (expiration, suggested email copy, etc.) can be added without polluting the parent DTO.

  • exclusivePeriodEndDatedatetimenullable

    The date the exclusive collection period ends (or ended). Null if no collection period has been created for this case (e.g. custom-terms cases). Use GET /cases/{id}/exclusive-period for the full chain including extensions.

  • disputeStatusstringnullable

    Whether the claim is disputed by the debtor. One of: "Yes, the claim is disputed", "No, the claim is not disputed", or "Don't Know". Null when the dispute status has not been set on the case.

  • validationobject

    Stable v1 validation summary used by ordinary and list mappings.

  • assignedUserobject

    Represents the creditor team member assigned to a case.

  • allocationOutstandingobject

    Outstanding amount per bucket on the case: each bucket's total minus the payments allocated to it.

Errors

400Invalid request
422Business rule violation
500Server error

See Error handling.

POST/cases
curl -X POST https://customer-api.debitura.com/cases \
-H "XApiKey: $DEBITURA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"currencyCode": "EUR",
"amountToRecover": 4000,
"date": "2026-03-01",
"dueDate": "2026-03-09",
"claimDescription": "Custom mobile app development services",
"comments": "Outstanding invoice INV 2024 00789 for custom mobile app development delivered 15 Nov 2024; payment 60 days overdue despite two reminders.",
"creditorReference": "INV‑2024‑00789",
"isTest": true,
"debtor": {
"type": "Company",
"name": "Acme Corp",
"contactPerson": "John Doe",
"companyRegistrationNumber": "12345678",
"address": "123 Business Street",
"zipCode": "1000",
"city": "Lisbon",
"state": "Lisbon",
"countryAlpha2": "PT",
"email": "billing@acme‑corp.com",
"phone": "+351 123 456 789"
}
}'
Response
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"reference": "INV-2026-0042",
"creditorReference": "INV-2026-0042",
"creditorComments": "Payment plan agreed with the debtor.",
"claimDescription": "string",
"grossAmount": 2500,
"remainder": 1.5,
"interestFees": 2500,
"reminderFees": 2500,
"collectionFees": 2500,
"totalAddedFees": 2500,
"currency": "EUR",
"isTestCase": true,
"lifecycle": "string",
"dueDate": "2026-10-01T14:05:00Z",
"date": "2026-10-01T14:05:00Z",
"dateFinished": "2026-10-01T14:05:00Z",
"dateCollectionStarted": "2026-10-01T14:05:00Z",
"closeCode": "string",
"currentEngagementPhase": "string",
"claimType": "string",
"creditorDivisionId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"debtor": {
"type": "Company",
"name": "Pacific Trading LLC",
"contactPerson": "John Smith",
"companyRegistrationNumber": "47-1234567",
"address": "123 Market Street, Suite 400",
"zipCode": "94105",
"city": "San Francisco",
"state": "California",
"stateAlpha2": "CA",
"countryAlpha2": "US",
"country": "United States",
"email": "accounts@pacifictrading.com",
"phone": "+1 415 555 0123"
},
"collectionPartner": {
"name": "Muster GmbH",
"officeEmail": "finance@example.com",
"officePhone": "+49 30 1234567",
"publicSite": "string",
"surveyCadenceMode": 0
},
"creditor": {
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"companyName": "Muster GmbH",
"companyRegistrationNumber": "DE123456789",
"officeEmail": "finance@example.com",
"officePhone": "+49 30 1234567",
"address": "Friedrichstraße 68",
"city": "Berlin",
"zipCode": "10115",
"state": "string",
"country": "Germany",
"division": {
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"name": "Muster GmbH"
}
},
"bankAccount": {
"id": 3,
"label": "string",
"scheme": "string",
"currencyCode": "EUR",
"bankCountryCode": "DE",
"accountHolderName": "Muster GmbH",
"iban": "string",
"bic": "string",
"accountNumber": "string",
"localIdentifier": "string",
"localIdentifierType": "string",
"bankName": "Muster GmbH",
"bankAddress": "Friedrichstraße 68",
"bankCity": "Berlin",
"bankZipCode": "10115",
"bankState": "string"
},
"blendedAgeUpliftPoints": 1.5,
"preLegalSuccessFee": 2500,
"solutionUrl": "https://app.debitura.com/…",
"signingHandoff": {
"combinedSigningUrl": "https://app.debitura.com/…"
},
"exclusivePeriodEndDate": "2026-10-01T14:05:00Z",
"disputeStatus": "string",
"validation": {
"needsInfo": true
},
"assignedUser": {
"email": "finance@example.com",
"name": "Muster GmbH"
},
"allocationOutstanding": {
"principal": 1.5,
"interest": 1.5,
"reminderFees": 2500,
"collectionFees": 2500
}
}

Preview case eligibility and requirements

POST/cases/preview

Preview what would happen if you submitted a case, without actually creating it.

What This Endpoint Returns:

  • IsEligible - Whether the case can be submitted (partner available)
  • PartnerAssignment - Which collection partner would handle the case
  • RequiredActions - What contracts/documents need to be signed before submission
    • Standard Debt Collection Agreement (SDCA)
    • Power of Attorney (PoA) for the assigned partner
  • PricingPreview - Estimated success fee with age-based surcharges
  • Jurisdiction - Geographic details

Use This To:

  1. Check if a jurisdiction is supported before submitting
  2. Determine which documents need signing before case creation
  3. Get signing URLs to guide users through required actions
  4. Estimate pricing including age surcharges

Required Fields:

  • AmountToRecover - Total principal amount
  • CurrencyCode - ISO 4217 currency code (e.g., 'DKK', 'EUR', 'USD')
  • Debtor.Type - 'Company' or 'Private'
  • Debtor.CountryAlpha2 - ISO 3166-1 alpha-2 country code
  • Debtor.StateAlpha2 - Required for US cases only (e.g., 'CA', 'NY')

Optional Fields (Multi-Invoice Age Pricing):

  • AmountToRecoverOver12Months - Portion over 12 months overdue
  • AmountToRecoverOver24Months - Portion over 24 months overdue (Both must be provided together if used)
  • AmountToRecoverOver6Months - Portion over 6 months overdue (optional, improves pricing tier accuracy at the 180-day threshold; requires Over12/Over24)

Optional Fields (Claim Lines — recommended for multi-invoice claims): Instead of totalling the claim and computing the buckets yourself, send the unpaid invoices:

"claimLines": [
  { "dueDate": "2024-01-15", "amount": 423.42, "reference": "INV-1001" },
  { "dueDate": "2025-05-02", "amount": 700.87, "reference": "INV-1042" }
]
  • amount is the outstanding balance on that invoice, already net of payments and credit notes.
  • We derive amountToRecover and all three age buckets from the lines and price on them, so send claimLines instead of amountToRecover, the amountToRecoverOver6/12/24Months fields, and dueDate. Combining any of those with claimLines is a 400.
  • Use claimLines whenever the debtor has already part-paid: it is the only way to express an honest age profile on a part-paid claim.
  • Maximum 1000 lines. Per-line errors are returned keyed by index, e.g. ClaimLines[2].DueDate.
  • The same ledger produces the same quote here and on POST /cases.

Solution URLs Are Context-Aware:

  • Bearer token (referral partner) → referral onboarding URLs
  • XApiKey (creditor) → standard creditor app URLs

Important Notes:

  • This endpoint does NOT create a case - it only previews what would happen
  • A matched preview applies the same monetary admission rules as POST /cases; create revalidates all rules
  • Monetary refusals return AmountBelowMinimum and admissionMinimum (rule, USD amount, request-currency amount and currency code)
  • amountCheckUnavailable means monetary eligibility is provisional because a required conversion was unavailable
  • Unmatched cases remain ineligible at every amount; this API does not offer network/custom-quote submission
  • If multiple partners match (system limitation), the first match is returned
  • All required actions must be completed before calling POST /cases

Example Workflow:

1. POST /cases/preview → Check eligibility and get signing URLs
2. User completes required actions (signs SDCA, signs PoA)
3. POST /cases → Create the actual case

Request body

  • amountToRecovernumber

    The TOTAL amount to recover for this case. This represents the full principal amount across all invoices (if multiple invoices are bundled).

    For multi-invoice cases with different ages, you can optionally provide age breakdown fields (AmountToRecoverOver12Months and AmountToRecoverOver24Months) to enable blended age-based pricing.

    If age breakdown fields are omitted, the preview will show base pricing without age surcharge calculation.

    Required unless you send ClaimLines, in which case this must be omitted or 0 — the server derives the total by summing the outstanding balance of every claim line. Sending both a non-zero AmountToRecover and ClaimLines is rejected, because the two would disagree.

  • currencyCodestringRequired

    ISO 4217 currency code for the amount (e.g., "DKK", "EUR", "USD")

    3–3 characters
  • debtorobjectRequired

    Simplified debtor information for case preview. Only includes the minimum fields required for partner routing and eligibility checking.

  • amountToRecoverOver6Monthsnumbernullable

    OPTIONAL - MULTI-INVOICE AGE BUCKET PRICING (PRICING ZONE 180-DAY THRESHOLD)

    The portion of AmountToRecover that is more than 6 months (180 days) overdue. This includes amounts that are 12+ and 24+ months overdue.

    This field is optional and can only be provided alongside AmountToRecoverOver12Months and AmountToRecoverOver24Months. It enables precise pricing tier selection based on the 180-day threshold. When omitted, the system falls back to deriving the threshold from AmountToRecoverOver12Months.

    Validation rules:

    • Must be ≤ AmountToRecover
    • Must be ≥ AmountToRecoverOver12Months
  • amountToRecoverOver12Monthsnumbernullable

    OPTIONAL - MULTI-INVOICE AGE BUCKET PRICING

    The portion of AmountToRecover that is more than 12 months overdue. This includes amounts that are 24+ months overdue.

    If provided, AmountToRecoverOver24Months must also be provided. Both fields must be provided together or both omitted.

    Used to calculate blended age uplift for multi-invoice cases:

    • Amount under 12 months = AmountToRecover - AmountToRecoverOver12Months
    • Amount 12-24 months = AmountToRecoverOver12Months - AmountToRecoverOver24Months
    • Amount over 24 months = AmountToRecoverOver24Months

    Blended uplift formula: ((A12-A24)×10 + A24×20) / AmountToRecover where A12 = AmountToRecoverOver12Months, A24 = AmountToRecoverOver24Months

    Validation rules:

    • Must be ≤ AmountToRecover
    • Must be ≥ AmountToRecoverOver24Months
  • amountToRecoverOver24Monthsnumbernullable

    OPTIONAL - MULTI-INVOICE AGE BUCKET PRICING

    The portion of AmountToRecover that is more than 24 months overdue.

    If provided, AmountToRecoverOver12Months must also be provided. Both fields must be provided together or both omitted.

    Used to calculate blended age uplift for multi-invoice cases. See AmountToRecoverOver12Months for full details on the calculation.

    Validation rules:

    • Must be ≤ AmountToRecoverOver12Months
    • Must be ≤ AmountToRecover
  • claimLinesarray of objectsnullable

    OPTIONAL - the unpaid invoices making up this claim, one line per invoice, each carrying its own outstanding balance and payment deadline.

    When supplied, the server derives AmountToRecover and all three cumulative age buckets from these lines and prices on them, so send them instead of — never alongside — AmountToRecover, the AmountToRecoverOver6/12/24Months fields, or DueDate. Supplying any of those together with ClaimLines is rejected with a 400.

    Use this whenever the debtor has already part-paid the claim: the buckets are then computed on the same outstanding balances the total is computed on, so the age profile stays honest. Maximum 1000 lines. Claim lines are a pricing input only and are never stored.

  • dueDatedatetimenullable

    Optional invoice due date. Mutually exclusive with age bucket fields and with ClaimLines. If provided, Debitura computes the age surcharge internally — no need to calculate age buckets. Cannot be a future date.

  • returnUrlstringnullable

    Optional: URL the creditor user should land on after completing any pending signing chain (SDCA upgrade / PoA / JPA / KYC) on the Debitura Creditors app. Embedded, URL-encoded, into PreviewCaseResponseApiViewModel.Result.SigningHandoff.CombinedSigningUrl (when at least one signing-related required action is present) and into BusinessErrorResponseApiDTO.SigningHandoff.CombinedSigningUrl / InvoiceDto.SigningHandoff.CombinedSigningUrl on POST /cases.

    Must be an absolute http(s) URL. Values that fail validation (relative URLs, non-http schemes, header-injection characters) are silently dropped — the combined URL is still emitted but without the returnUrl query parameter, and the Creditors app falls back to its own safe in-app default landing.

    Additive. Existing integrations that omit this field see the same behaviour as before.

    Max 2048 characters

Returns

200 Preview completed

  • resultobject

    Detailed preview result for a case submission.

Errors

400Invalid request (validation errors)
500Internal server error

See Error handling.

POST/cases/preview
curl -X POST https://customer-api.debitura.com/cases/preview \
-H "XApiKey: $DEBITURA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amountToRecover": 50000,
"currencyCode": "USD",
"amountToRecoverOver12Months": 30000,
"amountToRecoverOver24Months": 15000,
"debtor": {
"type": "Company",
"countryAlpha2": "US",
"stateAlpha2": "CA"
}
}'
Response
{
"result": {
"isEligible": true,
"ineligibilityReason": null,
"ineligibilityReasonCode": null,
"admissionMinimum": {
"rule": "string",
"amountUsd": 2500,
"amount": 2500,
"currencyCode": "EUR"
},
"applicableMinimumAmount": 2500,
"applicableMinimumCurrencyCode": "EUR",
"marketMinimumAmount": 2500,
"marketMinimumCurrencyCode": "EUR",
"amountCheckUnavailable": true,
"partnerAssignment": {
"collectionPartnerId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"partnerName": "Muster GmbH",
"partnerCountry": "string"
},
"requiredActions": [
{
"type": "string",
"message": "Payment plan agreed with the debtor.",
"solutionUrl": "https://app.debitura.com/…",
"isBlocking": true
}
],
"jurisdiction": {
"id": 3,
"name": "Muster GmbH",
"countryAlpha2": "DE",
"stateAlpha2": null
},
"pricingPreview": {
"baseSuccessFeePercentage": 2500,
"ageSurchargePercentage": 1.5,
"totalSuccessFeePercentage": 2500,
"currencyCode": "EUR",
"pricingSource": "string",
"pricingSourceDescription": "string"
},
"requiresKycVerification": true,
"hasKycOnFile": true,
"signingHandoff": {
"combinedSigningUrl": "https://app.debitura.com/…"
}
}
}

Fetch case by ID

GET/cases/{id}

Returns case details for the provided Debitura case ID (a GUID).

Path parameters

  • iduuidRequired

Returns

200 Case found

  • iduuid
  • dateCreateddatetime
  • dateUpdateddatetimenullable
  • referencestringnullable
  • creditorReferencestringnullable
  • creditorCommentsstringnullable
  • claimDescriptionstringnullable
  • grossAmountnumber
  • remaindernumber
  • interestFeesnumber
  • reminderFeesnumber
  • collectionFeesnumber
  • totalAddedFeesnumber
  • currencystringnullable
  • isTestCaseboolean
  • lifecyclestringnullable
  • dueDatedatetime
  • datedatetime
  • dateFinisheddatetimenullable
  • dateCollectionStarteddatetimenullable
  • closeCodestringnullable
  • currentEngagementPhasestringnullable

    The current phase of the case's engagement: "Pre-legal", "Legal", or "Enforcement". A different axis from Lifecycle/CloseCode — an Active case can be in any of the three phases.

    Null means "no active engagement" (e.g. lead / quoting / pre-contract-signing / unassigned, or a data-consistency gap) — this is a distinct third state, NOT a synonym for Pre-legal. Most cases legitimately read Pre-legal; phase only leaves Pre-legal on legal/enforcement quote flows.

    Not guaranteed to be monotonic: an admin correction can move phase backwards (e.g. Legal back to Pre-legal).

    Persists after case closure — reflects the case's last-known engagement phase, not the current Lifecycle. Note: this is a different field from a lead quote's own offered phase (the phase a partner's quote proposes to work the case at, if this case ever went through a quote flow) — this field is the case-level phase of its actual engagement, not a quote's terms.

  • claimTypestringnullable

    The type of claim for this case (e.g. "Unpaid Invoice", "Loan Repayment", "Breach of Contract"). Null if not set.

  • creditorDivisionIduuidnullable
  • debtorobject

    V1 Debtor DTO for external partner APIs. The debtor is the party that owes the debt.

  • collectionPartnerobject

    V1 Collection Partner DTO for external partner APIs

  • creditorobject

    Creditor (client) information for external partner APIs. Represents the party that the debtor owes money to.

  • bankAccountobject

    Bank account information for partner API. Full details provided as partners need this to:

    1. Provide payment instructions to debtors (when debtor pays client directly)
    2. Execute payouts to clients (when partner receives payment and pays out remainder)
  • blendedAgeUpliftPointsnumbernullable

    MULTI-INVOICE AGE BUCKET PRICING Calculated blended age uplift percentage points (0-20) for multi-invoice cases. Shows the additional fee percentage added due to invoice age. Formula: ((A12-A24)×10 + A24×20) / Total Principal Null for single-invoice cases (age uplift is calculated from due date instead).

  • preLegalSuccessFeenumbernullable

    PRE-LEGAL SUCCESS FEE The total pre-legal success fee percentage for this case. Includes base fee + age-based uplift (blended or single-invoice). Null if pricing has not been calculated yet or if case is not in pre-legal phase. Example: 20.5 represents 20.5% success fee.

  • solutionUrlstringnullableDeprecated

    When the case is created with allowPendingContracts=true and required contracts are unsigned, this URL points to the signing page. Null when contracts are already signed or not applicable.

  • signingHandoffobject

    Partner-facing handoff metadata for a creditor's pending signing chain. Returned on POST /cases responses (422 with pending-signing errors, or 200 with AllowPendingContracts=true when signings remain).

    Designed as an envelope so future fields (expiration, suggested email copy, etc.) can be added without polluting the parent DTO.

  • exclusivePeriodEndDatedatetimenullable

    The date the exclusive collection period ends (or ended). Null if no collection period has been created for this case (e.g. custom-terms cases). Use GET /cases/{id}/exclusive-period for the full chain including extensions.

  • disputeStatusstringnullable

    Whether the claim is disputed by the debtor. One of: "Yes, the claim is disputed", "No, the claim is not disputed", or "Don't Know". Null when the dispute status has not been set on the case.

  • validationobject

    Stable v1 validation summary used by ordinary and list mappings.

  • assignedUserobject

    Represents the creditor team member assigned to a case.

  • allocationOutstandingobject

    Outstanding amount per bucket on the case: each bucket's total minus the payments allocated to it.

Errors

400ID missing, empty, or ID is not a collection case
404Case not found, deleted, or does not belong to your account

See Error handling.

GET/cases/{id}
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31 \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"reference": "INV-2026-0042",
"creditorReference": "INV-2026-0042",
"creditorComments": "Payment plan agreed with the debtor.",
"claimDescription": "string",
"grossAmount": 2500,
"remainder": 1.5,
"interestFees": 2500,
"reminderFees": 2500,
"collectionFees": 2500,
"totalAddedFees": 2500,
"currency": "EUR",
"isTestCase": true,
"lifecycle": "string",
"dueDate": "2026-10-01T14:05:00Z",
"date": "2026-10-01T14:05:00Z",
"dateFinished": "2026-10-01T14:05:00Z",
"dateCollectionStarted": "2026-10-01T14:05:00Z",
"closeCode": "string",
"currentEngagementPhase": "string",
"claimType": "string",
"creditorDivisionId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"debtor": {
"type": "Company",
"name": "Pacific Trading LLC",
"contactPerson": "John Smith",
"companyRegistrationNumber": "47-1234567",
"address": "123 Market Street, Suite 400",
"zipCode": "94105",
"city": "San Francisco",
"state": "California",
"stateAlpha2": "CA",
"countryAlpha2": "US",
"country": "United States",
"email": "accounts@pacifictrading.com",
"phone": "+1 415 555 0123"
},
"collectionPartner": {
"name": "Muster GmbH",
"officeEmail": "finance@example.com",
"officePhone": "+49 30 1234567",
"publicSite": "string",
"surveyCadenceMode": 0
},
"creditor": {
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"companyName": "Muster GmbH",
"companyRegistrationNumber": "DE123456789",
"officeEmail": "finance@example.com",
"officePhone": "+49 30 1234567",
"address": "Friedrichstraße 68",
"city": "Berlin",
"zipCode": "10115",
"state": "string",
"country": "Germany",
"division": {
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"name": "Muster GmbH"
}
},
"bankAccount": {
"id": 3,
"label": "string",
"scheme": "string",
"currencyCode": "EUR",
"bankCountryCode": "DE",
"accountHolderName": "Muster GmbH",
"iban": "string",
"bic": "string",
"accountNumber": "string",
"localIdentifier": "string",
"localIdentifierType": "string",
"bankName": "Muster GmbH",
"bankAddress": "Friedrichstraße 68",
"bankCity": "Berlin",
"bankZipCode": "10115",
"bankState": "string"
},
"blendedAgeUpliftPoints": 1.5,
"preLegalSuccessFee": 2500,
"solutionUrl": "https://app.debitura.com/…",
"signingHandoff": {
"combinedSigningUrl": "https://app.debitura.com/…"
},
"exclusivePeriodEndDate": "2026-10-01T14:05:00Z",
"disputeStatus": "string",
"validation": {
"needsInfo": true
},
"assignedUser": {
"email": "finance@example.com",
"name": "Muster GmbH"
},
"allocationOutstanding": {
"principal": 1.5,
"interest": 1.5,
"reminderFees": 2500,
"collectionFees": 2500
}
}

Fetch case by creditor reference

GET/cases/by-creditor-reference/{creditorReference}

Returns case details for the provided creditor reference. The creditor reference is your own unique identifier for the case, as provided when the case was created.

Path parameters

  • creditorReferencestringRequired

Returns

200 Case found

  • iduuid
  • dateCreateddatetime
  • dateUpdateddatetimenullable
  • referencestringnullable
  • creditorReferencestringnullable
  • creditorCommentsstringnullable
  • claimDescriptionstringnullable
  • grossAmountnumber
  • remaindernumber
  • interestFeesnumber
  • reminderFeesnumber
  • collectionFeesnumber
  • totalAddedFeesnumber
  • currencystringnullable
  • isTestCaseboolean
  • lifecyclestringnullable
  • dueDatedatetime
  • datedatetime
  • dateFinisheddatetimenullable
  • dateCollectionStarteddatetimenullable
  • closeCodestringnullable
  • currentEngagementPhasestringnullable

    The current phase of the case's engagement: "Pre-legal", "Legal", or "Enforcement". A different axis from Lifecycle/CloseCode — an Active case can be in any of the three phases.

    Null means "no active engagement" (e.g. lead / quoting / pre-contract-signing / unassigned, or a data-consistency gap) — this is a distinct third state, NOT a synonym for Pre-legal. Most cases legitimately read Pre-legal; phase only leaves Pre-legal on legal/enforcement quote flows.

    Not guaranteed to be monotonic: an admin correction can move phase backwards (e.g. Legal back to Pre-legal).

    Persists after case closure — reflects the case's last-known engagement phase, not the current Lifecycle. Note: this is a different field from a lead quote's own offered phase (the phase a partner's quote proposes to work the case at, if this case ever went through a quote flow) — this field is the case-level phase of its actual engagement, not a quote's terms.

  • claimTypestringnullable

    The type of claim for this case (e.g. "Unpaid Invoice", "Loan Repayment", "Breach of Contract"). Null if not set.

  • creditorDivisionIduuidnullable
  • debtorobject

    V1 Debtor DTO for external partner APIs. The debtor is the party that owes the debt.

  • collectionPartnerobject

    V1 Collection Partner DTO for external partner APIs

  • creditorobject

    Creditor (client) information for external partner APIs. Represents the party that the debtor owes money to.

  • bankAccountobject

    Bank account information for partner API. Full details provided as partners need this to:

    1. Provide payment instructions to debtors (when debtor pays client directly)
    2. Execute payouts to clients (when partner receives payment and pays out remainder)
  • blendedAgeUpliftPointsnumbernullable

    MULTI-INVOICE AGE BUCKET PRICING Calculated blended age uplift percentage points (0-20) for multi-invoice cases. Shows the additional fee percentage added due to invoice age. Formula: ((A12-A24)×10 + A24×20) / Total Principal Null for single-invoice cases (age uplift is calculated from due date instead).

  • preLegalSuccessFeenumbernullable

    PRE-LEGAL SUCCESS FEE The total pre-legal success fee percentage for this case. Includes base fee + age-based uplift (blended or single-invoice). Null if pricing has not been calculated yet or if case is not in pre-legal phase. Example: 20.5 represents 20.5% success fee.

  • solutionUrlstringnullableDeprecated

    When the case is created with allowPendingContracts=true and required contracts are unsigned, this URL points to the signing page. Null when contracts are already signed or not applicable.

  • signingHandoffobject

    Partner-facing handoff metadata for a creditor's pending signing chain. Returned on POST /cases responses (422 with pending-signing errors, or 200 with AllowPendingContracts=true when signings remain).

    Designed as an envelope so future fields (expiration, suggested email copy, etc.) can be added without polluting the parent DTO.

  • exclusivePeriodEndDatedatetimenullable

    The date the exclusive collection period ends (or ended). Null if no collection period has been created for this case (e.g. custom-terms cases). Use GET /cases/{id}/exclusive-period for the full chain including extensions.

  • disputeStatusstringnullable

    Whether the claim is disputed by the debtor. One of: "Yes, the claim is disputed", "No, the claim is not disputed", or "Don't Know". Null when the dispute status has not been set on the case.

  • validationobject

    Stable v1 validation summary used by ordinary and list mappings.

  • assignedUserobject

    Represents the creditor team member assigned to a case.

  • allocationOutstandingobject

    Outstanding amount per bucket on the case: each bucket's total minus the payments allocated to it.

Errors

400Creditor reference missing or empty
404No case found with this creditor reference

See Error handling.

GET/cases/by-creditor-reference/{creditorReference}
curl https://customer-api.debitura.com/cases/by-creditor-reference/INV-2026-0042 \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"reference": "INV-2026-0042",
"creditorReference": "INV-2026-0042",
"creditorComments": "Payment plan agreed with the debtor.",
"claimDescription": "string",
"grossAmount": 2500,
"remainder": 1.5,
"interestFees": 2500,
"reminderFees": 2500,
"collectionFees": 2500,
"totalAddedFees": 2500,
"currency": "EUR",
"isTestCase": true,
"lifecycle": "string",
"dueDate": "2026-10-01T14:05:00Z",
"date": "2026-10-01T14:05:00Z",
"dateFinished": "2026-10-01T14:05:00Z",
"dateCollectionStarted": "2026-10-01T14:05:00Z",
"closeCode": "string",
"currentEngagementPhase": "string",
"claimType": "string",
"creditorDivisionId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"debtor": {
"type": "Company",
"name": "Pacific Trading LLC",
"contactPerson": "John Smith",
"companyRegistrationNumber": "47-1234567",
"address": "123 Market Street, Suite 400",
"zipCode": "94105",
"city": "San Francisco",
"state": "California",
"stateAlpha2": "CA",
"countryAlpha2": "US",
"country": "United States",
"email": "accounts@pacifictrading.com",
"phone": "+1 415 555 0123"
},
"collectionPartner": {
"name": "Muster GmbH",
"officeEmail": "finance@example.com",
"officePhone": "+49 30 1234567",
"publicSite": "string",
"surveyCadenceMode": 0
},
"creditor": {
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"companyName": "Muster GmbH",
"companyRegistrationNumber": "DE123456789",
"officeEmail": "finance@example.com",
"officePhone": "+49 30 1234567",
"address": "Friedrichstraße 68",
"city": "Berlin",
"zipCode": "10115",
"state": "string",
"country": "Germany",
"division": {
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"name": "Muster GmbH"
}
},
"bankAccount": {
"id": 3,
"label": "string",
"scheme": "string",
"currencyCode": "EUR",
"bankCountryCode": "DE",
"accountHolderName": "Muster GmbH",
"iban": "string",
"bic": "string",
"accountNumber": "string",
"localIdentifier": "string",
"localIdentifierType": "string",
"bankName": "Muster GmbH",
"bankAddress": "Friedrichstraße 68",
"bankCity": "Berlin",
"bankZipCode": "10115",
"bankState": "string"
},
"blendedAgeUpliftPoints": 1.5,
"preLegalSuccessFee": 2500,
"solutionUrl": "https://app.debitura.com/…",
"signingHandoff": {
"combinedSigningUrl": "https://app.debitura.com/…"
},
"exclusivePeriodEndDate": "2026-10-01T14:05:00Z",
"disputeStatus": "string",
"validation": {
"needsInfo": true
},
"assignedUser": {
"email": "finance@example.com",
"name": "Muster GmbH"
},
"allocationOutstanding": {
"principal": 1.5,
"interest": 1.5,
"reminderFees": 2500,
"collectionFees": 2500
}
}

Get contract signing status for a case

GET/cases/{id}/contract-status

Returns the signing status of the SDCA (Standard Debt Collection Agreement), PoA (Power of Attorney), and Jurisdiction Pricing Appendix for a case.

Use case: When a case is stuck in PendingContractSigning, use this endpoint to determine which contract is missing and get the signing URL.

Response:

  • sdca: Always present — shows whether the debt collection agreement is signed
  • poa: Present only if a collection partner is assigned — shows whether the power of attorney is signed for that partner
  • NeedsPoaSigning: true when the case is blocked because a required PoA or Jurisdiction Pricing Appendix has not been signed
  • Each contract item includes a solutionUrl if signing or re-signing is needed
  • The solutionUrl is context-aware: referral partner bearer tokens get referral onboarding URLs, API keys get creditor app URLs

Path parameters

  • iduuidRequired

Returns

200 Contract status returned

  • sdcaobject

    Status of an individual contract (SDCA, PoA, or Pricing Appendix).

  • poaobject

    Status of an individual contract (SDCA, PoA, or Pricing Appendix).

  • pricingAppendixobject

    Status of an individual contract (SDCA, PoA, or Pricing Appendix).

  • collectionPartnerNamestringnullable

    Name of the assigned collection partner, if any.

  • needsPoaSigningboolean

    Whether the creditor needs to sign (or re-sign) a Power of Attorney. True when: POA is missing or stale, OR the debtor's country has an active jurisdiction pricing zone and the Jurisdiction Pricing Appendix (presented as POA) is missing or stale.

Errors

400ID missing, empty, or not a collection case
404Case not found, deleted, or does not belong to your account

See Error handling.

GET/cases/{id}/contract-status
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/contract-status \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"sdca": {
"signed": true,
"requiresResigning": true,
"solutionUrl": "https://app.debitura.com/…"
},
"poa": {
"signed": true,
"requiresResigning": true,
"solutionUrl": "https://app.debitura.com/…"
},
"pricingAppendix": {
"signed": true,
"requiresResigning": true,
"solutionUrl": "https://app.debitura.com/…"
},
"collectionPartnerName": "Muster GmbH",
"needsPoaSigning": true
}

Fetch case by reference

GET/cases/case-reference/{caseReference}

Returns case details for the provided Debitura case reference (example: Q8OAXF3W).

Path parameters

  • caseReferencestringRequired

Returns

200 Case found

  • iduuid
  • dateCreateddatetime
  • dateUpdateddatetimenullable
  • referencestringnullable
  • creditorReferencestringnullable
  • creditorCommentsstringnullable
  • claimDescriptionstringnullable
  • grossAmountnumber
  • remaindernumber
  • interestFeesnumber
  • reminderFeesnumber
  • collectionFeesnumber
  • totalAddedFeesnumber
  • currencystringnullable
  • isTestCaseboolean
  • lifecyclestringnullable
  • dueDatedatetime
  • datedatetime
  • dateFinisheddatetimenullable
  • dateCollectionStarteddatetimenullable
  • closeCodestringnullable
  • currentEngagementPhasestringnullable

    The current phase of the case's engagement: "Pre-legal", "Legal", or "Enforcement". A different axis from Lifecycle/CloseCode — an Active case can be in any of the three phases.

    Null means "no active engagement" (e.g. lead / quoting / pre-contract-signing / unassigned, or a data-consistency gap) — this is a distinct third state, NOT a synonym for Pre-legal. Most cases legitimately read Pre-legal; phase only leaves Pre-legal on legal/enforcement quote flows.

    Not guaranteed to be monotonic: an admin correction can move phase backwards (e.g. Legal back to Pre-legal).

    Persists after case closure — reflects the case's last-known engagement phase, not the current Lifecycle. Note: this is a different field from a lead quote's own offered phase (the phase a partner's quote proposes to work the case at, if this case ever went through a quote flow) — this field is the case-level phase of its actual engagement, not a quote's terms.

  • claimTypestringnullable

    The type of claim for this case (e.g. "Unpaid Invoice", "Loan Repayment", "Breach of Contract"). Null if not set.

  • creditorDivisionIduuidnullable
  • debtorobject

    V1 Debtor DTO for external partner APIs. The debtor is the party that owes the debt.

  • collectionPartnerobject

    V1 Collection Partner DTO for external partner APIs

  • creditorobject

    Creditor (client) information for external partner APIs. Represents the party that the debtor owes money to.

  • bankAccountobject

    Bank account information for partner API. Full details provided as partners need this to:

    1. Provide payment instructions to debtors (when debtor pays client directly)
    2. Execute payouts to clients (when partner receives payment and pays out remainder)
  • blendedAgeUpliftPointsnumbernullable

    MULTI-INVOICE AGE BUCKET PRICING Calculated blended age uplift percentage points (0-20) for multi-invoice cases. Shows the additional fee percentage added due to invoice age. Formula: ((A12-A24)×10 + A24×20) / Total Principal Null for single-invoice cases (age uplift is calculated from due date instead).

  • preLegalSuccessFeenumbernullable

    PRE-LEGAL SUCCESS FEE The total pre-legal success fee percentage for this case. Includes base fee + age-based uplift (blended or single-invoice). Null if pricing has not been calculated yet or if case is not in pre-legal phase. Example: 20.5 represents 20.5% success fee.

  • solutionUrlstringnullableDeprecated

    When the case is created with allowPendingContracts=true and required contracts are unsigned, this URL points to the signing page. Null when contracts are already signed or not applicable.

  • signingHandoffobject

    Partner-facing handoff metadata for a creditor's pending signing chain. Returned on POST /cases responses (422 with pending-signing errors, or 200 with AllowPendingContracts=true when signings remain).

    Designed as an envelope so future fields (expiration, suggested email copy, etc.) can be added without polluting the parent DTO.

  • exclusivePeriodEndDatedatetimenullable

    The date the exclusive collection period ends (or ended). Null if no collection period has been created for this case (e.g. custom-terms cases). Use GET /cases/{id}/exclusive-period for the full chain including extensions.

  • disputeStatusstringnullable

    Whether the claim is disputed by the debtor. One of: "Yes, the claim is disputed", "No, the claim is not disputed", or "Don't Know". Null when the dispute status has not been set on the case.

  • validationobject

    Stable v1 validation summary used by ordinary and list mappings.

  • assignedUserobject

    Represents the creditor team member assigned to a case.

  • allocationOutstandingobject

    Outstanding amount per bucket on the case: each bucket's total minus the payments allocated to it.

Errors

400Reference missing or reference is not a collection case
404Reference not found or case does not belong to your account

See Error handling.

GET/cases/case-reference/{caseReference}
curl https://customer-api.debitura.com/cases/case-reference/INV-2026-0042 \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"reference": "INV-2026-0042",
"creditorReference": "INV-2026-0042",
"creditorComments": "Payment plan agreed with the debtor.",
"claimDescription": "string",
"grossAmount": 2500,
"remainder": 1.5,
"interestFees": 2500,
"reminderFees": 2500,
"collectionFees": 2500,
"totalAddedFees": 2500,
"currency": "EUR",
"isTestCase": true,
"lifecycle": "string",
"dueDate": "2026-10-01T14:05:00Z",
"date": "2026-10-01T14:05:00Z",
"dateFinished": "2026-10-01T14:05:00Z",
"dateCollectionStarted": "2026-10-01T14:05:00Z",
"closeCode": "string",
"currentEngagementPhase": "string",
"claimType": "string",
"creditorDivisionId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"debtor": {
"type": "Company",
"name": "Pacific Trading LLC",
"contactPerson": "John Smith",
"companyRegistrationNumber": "47-1234567",
"address": "123 Market Street, Suite 400",
"zipCode": "94105",
"city": "San Francisco",
"state": "California",
"stateAlpha2": "CA",
"countryAlpha2": "US",
"country": "United States",
"email": "accounts@pacifictrading.com",
"phone": "+1 415 555 0123"
},
"collectionPartner": {
"name": "Muster GmbH",
"officeEmail": "finance@example.com",
"officePhone": "+49 30 1234567",
"publicSite": "string",
"surveyCadenceMode": 0
},
"creditor": {
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"companyName": "Muster GmbH",
"companyRegistrationNumber": "DE123456789",
"officeEmail": "finance@example.com",
"officePhone": "+49 30 1234567",
"address": "Friedrichstraße 68",
"city": "Berlin",
"zipCode": "10115",
"state": "string",
"country": "Germany",
"division": {
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"name": "Muster GmbH"
}
},
"bankAccount": {
"id": 3,
"label": "string",
"scheme": "string",
"currencyCode": "EUR",
"bankCountryCode": "DE",
"accountHolderName": "Muster GmbH",
"iban": "string",
"bic": "string",
"accountNumber": "string",
"localIdentifier": "string",
"localIdentifierType": "string",
"bankName": "Muster GmbH",
"bankAddress": "Friedrichstraße 68",
"bankCity": "Berlin",
"bankZipCode": "10115",
"bankState": "string"
},
"blendedAgeUpliftPoints": 1.5,
"preLegalSuccessFee": 2500,
"solutionUrl": "https://app.debitura.com/…",
"signingHandoff": {
"combinedSigningUrl": "https://app.debitura.com/…"
},
"exclusivePeriodEndDate": "2026-10-01T14:05:00Z",
"disputeStatus": "string",
"validation": {
"needsInfo": true
},
"assignedUser": {
"email": "finance@example.com",
"name": "Muster GmbH"
},
"allocationOutstanding": {
"principal": 1.5,
"interest": 1.5,
"reminderFees": 2500,
"collectionFees": 2500
}
}

Fetch case timeline

GET/cases/{id}/timeline

Returns the full event timeline for the case along with the current engagement phase.

Response shape:

  • items — chronological list of timeline events
  • currentEngagementPhase — current phase of the active engagement: "Pre-legal", "Legal", or "Enforcement". Null when no active engagement exists.

Path parameters

  • iduuidRequired

Returns

200 Timeline returned

  • itemsarray of objectsnullableRequired

    Chronological list of events on the case.

  • currentEngagementPhasestringnullable

    The current engagement phase of the case, sourced from CaseEngagement.CurrentPhase. Possible values: "Pre-legal", "Legal", "Enforcement". Null when no active engagement exists (e.g. case not yet assigned to a partner).

Errors

400ID missing
404Case not found

See Error handling.

GET/cases/{id}/timeline
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/timeline \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"items": [
{
"date": "2026-10-01T14:05:00Z",
"type": "string",
"title": "string",
"description": "string",
"relatedCases": [
{
"id": {},
"reference": {}
}
],
"actor": {
"type": "string",
"name": "Muster GmbH"
}
}
],
"currentEngagementPhase": "string"
}

Fetch case chats

GET/cases/{id}/chats

Returns all chat messages attached to the case.

Path parameters

  • iduuidRequired

Returns

200 Chats returned — a list of the objects below.

  • iduuid
  • dateCreateddatetime
  • dateUpdateddatetimenullable
  • roleenumDeprecated

    Deprecated: kept as a number and never removed, but not extended — read roleLabel instead. Sender role: 0 = Partner, 1 = Creditor, 2 = ManagedByPartner.

    One of012
  • roleLabelstringnullable

    The sender role, readable. Always one of "Partner", "Creditor" or "Managed by partner" — these values are stable.

  • messagestringnullable
  • isSeenboolean
  • userobject

Errors

400ID missing
404Case not found

See Error handling.

GET/cases/{id}/chats
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/chats \
-H "XApiKey: $DEBITURA_API_KEY"
Response
[
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"role": 0,
"roleLabel": "string",
"message": "Payment plan agreed with the debtor.",
"isSeen": true,
"user": {
"id": 3,
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"firstName": "Anna",
"lastName": "Schmidt",
"email": "finance@example.com"
}
}
]

Send a chat message

POST/cases/{id}/chats

Posts a new chat message on a case, visible to both you and the collection partner.

Message Details:

  • The message is attributed to the team member identified by userId
  • The collection partner will receive an email notification about the new message
  • Messages appear in the case chat timeline in chronological order

Prerequisites:

  • The case must exist and belong to your account
  • The userId must be a valid user ID from GET /users belonging to your team

Use Case: Use this endpoint to communicate with collection partners about case progress, provide additional information, or respond to partner questions. Messages sent via this endpoint are equivalent to messages sent through the creditor portal chat.

Path parameters

  • iduuidRequired

Request body

  • messagestringRequired

    The chat message content to send.

    Max 10000 characters
  • userIduuidnullableDeprecated

    ID of the team member sending this message. Must be a valid user ID from GET /users belonging to your team. Deprecated: use UserEmail instead. At least one of UserId or UserEmail must be provided.

  • userEmailstringnullable

    Email address of the team member sending this message. Must correspond to an active member of your team (same account as the API key). Preferred over UserId. At least one of UserEmail or UserId must be provided.

    Email address

Returns

200 Chat message sent successfully

  • iduuid
  • dateCreateddatetime
  • dateUpdateddatetimenullable
  • roleenumDeprecated

    Deprecated: kept as a number and never removed, but not extended — read roleLabel instead. Sender role: 0 = Partner, 1 = Creditor, 2 = ManagedByPartner.

    One of012
  • roleLabelstringnullable

    The sender role, readable. Always one of "Partner", "Creditor" or "Managed by partner" — these values are stable.

  • messagestringnullable
  • isSeenboolean
  • userobject

Errors

400Validation error — missing fields, invalid userId, or invalid request body
404Case not found
500Internal server error

See Error handling.

POST/cases/{id}/chats
curl -X POST https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/chats \
-H "XApiKey: $DEBITURA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": "Please provide the signed contract for this case.",
"userId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"userEmail": "john.doe@example.com"
}'
Response
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"role": 0,
"roleLabel": "string",
"message": "Payment plan agreed with the debtor.",
"isSeen": true,
"user": {
"id": 3,
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"firstName": "Anna",
"lastName": "Schmidt",
"email": "finance@example.com"
}
}

Fetch case payments

GET/cases/{id}/payments

Returns every payment recorded on the case.

Path parameters

  • iduuidRequired

Returns

200 Payments returned — a list of the objects below.

  • iduuid
  • dateCreateddatetime
  • dateUpdateddatetimenullable
  • datedatetime
  • grossAmountnumber
  • recipientstringnullableRequired
  • methodstringnullableRequired
  • currencystringnullableRequired
  • invoiceobjectRequired

Errors

400ID missing
404Case not found

See Error handling.

GET/cases/{id}/payments
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/payments \
-H "XApiKey: $DEBITURA_API_KEY"
Response
[
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"date": "2026-10-01T14:05:00Z",
"grossAmount": 2500,
"recipient": "string",
"method": "string",
"currency": "EUR",
"invoice": {
"status": "string",
"reference": "INV-2026-0042",
"invoiceId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31"
}
}
]

Get case files

GET/cases/{id}/files

Returns all files associated with the specified case.

Path parameters

  • iduuidRequired

Returns

200 Files retrieved successfully — a list of the objects below.

  • iduuid
  • dateCreateddatetime
  • dateUpdateddatetime
  • caseIduuid
  • entityTypestringnullable
  • entityIduuid
  • fileNamestringnullable
  • urlstringnullable
  • descriptionstringnullable
  • documentTypestringnullable

Errors

400Invalid case ID
404Case not found
500Server error

See Error handling.

GET/cases/{id}/files
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/files \
-H "XApiKey: $DEBITURA_API_KEY"
Response
[
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"caseId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"entityType": "string",
"entityId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"fileName": "Muster GmbH",
"url": "https://app.debitura.com/…",
"description": "string",
"documentType": "string"
}
]

Upload a file to a case

POST/cases/{id}/files

Uploads a file and associates it with a case.

File requirements:

  • Maximum file size: 25MB
  • Allowed file types: PDF (.pdf), Excel (.xls, .xlsx), CSV (.csv), Text (.TXT), Images (.jpg, .jpeg, .png, .gif)

The file will be stored securely and associated with the specified case.

Document type (optional, case-insensitive). Omit it when you do not know it; the file is then stored as not specified.

  • OriginalInvoice - Invoice or credit note
  • AccountStatement - Statement of account
  • Contract - Contract or agreement
  • TermsAndConditions - Terms and conditions
  • ProofOfDelivery - Order or proof of delivery
  • DemandLetter - Reminder or demand letter
  • Correspondence - Correspondence with the debtor
  • PaymentProof - Proof of payment
  • CourtDocument - Court or legal document
  • IdentityDocument - Identity document
  • Miscellaneous - Other

Still accepted for existing integrations: DebtorDocuments, CreditorDocuments, PartnerDocuments. Any other value is rejected with 400 and error InvalidDocumentType.

Path parameters

  • iduuidRequired

Request bodymultipart/form-data

  • Descriptionstring
  • DocumentTypestring
  • FilefileRequired

Returns

200 File uploaded successfully

  • iduuid
  • dateCreateddatetime
  • dateUpdateddatetime
  • caseIduuid
  • entityTypestringnullable
  • entityIduuid
  • fileNamestringnullable
  • urlstringnullable
  • descriptionstringnullable
  • documentTypestringnullable

Errors

400Invalid request
404Case not found
413File too large
415Unsupported file type
500Server error

See Error handling.

POST/cases/{id}/files
curl -X POST https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/files \
-H "XApiKey: $DEBITURA_API_KEY" \
-F "file=@invoice.pdf"
Response
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z",
"caseId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"entityType": "string",
"entityId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"fileName": "Muster GmbH",
"url": "https://app.debitura.com/…",
"description": "string",
"documentType": "string"
}

List quote requests for a case

GET/cases/{id}/quote-requests

Returns all quote requests for the specified case. Multiple quote requests can exist per case.

Path parameters

  • iduuidRequired

Returns

200 Quote requests returned

  • quoteRequestsarray of objectsnullableRequired

    V1 Lead DTO for external customer APIs (summary view)

Errors

400Invalid case ID
404Case not found

See Error handling.

GET/cases/{id}/quote-requests
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/quote-requests \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"quoteRequests": [
{
"quoteRequestId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"caseId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"status": "string",
"leadFlowStatus": "string",
"quoteType": "string",
"maxQuotes": 3,
"currentQuotesCount": 42,
"outcome": "string",
"purpose": "string",
"dateCreated": "2026-10-01T14:05:00Z",
"dateQualified": "2026-10-01T14:05:00Z",
"leadsDoneOffered": "2026-10-01T14:05:00Z",
"dateReminderSent": "2026-10-01T14:05:00Z",
"dateReminderTwoSent": "2026-10-01T14:05:00Z",
"dateOutcomeSelected": "2026-10-01T14:05:00Z"
}
]
}

Get quote request details

GET/cases/{id}/quote-requests/{quoteRequestId}

Returns detailed information for a specific quote request including computed properties.

Path parameters

  • iduuidRequired
  • quoteRequestIduuidRequired

Returns

200 Quote request found

  • quoteRequestIduuid
  • caseIduuid
  • statusstringnullableRequired
  • leadFlowStatusstringnullableRequired
  • quoteTypestringnullableRequired
  • maxQuotesinteger
  • currentQuotesCountinteger
  • isMaxBidCountReachedboolean
  • outcomestringnullable
  • requeststringnullable
  • existingFeesstringnullable
  • dateCreateddatetime
  • dateQualifieddatetimenullable
  • leadsDoneOffereddatetimenullable
  • dateReminderSentdatetimenullable
  • dateReminderTwoSentdatetimenullable
  • dateOutcomeSelecteddatetimenullable

Errors

400Invalid ID
404Quote request or case not found

See Error handling.

GET/cases/{id}/quote-requests/{quoteRequestId}
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/quote-requests/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31 \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"quoteRequestId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"caseId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"status": "string",
"leadFlowStatus": "string",
"quoteType": "string",
"maxQuotes": 3,
"currentQuotesCount": 42,
"isMaxBidCountReached": true,
"outcome": "string",
"request": "string",
"existingFees": "string",
"dateCreated": "2026-10-01T14:05:00Z",
"dateQualified": "2026-10-01T14:05:00Z",
"leadsDoneOffered": "2026-10-01T14:05:00Z",
"dateReminderSent": "2026-10-01T14:05:00Z",
"dateReminderTwoSent": "2026-10-01T14:05:00Z",
"dateOutcomeSelected": "2026-10-01T14:05:00Z"
}

List quotes for a quote request

GET/cases/{id}/quote-requests/{quoteRequestId}/quotes

Returns all partner quotes received for the specified quote request.

Path parameters

  • iduuidRequired
  • quoteRequestIduuidRequired

Returns

200 Quotes returned

  • quotesarray of objectsnullableRequired

    V1 Lead Quote DTO for external customer APIs (summary view)

Errors

400Invalid ID
404Quote request or case not found

See Error handling.

GET/cases/{id}/quote-requests/{quoteRequestId}/quotes
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/quote-requests/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/quotes \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"quotes": [
{
"quoteId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"quoteRequestId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"partnerId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"partnerName": "Muster GmbH",
"status": "string",
"agreementType": "string",
"hourlyRate": 1.5,
"hourlyEstimated": 1.5,
"flatFeeEstimate": 2500,
"successFee": 2500,
"hybridEstimate": 1.5,
"proposedSolution": "string",
"partnerWhyUsSection": "string",
"phase": "string",
"offerNature": "string",
"currency": "EUR",
"dateCreated": "2026-10-01T14:05:00Z"
}
]
}

Get quote details

GET/cases/{id}/quote-requests/{quoteRequestId}/quotes/{quoteId}

Returns complete details for a specific quote including full pricing breakdown.

Path parameters

  • iduuidRequired
  • quoteRequestIduuidRequired
  • quoteIduuidRequired

Returns

200 Quote found

  • quoteIduuid
  • quoteRequestIduuid
  • partnerIduuid
  • partnerNamestringnullableRequired
  • statusstringnullableRequired
  • agreementTypestringnullableRequired
  • pricingobjectRequired

    Nested pricing details for a lead quote

  • currencystringnullableRequired
  • proposedSolutionstringnullable
  • feeCommentsstringnullable
  • partnerWhyUsSectionstringnullable
  • fullQuoteLinkstringnullable
  • dateCreateddatetime
  • dateUpdateddatetimenullable

Errors

400Invalid ID
404Quote, quote request, or case not found
500Internal server error

See Error handling.

GET/cases/{id}/quote-requests/{quoteRequestId}/quotes/{quoteId}
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/quote-requests/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/quotes/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31 \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"quoteId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"quoteRequestId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"partnerId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"partnerName": "Muster GmbH",
"status": "string",
"agreementType": "string",
"pricing": {
"hourlyRate": 1.5,
"hourlyEstimated": 1.5,
"flatFeeEstimate": 2500,
"successFeeFee": 2500,
"hybridEstimate": 1.5,
"costProcessMisc": 1.5
},
"currency": "EUR",
"proposedSolution": "string",
"feeComments": "Payment plan agreed with the debtor.",
"partnerWhyUsSection": "string",
"fullQuoteLink": "https://app.debitura.com/…",
"dateCreated": "2026-10-01T14:05:00Z",
"dateUpdated": "2026-10-01T14:05:00Z"
}

Get exclusive collection period chain

GET/cases/{id}/exclusive-period

Returns the full exclusive collection period chain for a case, including the initial period and any extensions triggered by debtor actions (promise to pay, payment agreement, or actual payment).

Path parameters

  • iduuidRequired

Returns

200 Chain returned

  • engagementStartDatedatetime

    Start date of the initial exclusivity engagement.

  • currentEndDatedatetime

    Current end date of the exclusive period (after any extensions).

  • daysRemaininginteger

    Days remaining until the period ends. Negative when the period has naturally expired. Zero when the engagement was terminated early (partner change or withdrawal), regardless of the original end date.

  • statusstringnullable

    Current status of the exclusive period: Active, Expired, or Terminated. Active — partner has exclusive rights. Expired — period ended naturally (time elapsed or case resolved). Terminated — period was ended early (partner change, withdrawal, etc.).

  • extensionsarray of objectsnullable

    Each extension event that occurred within the current engagement, in chronological order. Empty for cases that have never had an extension triggered.

Errors

400ID missing or empty
404Case not found, does not belong to your account, or no collection period exists

See Error handling.

GET/cases/{id}/exclusive-period
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/exclusive-period \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"engagementStartDate": "2026-10-01T14:05:00Z",
"currentEndDate": "2026-10-01T14:05:00Z",
"daysRemaining": 3,
"status": "string",
"extensions": [
{
"type": "string",
"eventDate": "2026-10-01T14:05:00Z",
"newEndDate": "2026-10-01T14:05:00Z"
}
]
}

Get full validation detail for a case

GET/cases/{id}/validation

Returns the full creditor-facing validation status for a case, including the resolution area and description for each outstanding item.

When to call: Check validation.needsInfo on GET /cases/{id}. If true, call this endpoint to retrieve the item-level breakdown of what the creditor must supply.

Safety: Only creditor-facing resolution areas are returned. Internal areas (InternalReview, AdminReview) and sensitive fields (Rationale, Confidence) are never exposed.

Path parameters

  • iduuidRequired

Returns

200 Full validation status returned

  • needsInfoboolean
  • creditorRespondedAtdatetimenullable
  • itemsarray of objectsnullable

Errors

400ID missing, empty, or not a collection case
404Case not found or does not belong to your account

See Error handling.

GET/cases/{id}/validation
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/validation \
-H "XApiKey: $DEBITURA_API_KEY"
Response
{
"needsInfo": true,
"creditorRespondedAt": "2026-10-01T14:05:00Z",
"items": [
{
"resolutionArea": "string",
"description": "string"
}
]
}

List tasks for a case

GET/cases/{id}/tasks

Returns every open task (action-item) attached to this specific case. Same data as GET /tasks, scoped to one case — use this when you're already working a specific case and want just its outstanding tasks.

Note: account-level tasks that aren't tied to a single case (e.g. SignContract, AssignBankAccount — these block your whole account, not one case) never appear here; call GET /tasks to see those. The same goes for lead-scoped tasks (e.g. SelectQuoteWinner), which are attached to a lead rather than a case.

Note: the quote-review tasks (IncumbentLegalQuotePending, ReviewQuotes) DO appear here — they are attached to the case — but they are decided on the lead behind it, so they normally carry a leadId and their solutionUrl points at that lead rather than this case. On the rare row with no lead recorded, leadId is null and solutionUrl falls back to this case's page.

Filtering:

  • status (default: Open) — Open or Solved
  • type (repeatable, e.g. ?type=ReplyToChat) — restrict to specific task types

No pagination — a single case has few tasks.

Path parameters

  • iduuidRequired

Query parameters

  • statusstring
  • typearray of strings

Returns

200 Tasks returned — a list of the objects below.

  • iduuid

    The task's unique ID.

  • typestringnullable

    Stable string code for the task type (e.g. "ReplyToChat"). This is the public, additive-safe contract — it does NOT track the internal integer enum used in storage.

  • typeLabelstringnullable

    Human-readable label for Type (e.g. "Reply to chat").

  • titlestringnullable

    Short task title, as shown in the Creditor app.

  • descriptionstringnullable

    Optional longer description of what the task requires.

  • statusstringnullable

    Either "Open" or "Solved".

  • caseIduuidnullable

    The case (collection case / invoice) this task belongs to, when applicable. Null for account-level tasks not tied to a single case (e.g. SignContract, AssignBankAccount).

  • caseReferencestringnullable

    Your reference for CaseId, if any.

  • leadIduuidnullable

    The lead this task belongs to, if any. Populated for lead-scoped tasks, and for the quote-review tasks (IncumbentLegalQuotePending, ReviewQuotes) — which are attached to a case but decided on the lead, so those carry both caseId and leadId, and their solutionUrl points at the lead. Null for every other task type. On the rare quote-review row with no lead recorded, leadId is null and solutionUrl falls back to the case page — the two never disagree.

  • deadlinedatetimenullable

    When this task is due, if a deadline is set.

  • dateCreateddatetime

    When the task was created.

  • dateSolveddatetimenullable

    When the task was resolved, if it has been.

  • solutionUrlstringnullable

    Absolute URL — identical to the one the Creditor app itself links to — where a human can resolve this task. Always present, regardless of whether Action is populated.

  • actionobject

    A machine-readable hint pointing at the existing API call that resolves a task, e.g. { "method": "POST", "path": "/cases/{caseId}/chats" } for a chat-driven task.

    Path uses the same {param} placeholder style as this API's own documented routes — substitute in the real IDs before calling.

Errors

400ID missing, or invalid status/type filter
404Case not found

See Error handling.

GET/cases/{id}/tasks
curl https://customer-api.debitura.com/cases/3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31/tasks \
-H "XApiKey: $DEBITURA_API_KEY"
Response
[
{
"id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"type": "string",
"typeLabel": "string",
"title": "string",
"description": "string",
"status": "string",
"caseId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"caseReference": "INV-2026-0042",
"leadId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
"deadline": "2026-10-01T14:05:00Z",
"dateCreated": "2026-10-01T14:05:00Z",
"dateSolved": "2026-10-01T14:05:00Z",
"solutionUrl": "https://app.debitura.com/…",
"action": {
"method": "string",
"path": "string"
}
}
]