---
title: "Preview case eligibility and requirements"
method: POST
path: "/cases/preview"
tags: ["Cases"]
---

# 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)

**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
- The preview uses the same eligibility logic as POST /cases
- 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

- DebituraWebExternalApiContractsV1CasesRequestsPreviewCaseRequestApiViewModel — Request model for previewing case eligibility, partner assignment, and required actions before actually creating a collection case. This endpoint allows you to check: - Whether a case would be eligible for collection (partner coverage available) - Which partner would be assigned - What documents need to be signed (SDCA, Power of Attorney) - Estimated pricing with age-based surcharges Use this to guide users through document signing before final case submission.
  - `amountToRecover` number, double, required — 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.
  - `currencyCode` string, required — ISO 4217 currency code for the amount (e.g., "DKK", "EUR", "USD")
  - `debtor` DebituraWebExternalApiContractsV1CasesRequestsPreviewDebtorDto, required — Simplified debtor information for case preview. Only includes the minimum fields required for partner routing and eligibility checking.
    - `type` string, required — Debtor type. Valid values: "Company" or "Private" This affects partner selection as different partners may specialize in B2B vs B2C collection.
    - `countryAlpha2` string, required — Country code (ISO 3166-1 alpha-2 format, e.g., "DK", "US", "PL") Used to determine jurisdiction and available collection partners.
    - `stateAlpha2` string, nullable — US state code (e.g., "CA", "NY") REQUIRED for United States cases only, as US partner coverage is state-specific. Optional for other countries.
  - `amountToRecoverOver6Months` number, double, nullable — 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
  - `amountToRecoverOver12Months` number, double, nullable — 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
  - `amountToRecoverOver24Months` number, double, nullable — 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
  - `dueDate` string, date-time, nullable — Optional invoice due date. Mutually exclusive with age bucket fields. If provided, Debitura computes the age surcharge internally — no need to calculate age buckets. Cannot be a future date.
  - `returnUrl` string, nullable — 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.

## Response `200`

Preview completed

- DebituraWebExternalApiContractsV1CasesPreviewCaseResponseApiViewModel — Response from previewing a case, showing eligibility, partner assignment, required actions, and pricing estimates.
  - `result` DebituraWebExternalApiContractsV1CasesPreviewResultDto — Detailed preview result for a case submission.
    - `isEligible` boolean — Whether the case is eligible for collection (i.e., a collection partner is available). If false, check IneligibilityReason for details.
    - `ineligibilityReason` string, nullable — Explanation of why the case is not eligible (only present when IsEligible = false). Common reasons: "We don't have an exclusive pre-legal partner in the provided jurisdiction."
    - `partnerAssignment` DebituraWebExternalApiContractsV1CasesPartnerAssignmentDto — Information about the collection partner assigned to this case.
      - `collectionPartnerId` string, uuid — Unique identifier for the collection partner.
      - `partnerName` string, nullable — Display name of the collection partner company.
      - `partnerCountry` string, nullable — ISO 3166-1 alpha-2 country code for the partner's primary country.
    - `requiredActions` DebituraWebExternalApiContractsV1CasesRequiredActionDto[], nullable — List of actions required before the case can be submitted (e.g., sign contracts). Empty if no actions are required. Each action includes a solution URL to complete the requirement.
      - `type` string, nullable — The type of action required. Common values: "MissingDebtCollectionContract", "MissingPowerOfAttorney"
      - `message` string, nullable — Human-readable description of what is required.
      - `solutionUrl` string, nullable — URL where the user can complete this <i>specific</i> action (e.g., contract signing page). The URL is context-aware: referral partner tokens get referral onboarding URLs, regular API keys get standard creditor app URLs. Partners who want a <b>single URL</b> that walks the user through every pending action in one chain — instead of forwarding one URL per `RequiredActionDto` — should use Debitura.Web.ExternalApi.Contracts.V1.Cases.PreviewResultDto.SigningHandoff's `CombinedSigningUrl`. The two are complementary: `SolutionUrl` is granular per-action; `CombinedSigningUrl` is the chain-walking alternative for signing-related actions.
      - `isBlocking` boolean — Whether this action must be completed before case submission. Currently all returned actions are blocking (true).
    - `jurisdiction` DebituraWebExternalApiContractsV1CasesJurisdictionDto — Geographic jurisdiction information for the case.
      - `id` integer — Internal jurisdiction identifier.
      - `name` string, nullable — Display name of the jurisdiction (e.g., "Denmark", "United States - California").
      - `countryAlpha2` string, nullable — ISO 3166-1 alpha-2 country code.
      - `stateAlpha2` string, nullable — ISO 3166-2 state/region code (only for countries with state-level routing like the US).
    - `pricingPreview` DebituraWebExternalApiContractsV1CasesPricingPreviewDto — Estimated pricing for the case, including age-based surcharges.
      - `baseSuccessFeePercentage` number, double — Base success fee percentage before age surcharges. This is the standard rate for cases under 12 months overdue.
      - `ageSurchargePercentage` number, double — Additional percentage points added for aged invoices. Calculated based on invoice age: - 12-24 months overdue: +8 percentage points - 24+ months overdue: +15 percentage points - Multi-invoice with mixed ages: blended rate (0-15 percentage points)
      - `totalSuccessFeePercentage` number, double — Total success fee percentage (base + age surcharge). This is the percentage of the recovered amount that will be charged as a success fee.
      - `currencyCode` string, nullable — ISO 4217 currency code for the case.
      - `pricingSource` string, nullable — Which pricing rule determined the fee. Possible values: "Standard agreement", "Creditor custom pricing", "Managing partner custom pricing", "Jurisdiction custom pricing", "Partner custom pricing", "Accepted quote".
      - `pricingSourceDescription` string, nullable — Human-readable explanation of why this pricing was applied. Example: "9.5% success fee — BD Legal custom collection rates (EU zone, $1,000–$7,999 tier)"
    - `requiresKycVerification` boolean — Whether the resolved collection partner requires KYC verification before cases can be submitted. When true, the creditor must complete KYC verification before case creation will succeed.
    - `hasKycOnFile` boolean — Whether the creditor already has KYC verification on file with Debitura. When RequiresKycVerification is true and HasKycOnFile is false, a MissingKycVerification required action will be present in the RequiredActions list.
    - `signingHandoff` DebituraWebExternalApiContractsV1CasesSigningHandoffDto — 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.
      - `combinedSigningUrl` string, nullable — Single signing entry URL that walks the creditor through every pending step (SDCA upgrade → PoA → JPA → KYC) on the Creditors app and returns to the partner-supplied returnUrl when done.

## Other responses

- `400` — Invalid request (validation errors)
- `500` — Internal server error

---

[API](https://skmtc.net/debitura/apis/debitura-customer-api.md) · [All operations](https://skmtc.net/debitura/apis/debitura-customer-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/debitura/debitura-customer-api/versions/46478f2e476f/schema)
