Skip to main content

Preview Case Pricing

Look up the Debitura success fee for a potential case before your client onboards. No case is created and no client account is required.

Overview

Call POST /cases/preview to check whether a jurisdiction is covered and what the success fee will be. Use this in your sales or onboarding flow to show clients their expected fee upfront, or to gate the onboarding flow based on coverage.

Pricing returned reflects your referral partner's agreed rate — including carve-out pricing where applicable.

Business context: See Success Fees for how Debitura calculates pricing, including age-based surcharge tiers.

Implementation

Check eligibility and pricing

POST https://referral-api.debitura.com/cases/preview
XApiKey: YOUR_API_KEY
Content-Type: application/json

{
"amountToRecover": 50000,
"currencyCode": "GBP",
"debtor": {
"type": "Company",
"countryAlpha2": "GB"
}
}

For US debtors, debtor.stateAlpha2 is required to resolve the correct jurisdiction (e.g. "CA", "NY").

Read the response

Eligible:

{
"isEligible": true,
"ineligibilityReason": null,
"jurisdiction": {
"id": 42,
"name": "United Kingdom",
"countryAlpha2": "GB",
"stateAlpha2": null
},
"pricingPreview": {
"baseSuccessFeePercentage": 18.0,
"ageSurchargePercentage": 0.0,
"totalSuccessFeePercentage": 18.0,
"currencyCode": "GBP",
"pricingSource": "Standard agreement",
"pricingSourceDescription": "18% success fee — Standard Debitura collection rates (International zone, $10,000–$49,999 tier)"
}
}

totalSuccessFeePercentage is the definitive rate to use — it is baseSuccessFeePercentage + ageSurchargePercentage with all age adjustments already applied. Show this to clients and use it in calculations.

pricingSource tells you which pricing rule was applied. pricingSourceDescription gives a human-readable explanation including the fee, zone, and bracket. Possible pricingSource values:

ValueMeaning
Standard agreementDefault Debitura SDCA rates
Creditor custom pricingCustom rate agreed between creditor and partner
Managing partner custom pricingCustom rate agreed between managing partner and partner
Jurisdiction custom pricingReferral partner carve-out rate for a specific jurisdiction
Partner custom pricingCollection partner's own custom rate brackets
Accepted quoteCustom quote for legal or non-standard cases

Ineligible:

jurisdiction is always present — it reflects the resolved jurisdiction even when no partner is available there. When isEligible is false, pricingPreview is null and ineligibilityReason explains why.

{
"isEligible": false,
"ineligibilityReason": "We don't have an exclusive pre-legal partner in the provided jurisdiction.",
"jurisdiction": {
"id": 15,
"name": "Greenland",
"countryAlpha2": "GL",
"stateAlpha2": null
},
"pricingPreview": null
}

Do not proceed to onboarding for ineligible cases.

Age-based pricing

By default, the endpoint returns the base rate only. To get a rate that accounts for invoice age, use one of two approaches:

  • Single invoice — pass dueDate (simplest)
  • Multi-invoice portfolio — pass age bucket fields

dueDate and age bucket fields are mutually exclusive.

Single invoice: pass dueDate

Pass the invoice due date as an ISO 8601 date string (YYYY-MM-DD). Debitura computes the age surcharge internally — no bucket arithmetic needed.

Example — single invoice, 14 months overdue:

POST https://referral-api.debitura.com/cases/preview
XApiKey: YOUR_API_KEY
Content-Type: application/json

{
"amountToRecover": 50000,
"currencyCode": "GBP",
"dueDate": "2024-01-15",
"debtor": {
"type": "Company",
"countryAlpha2": "GB"
}
}

Response:

{
"isEligible": true,
"ineligibilityReason": null,
"jurisdiction": {
"id": 42,
"name": "United Kingdom",
"countryAlpha2": "GB",
"stateAlpha2": null
},
"pricingPreview": {
"baseSuccessFeePercentage": 18.0,
"ageSurchargePercentage": 8.0,
"totalSuccessFeePercentage": 26.0,
"currencyCode": "GBP",
"pricingSource": "Standard agreement",
"pricingSourceDescription": "18% success fee — Standard Debitura collection rates (International zone, $10,000–$49,999 tier)"
}
}

Portfolio: blended age pricing

For portfolios with invoices at different ages, pass the portion of the total that falls into each age bucket. amountToRecoverOver12Months and amountToRecoverOver24Months must always be provided together.

amountToRecoverOver6Months is optional — it improves carve-out tier accuracy for the 180-day threshold and must satisfy:

  • Can only be provided alongside both amountToRecoverOver12Months and amountToRecoverOver24Months
  • Must be >= amountToRecoverOver12Months (the 6-month bucket includes the 12-month bucket)
  • Must be <= amountToRecover (must be a subset of the total)

Example — portfolio with mixed ages:

POST https://referral-api.debitura.com/cases/preview
XApiKey: YOUR_API_KEY
Content-Type: application/json

{
"amountToRecover": 100000,
"currencyCode": "GBP",
"amountToRecoverOver6Months": 60000,
"amountToRecoverOver12Months": 40000,
"amountToRecoverOver24Months": 15000,
"debtor": {
"type": "Company",
"countryAlpha2": "GB"
}
}

The blended ageSurchargePercentage and resulting totalSuccessFeePercentage are calculated automatically.

Error handling

StatusFieldCauseAction
401Missing or invalid XApiKeyVerify the API key is present in the request header
400amountToRecoverZero or negativeValidate positive numbers before calling
400debtor.typeValue other than Company or PrivateCheck the debtor type mapping in your system
400debtor.countryAlpha2Unrecognised country codeValidate against ISO 3166-1 alpha-2
400debtor.countryAlpha2US debtor missing stateAlpha2Require stateAlpha2 when countryAlpha2 is US
400currencyCodeNot a recognised 3-letter ISO 4217 codeValidate length (must be exactly 3 chars) and value
400dueDateFuture dateDue date cannot be in the future
400dueDateCombined with any age bucket fieldUse dueDate or age bucket fields — not both
400amountToRecoverOver12MonthsProvided without amountToRecoverOver24Months (or vice versa)Always send the 12- and 24-month fields together
400amountToRecoverOver6MonthsProvided without amountToRecoverOver12Months and amountToRecoverOver24MonthsOver6 requires both 12- and 24-month fields
400amountToRecoverOver6MonthsLess than amountToRecoverOver12MonthsThe 6-month bucket must include the 12-month bucket
400amountToRecoverOver6MonthsExceeds amountToRecoverAge bucket values must be subsets of the total
400amountToRecoverOver12MonthsExceeds amountToRecoverAge bucket values must be subsets of the total
400amountToRecoverOver24MonthsExceeds amountToRecoverOver12MonthsThe 24-month bucket must be a subset of the 12-month bucket
400any age fieldNegative valueAll age bucket values must be non-negative

400 responses from field validation use a field-keyed error format: { "fieldName": ["error message"] }. 400 responses from model binding (e.g. wrong type) use the standard ASP.NET ProblemDetails shape.

What's next