Source: https://docs.debitura.com/api/customer-api/coverage

# Coverage — Customer API

Jurisdiction coverage — query which countries and debt types Debitura can collect in, and check case eligibility.

Base URL: `https://customer-api.debitura.com`

Authentication: `XApiKey` API key; see [authentication](https://docs.debitura.com/developer-concepts/authentication.md).

Generated from [OpenAPI](https://docs.debitura.com/openapi/customer-api.json). Examples are schema illustrations, not observed responses. Complete schemas, including recursive types, are in OpenAPI.

<a id="list-all-jurisdiction-coverage"></a>

## List all jurisdiction coverage

`GET /coverage`

Returns complete coverage information for all jurisdictions where Debitura operates, including power of attorney signing status and solution URLs.

### Response 200

Coverage list returned

- `jurisdiction` (string, nullable): 
- `jurisdictionId` (integer): 
- `country` (string, nullable): 
- `countryId` (integer): 
- `countryAlpha2` (string, nullable): 
- `usStateAlpha2` (string, nullable): 
- `partners` (array of objects, nullable): Collection partners available for this jurisdiction.
May be empty if no partners are assigned.
May contain multiple partners if different conditions apply (e.g., B2B vs B2C).
- `partners[].partnerId` (uuid): 
- `partners[].partnerName` (string, nullable): 
- `partners[].conditions` (string, nullable): Human-readable description of when this partner applies.
Examples: "All cases", "B2B cases only", "B2C cases ≥ €1000"
- `partners[].signed` (boolean): Whether Power of Attorney has been signed for this partner
- `partners[].termsUrl` (string, nullable): URL to download signed PoA document (null if not signed)
- `partners[].solutionUrl` (string, nullable): URL to sign or re-sign PoA (null if fully signed and valid)
- `partners[].requiresResigning` (boolean): Whether PoA needs to be re-signed (new version available)
- `partners[].invalidationReason` (string, nullable): Why re-signing is required (if applicable)

```json
[
  {
    "jurisdiction": "string",
    "jurisdictionId": 3,
    "country": "Germany",
    "countryId": 42,
    "countryAlpha2": "DE",
    "usStateAlpha2": null,
    "partners": [
      {
        "partnerId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
        "partnerName": "Muster GmbH",
        "conditions": "string",
        "signed": true,
        "termsUrl": "https://app.debitura.com/…",
        "solutionUrl": "https://app.debitura.com/…",
        "requiresResigning": true,
        "invalidationReason": null
      }
    ]
  }
]
```

<a id="get-jurisdiction-coverage-by-id"></a>

## Get jurisdiction coverage by ID

`GET /coverage/{id}`

Returns a single jurisdiction with its geographic information, assigned collection partner, and power of attorney signing status.

### Path parameters

- `id` (integer, required): 

### Response 200

Coverage item returned

- `jurisdiction` (string, nullable): 
- `jurisdictionId` (integer): 
- `country` (string, nullable): 
- `countryId` (integer): 
- `countryAlpha2` (string, nullable): 
- `usStateAlpha2` (string, nullable): 
- `partners` (array of objects, nullable): Collection partners available for this jurisdiction.
May be empty if no partners are assigned.
May contain multiple partners if different conditions apply (e.g., B2B vs B2C).
- `partners[].partnerId` (uuid): 
- `partners[].partnerName` (string, nullable): 
- `partners[].conditions` (string, nullable): Human-readable description of when this partner applies.
Examples: "All cases", "B2B cases only", "B2C cases ≥ €1000"
- `partners[].signed` (boolean): Whether Power of Attorney has been signed for this partner
- `partners[].termsUrl` (string, nullable): URL to download signed PoA document (null if not signed)
- `partners[].solutionUrl` (string, nullable): URL to sign or re-sign PoA (null if fully signed and valid)
- `partners[].requiresResigning` (boolean): Whether PoA needs to be re-signed (new version available)
- `partners[].invalidationReason` (string, nullable): Why re-signing is required (if applicable)

```json
{
  "jurisdiction": "string",
  "jurisdictionId": 3,
  "country": "Germany",
  "countryId": 42,
  "countryAlpha2": "DE",
  "usStateAlpha2": null,
  "partners": [
    {
      "partnerId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
      "partnerName": "Muster GmbH",
      "conditions": "string",
      "signed": true,
      "termsUrl": "https://app.debitura.com/…",
      "solutionUrl": "https://app.debitura.com/…",
      "requiresResigning": true,
      "invalidationReason": null
    }
  ]
}
```

### Response 404

Jurisdiction not found

- `error` (string, nullable): Short human-readable error label (legacy field — preserved for backward compatibility).
- `message` (string, nullable): Human-readable error description (legacy field — preserved for backward compatibility).
- `businessErrors` (array of objects, nullable): Canonical structured error array. Consumers should migrate to reading this field.
- `businessErrors[].type` (string, nullable): The type of business error (e.g., "MissingDebtCollectionContract", "MissingPowerOfAttorney", "NoPartnerAvailable").
- `businessErrors[].message` (string, nullable): A human-readable description of the error.
- `businessErrors[].solutionUrl` (string, nullable): A URL where the user can resolve this <i>specific</i> error (e.g., sign a contract).
            

Partners who want a <b>single URL</b> that walks the user through every pending
signing in one chain — instead of forwarding one URL per
`BusinessErrorApiDTO` — should use
SigningHandoff's `CombinedSigningUrl`.
The two are complementary: `SolutionUrl` is granular per-error;
`CombinedSigningUrl` is the chain-walking alternative for signing-related errors.

```json
{
  "error": null,
  "message": "Payment plan agreed with the debtor.",
  "businessErrors": [
    {
      "type": "string",
      "message": "Payment plan agreed with the debtor.",
      "solutionUrl": "https://app.debitura.com/…"
    }
  ]
}
```

<a id="check-case-eligibility-and-get-assigned-partner"></a>

## Check case eligibility and get assigned partner

`POST /coverage/check-eligibility`

**Determine if a case can be submitted and get partner + PoA status.**

**Request Fields:**
- CountryAlpha2 (required) - Debtor country (e.g., 'DK', 'US', 'DE')
- StateAlpha2 (conditional) - Required for US debtors (e.g., 'CA', 'NY')
- DebtorType (required) - 'Company' or 'Private'
- Amount (required) - Amount to recover
- CurrencyCode (required) - Currency (e.g., 'USD', 'EUR', 'DKK')

**Response:**
- IsEligible (boolean) - Whether case can be submitted
- Partner - Specific partner that will handle this case
- PowerOfAttorneyStatus - PoA signing status for the matched partner

**Note:** Does NOT check SDCA status. Use GET /contracts/debt-collection/status for that.

### Request body (application/json)

- `countryAlpha2` (string, required): Debtor country (2-letter ISO code, e.g., "DK", "US", "DE")
- `stateAlpha2` (string, nullable): US state code for US debtors (e.g., "CA", "NY"). Required if CountryAlpha2 = "US"
- `debtorType` (string, required): Debtor type: "Company" or "Private"
- `amount` (number, required): Amount to recover in specified currency
  Min 0.01.
- `currencyCode` (string, required): Currency code (e.g., "USD", "EUR", "DKK")

```json
{
  "countryAlpha2": "PL",
  "debtorType": "Company",
  "amount": 2500,
  "currencyCode": "EUR"
}
```

### Response 200

Eligibility check completed

- `isEligible` (boolean): Whether a collection partner is available for this case
- `jurisdiction` (object): Jurisdiction information
- `jurisdiction.id` (integer): 
- `jurisdiction.name` (string, nullable): 
- `jurisdiction.country` (string, nullable): 
- `jurisdiction.countryAlpha2` (string, nullable): 
- `jurisdiction.usStateAlpha2` (string, nullable): 
- `partner` (object): Partner information
- `partner.id` (uuid): 
- `partner.name` (string, nullable): 
- `powerOfAttorneyStatus` (object): Power of Attorney status (shared DTO for check-eligibility and coverage endpoints).
- `powerOfAttorneyStatus.signed` (boolean): Whether PoA has been signed for this partner
- `powerOfAttorneyStatus.requiresResigning` (boolean): Whether PoA needs to be re-signed (new version available)
- `powerOfAttorneyStatus.invalidationReason` (string, nullable): Why re-signing is required (if applicable)
- `powerOfAttorneyStatus.termsUrl` (string, nullable): URL to download signed PoA document (null if not signed)
- `powerOfAttorneyStatus.solutionUrl` (string, nullable): URL to sign or re-sign PoA (null if fully signed and valid)
- `errorMessage` (string, nullable): Error message if IsEligible = false.
Branch on IneligibilityReasonCode rather than on this text, which may be reworded.
- `ineligibilityReasonCode` (string, nullable): Stable machine-readable reason, present whenever ErrorMessage is.
One of: NoGeographicCoverage, AmountBelowMinimum, AmountAboveMaximum, DebtorTypeNotCovered,
NotCoveredByPartnerRules, ExcludedForClient, EligibilityUndetermined.

Only NoGeographicCoverage means we have no partner in the jurisdiction. AmountBelowMinimum
means the geography IS covered and only the claim amount fell short. EligibilityUndetermined
is a transient failure on our side, not a statement about coverage.
- `applicableMinimumAmount` (number, nullable): What this claim would have to reach to be accepted, in the currency of the request; never below
the platform minimum of 100 USD. Only present when no partner was matched. Withheld when the
client's own routing exclusions mean the number would not be reachable for them, and when the
request currency cannot be priced. Null when no partner covering this case declares a minimum.
- `applicableMinimumCurrencyCode` (string, nullable): ISO code that ApplicableMinimumAmount is expressed in.
- `marketMinimumAmount` (number, nullable): The smallest claim the marketplace takes for this jurisdiction and debtor type, in the currency of
the request: the lowest partner floor, never below the platform minimum of 100 USD. A statement
about the market, not about this claim: it is returned whether or not a partner was selected, and
does not depend on the claim amount or on the caller. It is not the admission rules applied when a
case is created. Null when no partner covers the market or the amount cannot be priced.
- `marketMinimumCurrencyCode` (string, nullable): ISO code that MarketMinimumAmount is expressed in.
- `amountCheckUnavailable` (boolean): True when a currency conversion needed to evaluate the claim amount was unavailable, so the
amount-based part of this answer was NOT actually checked It can be true on an
eligible answer: a partner matched only because amount conditions failed open while rates were
down. Treat such an answer as provisional and retry rather than relying on the floor having
been applied.

```json
{
  "isEligible": true,
  "jurisdiction": {
    "id": 3,
    "name": "Muster GmbH",
    "country": "Germany",
    "countryAlpha2": "DE",
    "usStateAlpha2": null
  },
  "partner": {
    "id": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
    "name": "Muster GmbH"
  },
  "powerOfAttorneyStatus": {
    "signed": true,
    "requiresResigning": true,
    "invalidationReason": null,
    "termsUrl": "https://app.debitura.com/…",
    "solutionUrl": "https://app.debitura.com/…"
  },
  "errorMessage": null,
  "ineligibilityReasonCode": null,
  "applicableMinimumAmount": 2500,
  "applicableMinimumCurrencyCode": "EUR",
  "marketMinimumAmount": 2500,
  "marketMinimumCurrencyCode": "EUR",
  "amountCheckUnavailable": true
}
```

### Response 400

Invalid request (validation errors)

- `error` (string, nullable): Short human-readable error label (legacy field — preserved for backward compatibility).
- `message` (string, nullable): Human-readable error description (legacy field — preserved for backward compatibility).
- `businessErrors` (array of objects, nullable): Canonical structured error array. Consumers should migrate to reading this field.
- `businessErrors[].type` (string, nullable): The type of business error (e.g., "MissingDebtCollectionContract", "MissingPowerOfAttorney", "NoPartnerAvailable").
- `businessErrors[].message` (string, nullable): A human-readable description of the error.
- `businessErrors[].solutionUrl` (string, nullable): A URL where the user can resolve this <i>specific</i> error (e.g., sign a contract).
            

Partners who want a <b>single URL</b> that walks the user through every pending
signing in one chain — instead of forwarding one URL per
`BusinessErrorApiDTO` — should use
SigningHandoff's `CombinedSigningUrl`.
The two are complementary: `SolutionUrl` is granular per-error;
`CombinedSigningUrl` is the chain-walking alternative for signing-related errors.

```json
{
  "error": null,
  "message": "Payment plan agreed with the debtor.",
  "businessErrors": [
    {
      "type": "string",
      "message": "Payment plan agreed with the debtor.",
      "solutionUrl": "https://app.debitura.com/…"
    }
  ]
}
```

<a id="search-for-jurisdiction-coverage"></a>

## Search for jurisdiction coverage

`GET /coverage/search`

**Deprecated.** Retained for existing integrations.

⚠️ **DEPRECATED:** Use POST /coverage/check-eligibility instead.

### Query parameters

- `q` (string): 

### Response 200

Coverage item returned

- `jurisdiction` (string, nullable): 
- `jurisdictionId` (integer): 
- `country` (string, nullable): 
- `countryId` (integer): 
- `countryAlpha2` (string, nullable): 
- `usStateAlpha2` (string, nullable): 
- `partners` (array of objects, nullable): Collection partners available for this jurisdiction.
May be empty if no partners are assigned.
May contain multiple partners if different conditions apply (e.g., B2B vs B2C).
- `partners[].partnerId` (uuid): 
- `partners[].partnerName` (string, nullable): 
- `partners[].conditions` (string, nullable): Human-readable description of when this partner applies.
Examples: "All cases", "B2B cases only", "B2C cases ≥ €1000"
- `partners[].signed` (boolean): Whether Power of Attorney has been signed for this partner
- `partners[].termsUrl` (string, nullable): URL to download signed PoA document (null if not signed)
- `partners[].solutionUrl` (string, nullable): URL to sign or re-sign PoA (null if fully signed and valid)
- `partners[].requiresResigning` (boolean): Whether PoA needs to be re-signed (new version available)
- `partners[].invalidationReason` (string, nullable): Why re-signing is required (if applicable)

```json
{
  "jurisdiction": "string",
  "jurisdictionId": 3,
  "country": "Germany",
  "countryId": 42,
  "countryAlpha2": "DE",
  "usStateAlpha2": null,
  "partners": [
    {
      "partnerId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
      "partnerName": "Muster GmbH",
      "conditions": "string",
      "signed": true,
      "termsUrl": "https://app.debitura.com/…",
      "solutionUrl": "https://app.debitura.com/…",
      "requiresResigning": true,
      "invalidationReason": null
    }
  ]
}
```

### Response 400

Search query missing or invalid

- `error` (string, nullable): Short human-readable error label (legacy field — preserved for backward compatibility).
- `message` (string, nullable): Human-readable error description (legacy field — preserved for backward compatibility).
- `businessErrors` (array of objects, nullable): Canonical structured error array. Consumers should migrate to reading this field.
- `businessErrors[].type` (string, nullable): The type of business error (e.g., "MissingDebtCollectionContract", "MissingPowerOfAttorney", "NoPartnerAvailable").
- `businessErrors[].message` (string, nullable): A human-readable description of the error.
- `businessErrors[].solutionUrl` (string, nullable): A URL where the user can resolve this <i>specific</i> error (e.g., sign a contract).
            

Partners who want a <b>single URL</b> that walks the user through every pending
signing in one chain — instead of forwarding one URL per
`BusinessErrorApiDTO` — should use
SigningHandoff's `CombinedSigningUrl`.
The two are complementary: `SolutionUrl` is granular per-error;
`CombinedSigningUrl` is the chain-walking alternative for signing-related errors.

```json
{
  "error": null,
  "message": "Payment plan agreed with the debtor.",
  "businessErrors": [
    {
      "type": "string",
      "message": "Payment plan agreed with the debtor.",
      "solutionUrl": "https://app.debitura.com/…"
    }
  ]
}
```

### Response 404

No jurisdiction found matching the search query

- `error` (string, nullable): Short human-readable error label (legacy field — preserved for backward compatibility).
- `message` (string, nullable): Human-readable error description (legacy field — preserved for backward compatibility).
- `businessErrors` (array of objects, nullable): Canonical structured error array. Consumers should migrate to reading this field.
- `businessErrors[].type` (string, nullable): The type of business error (e.g., "MissingDebtCollectionContract", "MissingPowerOfAttorney", "NoPartnerAvailable").
- `businessErrors[].message` (string, nullable): A human-readable description of the error.
- `businessErrors[].solutionUrl` (string, nullable): A URL where the user can resolve this <i>specific</i> error (e.g., sign a contract).
            

Partners who want a <b>single URL</b> that walks the user through every pending
signing in one chain — instead of forwarding one URL per
`BusinessErrorApiDTO` — should use
SigningHandoff's `CombinedSigningUrl`.
The two are complementary: `SolutionUrl` is granular per-error;
`CombinedSigningUrl` is the chain-walking alternative for signing-related errors.

```json
{
  "error": null,
  "message": "Payment plan agreed with the debtor.",
  "businessErrors": [
    {
      "type": "string",
      "message": "Payment plan agreed with the debtor.",
      "solutionUrl": "https://app.debitura.com/…"
    }
  ]
}
```

<a id="search-for-jurisdiction-coverage-2"></a>

## Search for jurisdiction coverage

`GET /coverage/:search`

**Deprecated.** Retained for existing integrations.

⚠️ **DEPRECATED:** Use POST /coverage/check-eligibility instead.

### Query parameters

- `q` (string): 

### Response 200

Coverage item returned

- `jurisdiction` (string, nullable): 
- `jurisdictionId` (integer): 
- `country` (string, nullable): 
- `countryId` (integer): 
- `countryAlpha2` (string, nullable): 
- `usStateAlpha2` (string, nullable): 
- `partners` (array of objects, nullable): Collection partners available for this jurisdiction.
May be empty if no partners are assigned.
May contain multiple partners if different conditions apply (e.g., B2B vs B2C).
- `partners[].partnerId` (uuid): 
- `partners[].partnerName` (string, nullable): 
- `partners[].conditions` (string, nullable): Human-readable description of when this partner applies.
Examples: "All cases", "B2B cases only", "B2C cases ≥ €1000"
- `partners[].signed` (boolean): Whether Power of Attorney has been signed for this partner
- `partners[].termsUrl` (string, nullable): URL to download signed PoA document (null if not signed)
- `partners[].solutionUrl` (string, nullable): URL to sign or re-sign PoA (null if fully signed and valid)
- `partners[].requiresResigning` (boolean): Whether PoA needs to be re-signed (new version available)
- `partners[].invalidationReason` (string, nullable): Why re-signing is required (if applicable)

```json
{
  "jurisdiction": "string",
  "jurisdictionId": 3,
  "country": "Germany",
  "countryId": 42,
  "countryAlpha2": "DE",
  "usStateAlpha2": null,
  "partners": [
    {
      "partnerId": "3f2b6c1e-8a4d-4b7f-9c2e-5d1a0b9e7f31",
      "partnerName": "Muster GmbH",
      "conditions": "string",
      "signed": true,
      "termsUrl": "https://app.debitura.com/…",
      "solutionUrl": "https://app.debitura.com/…",
      "requiresResigning": true,
      "invalidationReason": null
    }
  ]
}
```

### Response 400

Search query missing or invalid

- `error` (string, nullable): Short human-readable error label (legacy field — preserved for backward compatibility).
- `message` (string, nullable): Human-readable error description (legacy field — preserved for backward compatibility).
- `businessErrors` (array of objects, nullable): Canonical structured error array. Consumers should migrate to reading this field.
- `businessErrors[].type` (string, nullable): The type of business error (e.g., "MissingDebtCollectionContract", "MissingPowerOfAttorney", "NoPartnerAvailable").
- `businessErrors[].message` (string, nullable): A human-readable description of the error.
- `businessErrors[].solutionUrl` (string, nullable): A URL where the user can resolve this <i>specific</i> error (e.g., sign a contract).
            

Partners who want a <b>single URL</b> that walks the user through every pending
signing in one chain — instead of forwarding one URL per
`BusinessErrorApiDTO` — should use
SigningHandoff's `CombinedSigningUrl`.
The two are complementary: `SolutionUrl` is granular per-error;
`CombinedSigningUrl` is the chain-walking alternative for signing-related errors.

```json
{
  "error": null,
  "message": "Payment plan agreed with the debtor.",
  "businessErrors": [
    {
      "type": "string",
      "message": "Payment plan agreed with the debtor.",
      "solutionUrl": "https://app.debitura.com/…"
    }
  ]
}
```

### Response 404

No jurisdiction found matching the search query

- `error` (string, nullable): Short human-readable error label (legacy field — preserved for backward compatibility).
- `message` (string, nullable): Human-readable error description (legacy field — preserved for backward compatibility).
- `businessErrors` (array of objects, nullable): Canonical structured error array. Consumers should migrate to reading this field.
- `businessErrors[].type` (string, nullable): The type of business error (e.g., "MissingDebtCollectionContract", "MissingPowerOfAttorney", "NoPartnerAvailable").
- `businessErrors[].message` (string, nullable): A human-readable description of the error.
- `businessErrors[].solutionUrl` (string, nullable): A URL where the user can resolve this <i>specific</i> error (e.g., sign a contract).
            

Partners who want a <b>single URL</b> that walks the user through every pending
signing in one chain — instead of forwarding one URL per
`BusinessErrorApiDTO` — should use
SigningHandoff's `CombinedSigningUrl`.
The two are complementary: `SolutionUrl` is granular per-error;
`CombinedSigningUrl` is the chain-walking alternative for signing-related errors.

```json
{
  "error": null,
  "message": "Payment plan agreed with the debtor.",
  "businessErrors": [
    {
      "type": "string",
      "message": "Payment plan agreed with the debtor.",
      "solutionUrl": "https://app.debitura.com/…"
    }
  ]
}
```
