Credifin Public API · 1.2.0

From first key to first file

Credifin enables the API per customer. A customer administrator then creates the API key, copies the setup details and connects their ERP. Existing CollectOnline integrations continue with a new address and key.

Public core available Contract version 1.2.0 · 62 documented endpoints

Connect in three steps

Credifin supplies the key name, permissions and API address. The key remains valid until revoked and is masked but copyable by authorised users.

  1. 1

    Credifin enables the integration

    After activation, you will see Integrations → API in the client portal.

  2. 2

    The customer administrator creates the key

    Click Generate API key. Name and permissions are preconfigured; the key remains valid until revoked.

  3. 3

    Copy and validate

    Store the key in your secret manager and run the safe validation cURL. The prefix stays visible for management; the secret stays hidden and can be copied on request.

API address
https://crm.credifin.nl
Authentication header
Api-Key
Preferred route
POST /api/v1/dossiers

The API address is the same for every customer. The key automatically links each request to the correct customer.

How the API works

One address, one header, JSON in and JSON out. Everything below applies to every route.

Address and key

All requests go to https://crm.credifin.nl with the header Api-Key. The key automatically determines the creditor; you can only view and modify your own files. An agency key works for all agency clients (see Agencies).

A key has scopes: dossiers:read for reading and dossiers:create for submissions and notifications.

Formats

Amounts are decimal numbers in euros (847.5), never cents. Dates use YYYY-MM-DD; timestamps use ISO 8601 in UTC (2026-09-01T12:30:00.000Z).

Send JSON with Content-Type: application/json in UTF-8. Attachments use base64: PDF, JPEG, PNG, TIFF, GIF, WEBP, HEIC, HTML, XML/UBL, EML, MSG, DOCX, XLSX, TXT, CSV, up to 10 MB per file. Every file is checked by content and scanned for viruses before storage.

Identifiers

Every resource has a uuid. Use it in subsequent calls. Your own references (reference) are retained and searchable through GET /api/dossier/{reference}/verification.

Migrated CollectOnline UUIDs continue working if Credifin mapped them during activation.

Pagination and filters

Paginate lists using the headers X-API-NEXT-PAGE (first page 1) and X-API-PAGE-LIMIT (default 20, maximum 200). The response provides in X-API-NEXT-PAGE the next page number; empty means finished.

Filter files by modification time using X-API-FILTER-FROM and X-API-FILTER-TO, or by payment reference with X-API-FILTER-OGM.

Safe retries

Every POST accepts an Idempotency-Key. The same key and body return exactly the same response and never create a second record. Without the header, Credifin uses your source reference as the key.

Limits and traceability

Every response includes X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. For 429 wait for the Retry-After .

Store the X-Request-Id for each request; this lets Credifin locate a specific call for support.

Agencies

Customers and agencies use the same API and documentation. A customer key grants access to that customer. An agency key grants access to the companies currently assigned to the agency; a group key also covers its own branches. Access is determined again for every request.

POST /api/creditor: use creditors:create and Idempotency-Key to create a company under your own agency. Use the returned uuid or reference as creditor. This request does not create a user login.

If you manage multiple customers as an agency, you receive one key for the whole agency. Credifin enables access per agency; the agency administrator then creates the key under Integrations → API. New customers within your agency are immediately covered by the same key.

Which clients

GET /api/creditor returns all clients accessible with your key, with their client number (reference) and UUID. A customer key returns only its own customer here.

Submit

For POST /api/debtor, POST /api/dossier, POST /api/invoice and POST /api/v1/dossiers specify the client in creditor: the customer number or UUID. If your agency has only one customer, the field can be omitted. If it is missing with multiple customers, the API responds with 422 CREDITOR_REQUIRED; a customer outside your agency returns 403 CREDITOR_MISMATCH.

Read

All read routes cover all customers in the agency. File rows include creditorUuid and creditorReference, so you can identify the customer for each file.

Webhooks

One webhook for the whole agency under Integrations → Webhooks; every notification includes creditor and agency . Only agents can select creditor.created : a new client has been created under your agency.

Migrating from CollectOnline

Core submission remains familiar

If your integration uses CollectOnline customer routes (reading debtors, files, invoices, payments, costs and attachments; submitting debtors, files and invoices), the familiar /api/... paths, JSON field names, Api-Key header, X-API-... pagination headers and HTTP 200 creation responses remain available.

In many cases, a new API address and key are sufficient. Always verify with an acceptance test, because identifiers must be explicitly mapped.

Broad automation requires a brief assessment

Integrations using old email, task or management routes may need a dedicated adapter or mapping.

New integrations should prefer one atomic request through POST /api/v1/dossiers.

Switch in five steps

  1. Request activation. Credifin enables the API for your customer and maps existing CollectOnline identifiers.
  2. Create a key under Integrations → API and store it in your secret manager. The old CollectOnline key does not work here.
  3. Replace the address https://credifin.collectonline.eu by https://crm.credifin.nl. The paths under /api/... remain unchanged.
  4. Run an acceptance test: retrieve your file list, read one file with /financial and submit a test file through POST /api/v1/dossiers/validate.
  5. Review the differences in the table below and switch over. Tell us which routes you use so we can check them specifically.
SectionCollectOnlineCredifin
Addresshttps://credifin.collectonline.euhttps://crm.credifin.nl
AuthenticationHeader Api-KeyHeader Api-Key, new key with prefix cfi_live_
Paths and field names/api/debtor, /api/dossier, /api/invoice, /api/payment …Available for the documented customer features; check the differences for each endpoint
PaginationX-API-NEXT-PAGE, X-API-PAGE-LIMIT, X-API-FILTER-*Identical, plus query parameter variants page, limit, from, to, ogm
IdentifiersUUID per resourceUUID per resource; linked old UUIDs remain valid
Creation responsesHTTP 200 with the objectHTTP 200 with the object; optional Idempotency-Key
Upload attachmentsAvailableIdentical; PDF, JPEG, PNG, TIFF, GIF, WEBP, HEIC, HTML, XML/UBL, EML, MSG, DOCX, XLSX, TXT, CSV up to 10 MB, detected by content
Report paymentPOST /api/paymentIdentical; directly received payments only (receivedBy: CLIENT)
Hearing date, bailiff payments, invoice typesAvailableNot included; handled by Credifin
Engie, Quandago and PSP routesPartner-specificNot included
WebhooksConfigurable per URL, without a signatureConfigurable per URL in the portal, with the same events, HMAC signature and retries

Interest, history and credit notes

These features are available to all customers and agencies with the required permissions. They are part of the general API; there is no separate customer-specific version. Open the route for its conditions, fields and responses:

For these three routes, the UUID in the path identifies the company the request belongs to. An agency key does not need to supply an additional creditor here. File and customer access boundaries still apply.

A linked CollectOnline UUID remains usable within your current access rights. A missing source link or a resource outside your access returns 404. An ambiguous source link returns 409. Report the route, UUID and X-Request-Id to Credifin in that case; do not create a replacement file.

Status history uses the actual status date in Dutch local time. Use the transition to lost to identify a write-off; closed means a positive closure. Empty history does not establish a write-off date. A historical note without a file has attachmentName: null; there is no file to download.

Identities and credit note attachments

Imported files can have several historical debtor records for one source UUID. The file list and detail use the same stable debtor UUID as a lookup by that source UUID. Existing file records are not merged.

With agency access, the same old debtor UUID may occur for several customers. Use GET /api/debtor/{debtor}?creditor={creditor}. Without a customer the response is 409 LEGACY_ID_AMBIGUOUS. The UUID from debtorUuid can be retrieved directly.

Credit notes include hasAttachment and invoice. Only visible attachments count. invoice is null when no invoice link is recorded. Downloads also require document access; internal or blocked files are not released.

GET /api/creditnote/{creditNote}/attachment

Testing with a test customer

Tests use the same API address with a separate test customer and its own customer key. Use only fictitious files and agreed test contact details. The test key belongs to that customer; it does not grant access to the real customer. There is no separate sandbox.

Ask Credifin to create a separate test customer. Select it under Integrations → API and create its own key. An agency key may cover several companies; do not use it to restrict a test to one company. Test files follow the same processing as regular files. Use only a test receiver for webhooks.

Close an Ominimo file

Use POST /api/dossier/{dossier}/close with reason, note and a required Idempotency-Key. Available only for Ominimo and the separate Test Ominimo account. Normal customer and agency permissions still apply; a test key cannot access real files.

Withdrawal sets the file to lost (closed negative). All withdrawals are grouped in one review task per creditor and Dutch calendar day, including automatic collection-stage closures after an API payment. A WIK closure follows the agreed letter fee when sending is evidenced. Closing does not delete history or change payments or invoice amounts.

Use withdrawn or incorrect_submission for withdrawal with an explanation. This route cannot delete, reopen or close positively. Recording a payment remains a separate financial operation. Any remaining balance stays visible for review. This function never records a receipt or balance adjustment itself.

POST /api/dossier/{dossier}/close
Api-Key: YOUR_API_KEY
Idempotency-Key: withdrawal-your-unique-reference
Content-Type: application/json

{"reason":"incorrect_submission","note":"Incorrectly submitted by Ominimo; please stop collection."}

An action in progress returns 409 with retryable=true and Retry-After. Then retry the same request with the same Idempotency-Key. After Credifin reopens a file, an old closure response is not replayed: check the current status first.

Complete debtor addresses

For every debtor, supply the street, house number including any suffix, postal code, city and country. Check this for all companies and branches. Missing address details can block file processing.

For v1 file submission, these fields are required in debtor.address. A suffix can be supplied separately in houseNumberAddition. Legacy debtor routes use street, houseNumber (including any suffix), postalCode, city and country at the top level. Legacy acceptance of omitted fields does not mean the address is complete.

Complete an existing address using PUT /api/debtor/{debtor}, dossiers:create and a new Idempotency-Key for each change. Reuse the same key and content for a retry. An agency key must also supply creditor. Read the debtor again afterwards to check the stored details. POST /api/debtor does not update an existing debtor.

PUT /api/debtor/{debtor}
Content-Type: application/json
Api-Key: <uw-api-key>
Idempotency-Key: debtor-address-1042-v1

{
  "creditor": "KLANT-1042",
  "street": "Keizersgracht",
  "houseNumber": "100 A",
  "postalCode": "1015CS",
  "city": "Amsterdam",
  "country": "NL"
}

Omitted fields are preserved; null or an empty value clears optional fields. A 409 SHARED_DEBTOR response means nothing was changed: coordinate the update with Credifin. The change applies to the resolved debtor record, not automatically to separate historical copies.

Authentication and safe retries

Send the API key only over HTTPS in the request header. Never place keys in a URL, browser code or application log.

Api-Key: <uw-api-key>
Idempotency-Key: order-73145-dossier-v1
On timeout: resend exactly the same body with the same idempotency key. Never use that key for a different body; this returns 409 IDEMPOTENCY_KEY_REUSED.
Safe file creation: the file is created immediately, but collection never starts before the day after the latest specified due date.

Quickstart: safe validation

Store the key outside your shell history as CREDIFIN_API_KEY. This route checks the same fields as the production route, but saves nothing and starts no workflow.

test -n "$CREDIFIN_API_KEY" || { echo 'Sla uw API-key eerst veilig op als CREDIFIN_API_KEY.' >&2; exit 1; }

curl -X POST 'https://crm.credifin.nl/api/v1/dossiers/validate'   -H 'Content-Type: application/json'   -H "Api-Key: $CREDIFIN_API_KEY"   --data '{
    "reference": "DOS-2026-0042",
    "currency": "EUR",
    "debtor": {
      "reference": "KLANT-1042",
      "companyName": "Voorbeeld Handel B.V.",
      "language": "nl",
      "address": {
        "street": "Keizersgracht",
        "houseNumber": "100",
        "postalCode": "1015CS",
        "city": "Amsterdam",
        "country": "NL"
      }
    },
    "invoices": [{
      "reference": "INV-2026-0815",
      "date": "2026-12-01",
      "dueDate": "2026-12-31",
      "amount": 847.50
    }]
  }'
Ready for production: send exactly the same valid body to POST /api/v1/dossiers and add a stable Idempotency-Key . Only that production route creates the file.

Sending additional file details

The more details a file contains, the more often Credifin can answer a debtor’s question straight away.

You choose the field names yourself. Always use the same name for the same kind of detail. Examples are shown below.

Field nameContent
Insurer
polisnummerPolicy or contract number
kentekenVehicle licence plate
voertuigMake and model
polis_ingangsdatumPolicy start date (YYYY-MM-DD)
polis_einddatumPolicy end date (YYYY-MM-DD)
opzegdatumCancellation date (YYYY-MM-DD)
opgezegd_doorWho cancelled: customer or insurer
premie_termijnbedragPremium per instalment
betaaltermijnPayment frequency, for example monthly
Supplier or service provider
ordernummerOrder or project number
leverdatumDate of delivery or performance (YYYY-MM-DD)
contractnummerContract or subscription number
Landlord
huurcontractTenancy agreement number
adres_objectAddress of the rented property
einddatum_huurEnd date of the tenancy (YYYY-MM-DD)

Include these fields when submitting, as a list of name and value:

"meta": [
  { "name": "kenteken", "value": "GF-132-X" },
  { "name": "opzegdatum", "value": "2026-05-01" }
]

Send documents such as a cancellation letter, a confirmation email (.eml or .msg) or an account statement as attachments.

You can add or change details per file later. A field with the same name is overwritten.

POST /api/dossier/{dossier}/meta
POST /api/dossier/{dossier}/attachment

Common workflows

Four patterns needed by almost every integration. Store your key as CREDIFIN_API_KEY and copy the examples.

1. Fetch changes since the previous run

Fetch files changed since your last synchronisation and iterate through the pages until X-API-NEXT-PAGE is empty.

cURL
curl -sS -D - 'https://crm.credifin.nl/api/dossier'   -H "Api-Key: $CREDIFIN_API_KEY"   -H 'X-API-FILTER-FROM: 2026-09-01 00:00:00'   -H 'X-API-PAGE-LIMIT: 200'   -H 'X-API-NEXT-PAGE: 1'
JavaScript
async function gewijzigdeDossiers(sinds) {
  const alles = [];
  let pagina = '1';
  while (pagina) {
    const antwoord = await fetch('https://crm.credifin.nl/api/dossier', {
      headers: {
        'Api-Key': process.env.CREDIFIN_API_KEY,
        'X-API-FILTER-FROM': sinds,
        'X-API-PAGE-LIMIT': '200',
        'X-API-NEXT-PAGE': pagina,
      },
    });
    if (!antwoord.ok) throw new Error('Credifin gaf ' + antwoord.status);
    alles.push(...(await antwoord.json()));
    pagina = antwoord.headers.get('X-API-NEXT-PAGE') || '';
  }
  return alles;
}

2. Status of one file

The financial summary provides everything in one call: principal, interest, collection costs, payments, credit notes and balance. For just the balance, use /open-amount.

Case details, the case list, open-amount and financial use the same current balance calculation. A dated credit note reduces the interest base from the date displayed on the credit note. A linked credit note reduces only its invoice; without an invoice link, the oldest invoice is reduced first. Recorded case adjustments and fixed invoice interest remain unchanged. Changes and daily interest accrual can change the balance between two requests.

Without invoice lines or an explicitly recorded principal, the API displays the known case balance, as does the case screen. An empty submission therefore does not acquire calculated collection costs.

curl -sS 'https://crm.credifin.nl/api/dossier/c3069230-ff95-4c95-aa73-9c57945ae038/financial'   -H "Api-Key: $CREDIFIN_API_KEY"

3. Report a payment you received directly

The balance, active payment plan and settlement are updated immediately; your case handler sees the notification.

curl -sS -X POST 'https://crm.credifin.nl/api/payment'   -H "Api-Key: $CREDIFIN_API_KEY"   -H 'Content-Type: application/json'   -H 'Idempotency-Key: betaling-2026-118'   --data '{ "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038", "amount": 100, "date": "2026-07-03", "reference": "Bankafschrift 2026-118" }'

4. Submit a new file

New integrations submit debtor, file and invoices together. Existing CollectOnline integrations can keep using the chain POST /api/debtor → POST /api/dossier → POST /api/invoice ; the collection process starts only after the latest due date. See the quickstart below for the validation route.

Statuses

The fields status and substatus in file responses use the CollectOnline names. dossierClosed is a useful boolean for closed and lost files.

StatusMeaning
openIn progress, including the free WIK demand stage.
payment planA payment plan is active; see /paymentplan.
promise to payThe debtor has made a payment promise.
pausedTemporarily paused, for example in a dispute.
closedCompleted and settled.
lostClosed without full collection.

Webhooks

Choose dossier.status.changed to receive status changes automatically. data contains status, substatus, dossierClosed and previous. dossier.uuid identifies the file and creditor.uuid the customer. Use GET /api/dossier/{dossier}/status to retrieve the current state.

Webhooks are processed asynchronously. Process each event ID only once and allow for repeated or delayed notifications. A webhook notifies you of a change; retrieve additional details through the documented API routes.

Instead of polling, let Credifin send a message when something happens in a file. A customer administrator adds under Integrations → Webhooks a URL, selects events and receives a one-time secret to verify each notification. The same page shows every delivery, its content, attempts and a retry button. You can register multiple webhooks, for example one per system. Credifin enables webhooks per creditor.

Agencies. If you manage multiple customers as an agency, register one webhook for the whole agency. It receives notifications for all customers, including future ones; no per-customer setup is needed. Each notification includes under creditor the client number and name, and under agency your agency. Agents also have the event creditor.created: a new customer has been created under your agency. Credifin enables webhooks per agency.

Events

TypeWhenIn CollectOnline
dossier.createdA new file has been opened for you.Case created
dossier.status.changedA file’s status or substatus has changed, including closure.Status change
dossier.paidA file’s outstanding balance has reached zero.Principal paid
paymentplan.createdA payment plan has been recorded.Plan
note.addedA case handler has added a message visible to you in the file.File messages
payment.receivedA payment has been recorded in the file, received by Credifin or you.Payments
invoice.createdAn invoice has been added to the file.Invoices
creditnote.createdA credit note has been recorded in the file.Credit notes
cost.createdA cost item has been added to the file.Costs
courtcost.createdCourt costs have been recorded in the file.Court costs
communication.sentCredifin has sent the debtor an email, letter or text message.Correspondence
communication.receivedThe debtor has replied by email.Incoming emails
phone.callA phone call with the debtor was made or attempted.Telephone action available
debtor.updatedA debtor’s details have changed.Debtor
debtor.contact.updatedA debtor’s address or contact has changed.Debtor contacts
creditor.createdA new customer has been created under your agency, in the portal or by Credifin.
webhook.testTest notification from the client portal.

The notification

Every notification is a POST with JSON. dossier is a summary of the file; data has the same structure as its corresponding API resource, for example a payment for payment.received. For debtor and client events and test notifications, dossier is null. creditor identifies the creditor (UUID, client number, name) and agency the agency it belongs to, or null.

POST https://erp.uwbedrijf.nl/credifin/webhook
Content-Type: application/json
Credifin-Event: payment.received
Credifin-Event-Id: 5f1c4a2b-0d3e-4f6a-9b8c-7d6e5f4a3b2c
Credifin-Delivery-Id: e7c1b2a3-4d5e-4f60-8a7b-9c0d1e2f3a4b
Credifin-Timestamp: 1756729864
Credifin-Signature: t=1756729864,v1=2c3f…9a

{
  "id": "5f1c4a2b-0d3e-4f6a-9b8c-7d6e5f4a3b2c",
  "type": "payment.received",
  "version": 1,
  "occurredAt": "2026-09-01T12:30:00.000Z",
  "createdAt": "2026-09-01T12:31:04.000Z",
  "delivery": { "id": "e7c1b2a3-4d5e-4f60-8a7b-9c0d1e2f3a4b", "attempt": 1 },
  "creditor": { "uuid": "b1a7c8e2-1234-4f5a-8b9d-123456789abc", "reference": "106861", "name": "Voorbeeld B.V." },
  "agency": null,
  "dossier": {
    "uuid": "c3069230-ff95-4c95-aa73-9c57945ae038",
    "ownerReference": "IN146900",
    "reference": "ORDER-73145",
    "status": "open",
    "substatus": "IN_BEHANDELING",
    "dossierClosed": false,
    "balance": 747.5
  },
  "data": { "uuid": "a9c3d4e5-…", "amount": 100, "date": "2026-09-01", "receivedBy": "OWN_ACCOUNT" }
}

Verify signature

Calculate HMAC-SHA256 over <timestamp>.<ruwe body> with your secret and compare with v1 from the header. Reject notifications whose timestamp differs by more than five minutes.

Node.js
import { createHmac, timingSafeEqual } from 'node:crypto';

export function verifyCredifin(secret, signatureHeader, rawBody) {
  const parts = Object.fromEntries(signatureHeader.split(',').map((part) => part.split('=')));
  const timestamp = Number(parts.t);
  if (!Number.isFinite(timestamp) || Math.abs(Date.now() / 1000 - timestamp) > 300) return false;
  const expected = createHmac('sha256', secret).update(timestamp + '.' + rawBody).digest('hex');
  const actual = String(parts.v1 || '');
  return actual.length === expected.length && timingSafeEqual(Buffer.from(actual, 'hex'), Buffer.from(expected, 'hex'));
}
PHP
function verifyCredifin(string $secret, string $header, string $rawBody): bool {
  parse_str(str_replace(',', '&', $header), $parts);
  $timestamp = (int) ($parts['t'] ?? 0);
  if (abs(time() - $timestamp) > 300) return false;
  $expected = hash_hmac('sha256', $timestamp . '.' . $rawBody, $secret);
  return hash_equals($expected, (string) ($parts['v1'] ?? ''));
}

Respond promptly with 2xx

Acknowledge within ten seconds, then process. Any other status or a timeout counts as failure. Redirects are not followed.

Retries

After failure, Credifin retries after 1 minute, 5 minutes, 30 minutes, 2 hours, 12 hours and 24 hours. Each attempt appears with its time and response under Integrations → Webhooks, where abandoned notifications can be restarted. After 50 consecutive failures, the webhook is paused.

Deduplication and ordering

A notification can arrive more than once. Store the id and ignore duplicates. Notifications may arrive out of order; use occurredAt.

Filters

With a start date, you receive notifications only for files created on or after that date. Disable “own API events” to exclude files and invoices submitted by your own integration.

What you do not receive

Internal notes, email content and call reports stay in the portal. Message notifications contain the subject, channel and time. Communication notifications require communication visibility in your portal.

Testing

With Send test in the portal, Credifin immediately sends a webhook.test notification and shows your server’s response.

All supported endpoints

Open an endpoint for parameters, request fields, examples, responses and stable operationId. The preferred route is already expanded.

62 endpoints · 7 groups

Legacy creditors

Customers accessible with a key; for agencies, all customers under the agency.

2 endpoints
GET /api/creditor Retrieve the customers accessible with this key

A customer key returns only its own customer. An agency key returns all current agency customers, including those created today. Use reference (the customer number) or uuid as creditor when submitting debtors, files and invoices.

Authentication
Api-Key
operationId
legacyListCreditors

Parameters

No additional parameters. The Api-Key header remains required.

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "b1a7c8e2-1234-4f5a-8b9d-123456789abc",
    "reference": "106861",
    "name": "Voorbeeld B.V.",
    "email": "administratie@voorbeeld.nl",
    "phone": "+31201234567",
    "address": {
      "street": "Keizersgracht",
      "houseNumber": "100",
      "postalCode": "1015CS",
      "city": "Amsterdam",
      "country": "NL"
    },
    "companyNumber": "12345678",
    "vatNumber": "NL123456789B01",
    "language": "nl",
    "agency": {
      "uuid": "0f3a6c1d-7b2e-4a8f-9c4d-5e6f7a8b9c0d",
      "name": "Mobiliteitsdiensten"
    },
    "createdAt": "2026-09-02T09:15:00.000Z"
  }
]
Fields and schema
Response 200

Typearray<LegacyCreditor>

LegacyCreditor

A customer accessible with the key.

FieldTypeRules and explanations
uuidrequired string · uuid Client UUID.
referencerequired string | null Customer number at Credifin; usable as creditor when submitting.
namerequired string
emailoptional string | null Customer email address.
phoneoptional string | null Client’s telephone number.
addressrequired object
companyNumberoptional string | null Chamber of Commerce or company registration number.
vatNumberoptional string | null VAT number.
languageoptional string Correspondence language (nl, en, de, fr).
agencyrequired object | null The agency the customer belongs to.
createdAtrequired string · date-time

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/creditor Create a company under your agency

Only for agency keys with creditors:create and a required Idempotency-Key. The company is assigned to the agency; group keys select an owned branch with agencyId. Reuse the same key and content for retries. The response contains uuid and reference (customer number); use either as creditor when submitting dossiers. No login is created and no invitation is sent. Standard agencies supply a valid iban; branches use their configured payout account. Existing companies are not taken over. New agency keys include this permission; existing keys do not gain it automatically.

Authentication
Api-Key
operationId
agencyCreateCreditor

Parameters

NameLocationTypeExplanation
Idempotency-Keyrequired header string Unique key per logical request. Save and reuse it after timeouts or network retries.
Example: order-73145-dossier-v1

Request body required

Request body

application/json
Example
{
  "name": "Voorbeeldbedrijf B.V.",
  "email": "administratie@example.test",
  "street": "Teststraat",
  "houseNumber": "10",
  "postalCode": "1234 AB",
  "city": "Amsterdam",
  "country": "NL",
  "language": "nl",
  "vatTreatment": "vat_21",
  "iban": "NL91ABNA0417164300"
}
Fields and schema
Request body
FieldTypeRules and explanations
namerequired string max. length: 200
emailoptional string Supply email, companyNumber or vatNumber for reliable identification.
max. length: 254
phoneoptional string max. length: 32
mobileoptional string max. length: 32
streetoptional string max. length: 255
houseNumberoptional string max. length: 32
postalCodeoptional string max. length: 20
cityoptional string max. length: 160
countryoptional string max. length: 8
companyNumberoptional string max. length: 64
vatNumberoptional string max. length: 64
languageoptional string max. length: 16
ibanoptional string max. length: 64
bicoptional string max. length: 16
vatTreatmentrequired string allowed: vat_21, not_vat_liable, reverse_charge
agencyIdoptional string · uuid Optional for a standard agency or branch. Required for a group: the UUID of its own direct branch.

Responses

201 Company created; identical retries return the same response and Idempotency-Replayed: true.

Response 201

application/json
Fields and schema
LegacyCreditor

A customer accessible with the key.

FieldTypeRules and explanations
uuidrequired string · uuid Client UUID.
referencerequired string | null Customer number at Credifin; usable as creditor when submitting.
namerequired string
emailoptional string | null Customer email address.
phoneoptional string | null Client’s telephone number.
addressrequired object
companyNumberoptional string | null Chamber of Commerce or company registration number.
vatNumberoptional string | null VAT number.
languageoptional string Correspondence language (nl, en, de, fr).
agencyrequired object | null The agency the customer belongs to.
createdAtrequired string · date-time

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Idempotency-Replayed

401 Invalid API key.
403 Missing creditors:create, a customer key or an agency outside your access.
409 CUSTOMER_REQUIRES_REVIEW, IDEMPOTENCY_KEY_REUSED or IDEMPOTENCY_IN_PROGRESS.
422 Invalid input, missing Idempotency-Key or a missing or invalid payout account.
429 Request limit reached; wait for Retry-After.
503 CUSTOMER_NUMBERING_UNAVAILABLE: contact Credifin.

Legacy debtors

Drop-in compatibility for creating and reading debtors, addresses and contacts.

11 endpoints
GET /api/debtor Retrieve your debtors

Paginated list scoped to your customer, including your API debtors without a file. Search by exact, case-sensitive reference using X-API-FILTER-REFERENCE or the reference query parameter. Both must match if supplied together. Unknown references return an empty list; multiple historical matches remain separate results. Pagination uses X-API-NEXT-PAGE and X-API-PAGE-LIMIT, or page and limit.

Authentication
Api-Key
operationId
legacyListDebtors

Parameters

NameLocationTypeExplanation
X-API-NEXT-PAGEoptional header integer Requested page; the first page is 1. Also available as query parameter page.
Example: 1
X-API-PAGE-LIMIToptional header integer Maximum rows per page (default 20, maximum 200). Also available as query parameter limit.
Example: 50
X-API-FILTER-REFERENCEoptional header string Exact customer debtor reference.
referenceoptional query string Alternative to X-API-FILTER-REFERENCE; both values must match if supplied.

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "4d9de86e-5d39-4fef-85a5-055426333625",
    "reference": "KLANT-1042",
    "companyName": "Voorbeeld Handel B.V.",
    "email": "administratie@voorbeeld.nl",
    "country": "NL",
    "language": "nl",
    "isCompany": true
  }
]
Fields and schema
Response 200

Typearray<LegacyDebtor>

LegacyDebtor
FieldTypeRules and explanations
uuidrequired string · uuid
referencerequired string
companyNameoptional string | null
companyNumberoptional string | null
firstNameoptional string | null
lastNameoptional string | null
emailoptional string | null
telephoneoptional string | null
mobileoptional string | null
streetoptional string | null
houseNumberoptional string | null
postalCodeoptional string | null
cityoptional string | null
countryrequired CountryCode ISO 3166-1 alpha-2 country code; input is normalized to uppercase.
pattern: ^[A-Za-z]{2}$
languagerequired LanguageCode Language code, for example nl, en or nl-BE; input is normalized to a canonical form.
pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$
isCompanyoptional boolean
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

LanguageCode

Language code, for example nl, en or nl-BE; input is normalized to a canonical form.

Typestring · pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-API-NEXT-PAGE, X-API-PAGE, X-API-PAGE-LIMIT

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/debtor Create a debtor

Compatible creation operation. The response contains an opaque uuid which is used in subsequent calls as {debtor} is used.

Authentication
Api-Key
operationId
legacyCreateDebtor

Parameters

NameLocationTypeExplanation
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Business debtor
{
  "creditor": "creditor-demo",
  "reference": "KLANT-1042",
  "companyName": "Voorbeeld Handel B.V.",
  "companyNumber": "12345678",
  "email": "administratie@voorbeeld.nl",
  "street": "Keizersgracht",
  "houseNumber": "100",
  "postalCode": "1015CS",
  "city": "Amsterdam",
  "country": "NL",
  "language": "nl"
}
Fields and schema
LegacyDebtorCreate
FieldTypeRules and explanations
creditoroptional string Optional. Customer UUID or customer number; customer keys and agency keys with one customer may omit it.
min. length: 1
referencerequired string min. length: 1 · max. length: 200
companyNameoptional string | null max. length: 250
companyNumberoptional string | null max. length: 100
legalTypeoptional string | null max. length: 100
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
titleoptional string | null max. length: 50
birthdateoptional string | null
ssnoptional string | null max. length: 100
vatNumberoptional string | null max. length: 100
emailoptional string | null max. length: 320
telephoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
websiteoptional string | null max. length: 500
streetoptional string | null max. length: 250
houseNumberoptional string | null max. length: 50
postalCodeoptional string | null max. length: 30
cityoptional string | null max. length: 150
countryrequired CountryCode ISO 3166-1 alpha-2 country code; input is normalized to uppercase.
pattern: ^[A-Za-z]{2}$
languagerequired LanguageCode Language code, for example nl, en or nl-BE; input is normalized to a canonical form.
pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$
accountIbanoptional string | null max. length: 34
accountBicoptional string | null max. length: 11
accountKbooptional string | null max. length: 100
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

LanguageCode

Language code, for example nl, en or nl-BE; input is normalized to a canonical form.

Typestring · pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$

Responses

200 Debtor created.

Response 200

application/json
Example
{
  "uuid": "4d9de86e-5d39-4fef-85a5-055426333625",
  "reference": "KLANT-1042",
  "companyName": "Voorbeeld Handel B.V.",
  "country": "NL",
  "language": "nl"
}
Fields and schema
LegacyDebtor
FieldTypeRules and explanations
uuidrequired string · uuid
referencerequired string
companyNameoptional string | null
companyNumberoptional string | null
firstNameoptional string | null
lastNameoptional string | null
emailoptional string | null
telephoneoptional string | null
mobileoptional string | null
streetoptional string | null
houseNumberoptional string | null
postalCodeoptional string | null
cityoptional string | null
countryrequired CountryCode ISO 3166-1 alpha-2 country code; input is normalized to uppercase.
pattern: ^[A-Za-z]{2}$
languagerequired LanguageCode Language code, for example nl, en or nl-BE; input is normalized to a canonical form.
pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$
isCompanyoptional boolean
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

LanguageCode

Language code, for example nl, en or nl-BE; input is normalized to a canonical form.

Typestring · pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
PUT /api/debtor/{debtor} Update an existing debtor

Partial update requiring dossiers:create and an Idempotency-Key. Omitted fields are preserved; null or an empty string clears optional fields. UUID and reference remain unchanged. Agency keys must supply creditor. Address fields update the primary active address, otherwise the first active address; if none exists, non-empty address fields create a new address. Only the resolved debtor record is updated, not separate historical copies. Records shared by multiple customers return 409 SHARED_DEBTOR. Use a new key per change and the same key for retries. POST still creates/finds debtors. Technical notes remain internal.

Authentication
Api-Key
operationId
legacyUpdateDebtor

Parameters

NameLocationTypeExplanation
debtorrequired path string · uuid Opaque debtor UUID from a previous legacy response.
Example: 4d9de86e-5d39-4fef-85a5-055426333625
Idempotency-Keyrequired header string Unique key per logical request. Save and reuse it after timeouts or network retries.
Example: order-73145-dossier-v1

Request body required

Request body

application/json
Example
{
  "email": "nieuw@voorbeeld.nl",
  "telephone": null,
  "mobile": "+31612345678",
  "postalCode": "7005 AM",
  "city": "Doetinchem"
}
Fields and schema
LegacyDebtorUpdate
FieldTypeRules and explanations
creditoroptional string min. length: 1
referenceoptional string min. length: 1 · max. length: 200
companyNameoptional string | null max. length: 250
companyNumberoptional string | null max. length: 100
legalTypeoptional string | null max. length: 100
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
titleoptional string | null max. length: 50
birthdateoptional string | null
ssnoptional string | null max. length: 100
vatNumberoptional string | null max. length: 100
emailoptional string | null max. length: 320
telephoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
websiteoptional string | null max. length: 500
streetoptional string | null max. length: 250
houseNumberoptional string | null max. length: 50
postalCodeoptional string | null max. length: 30
cityoptional string | null max. length: 150
countryoptional CountryCode ISO 3166-1 alpha-2 country code; input is normalized to uppercase.
pattern: ^[A-Za-z]{2}$
languageoptional LanguageCode Language code, for example nl, en or nl-BE; input is normalized to a canonical form.
pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$
accountIbanoptional string | null max. length: 34
accountBicoptional string | null max. length: 11
accountKbooptional string | null max. length: 100
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

LanguageCode

Language code, for example nl, en or nl-BE; input is normalized to a canonical form.

Typestring · pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$

Responses

200 Debtor updated.

Response 200

application/json
Fields and schema
LegacyDebtor
FieldTypeRules and explanations
uuidrequired string · uuid
referencerequired string
companyNameoptional string | null
companyNumberoptional string | null
firstNameoptional string | null
lastNameoptional string | null
emailoptional string | null
telephoneoptional string | null
mobileoptional string | null
streetoptional string | null
houseNumberoptional string | null
postalCodeoptional string | null
cityoptional string | null
countryrequired CountryCode ISO 3166-1 alpha-2 country code; input is normalized to uppercase.
pattern: ^[A-Za-z]{2}$
languagerequired LanguageCode Language code, for example nl, en or nl-BE; input is normalized to a canonical form.
pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$
isCompanyoptional boolean
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

LanguageCode

Language code, for example nl, en or nl-BE; input is normalized to a canonical form.

Typestring · pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/debtor/{debtor} Retrieve a debtor

Retrieve a debtor

Authentication
Api-Key
operationId
legacyGetDebtor

Parameters

NameLocationTypeExplanation
debtorrequired path string · uuid Opaque debtor UUID from a previous legacy response.
Example: 4d9de86e-5d39-4fef-85a5-055426333625
creditoroptional query string Customer for a shared old debtor UUID.

Responses

200 The debtor.

Response 200

application/json
Example
{
  "uuid": "4d9de86e-5d39-4fef-85a5-055426333625",
  "reference": "KLANT-1042",
  "companyName": "Voorbeeld Handel B.V.",
  "email": "administratie@voorbeeld.nl",
  "country": "NL",
  "language": "nl"
}
Fields and schema
LegacyDebtor
FieldTypeRules and explanations
uuidrequired string · uuid
referencerequired string
companyNameoptional string | null
companyNumberoptional string | null
firstNameoptional string | null
lastNameoptional string | null
emailoptional string | null
telephoneoptional string | null
mobileoptional string | null
streetoptional string | null
houseNumberoptional string | null
postalCodeoptional string | null
cityoptional string | null
countryrequired CountryCode ISO 3166-1 alpha-2 country code; input is normalized to uppercase.
pattern: ^[A-Za-z]{2}$
languagerequired LanguageCode Language code, for example nl, en or nl-BE; input is normalized to a canonical form.
pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$
isCompanyoptional boolean
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

LanguageCode

Language code, for example nl, en or nl-BE; input is normalized to a canonical form.

Typestring · pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/debtor/{debtor}/address Retrieve a debtor’s addresses

All addresses, default address first.

Authentication
Api-Key
operationId
legacyListDebtorAddresses

Parameters

NameLocationTypeExplanation
debtorrequired path string · uuid Opaque debtor UUID from a previous legacy response.
Example: 4d9de86e-5d39-4fef-85a5-055426333625

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "9f4d2b1c-0e7a-4c6b-8d5e-3f2a1b0c9d8e",
    "street": "Keizersgracht",
    "houseNumber": "100",
    "postalCode": "1015CS",
    "city": "Amsterdam",
    "country": "NL",
    "default": true,
    "active": true
  }
]
Fields and schema
Response 200

Typearray<LegacyDebtorAddress>

LegacyDebtorAddress
FieldTypeRules and explanations
streetoptional string | null max. length: 250
houseNumberoptional string | null max. length: 50
postalCodeoptional string | null max. length: 30
cityoptional string | null max. length: 150
countryoptional CountryCode | null
defaultoptional boolean default: false
activeoptional boolean default: true
uuidrequired string · uuid
LegacyDebtorAddressCreate
FieldTypeRules and explanations
streetoptional string | null max. length: 250
houseNumberoptional string | null max. length: 50
postalCodeoptional string | null max. length: 30
cityoptional string | null max. length: 150
countryoptional CountryCode | null
defaultoptional boolean default: false
activeoptional boolean default: true
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/debtor/{debtor}/address Add an address to a debtor

Add an address to a debtor

Authentication
Api-Key
operationId
legacyCreateDebtorAddress

Parameters

NameLocationTypeExplanation
debtorrequired path string · uuid Opaque debtor UUID from a previous legacy response.
Example: 4d9de86e-5d39-4fef-85a5-055426333625
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "street": "Keizersgracht",
  "houseNumber": "100",
  "postalCode": "1015CS",
  "city": "Amsterdam",
  "country": "NL",
  "default": true,
  "active": true
}
Fields and schema
LegacyDebtorAddressCreate
FieldTypeRules and explanations
streetoptional string | null max. length: 250
houseNumberoptional string | null max. length: 50
postalCodeoptional string | null max. length: 30
cityoptional string | null max. length: 150
countryoptional CountryCode | null
defaultoptional boolean default: false
activeoptional boolean default: true
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

Responses

200 Address created.

Response 200

application/json
Example
{
  "uuid": "33c19c0d-eb20-496c-a906-348d38017947",
  "street": "Keizersgracht",
  "houseNumber": "100",
  "postalCode": "1015CS",
  "city": "Amsterdam",
  "country": "NL",
  "default": true,
  "active": true
}
Fields and schema
LegacyDebtorAddress
FieldTypeRules and explanations
streetoptional string | null max. length: 250
houseNumberoptional string | null max. length: 50
postalCodeoptional string | null max. length: 30
cityoptional string | null max. length: 150
countryoptional CountryCode | null
defaultoptional boolean default: false
activeoptional boolean default: true
uuidrequired string · uuid
LegacyDebtorAddressCreate
FieldTypeRules and explanations
streetoptional string | null max. length: 250
houseNumberoptional string | null max. length: 50
postalCodeoptional string | null max. length: 30
cityoptional string | null max. length: 150
countryoptional CountryCode | null
defaultoptional boolean default: false
activeoptional boolean default: true
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/debtor/{debtor}/contact Retrieve a debtor’s active contacts

Active contacts only. Use GET /api/debtor/{debtor}/contact/all for the full list.

Authentication
Api-Key
operationId
legacyListDebtorContacts

Parameters

NameLocationTypeExplanation
debtorrequired path string · uuid Opaque debtor UUID from a previous legacy response.
Example: 4d9de86e-5d39-4fef-85a5-055426333625

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "2c8f1a3b-4d5e-4f60-9a7b-8c9d0e1f2a3b",
    "title": "MR",
    "function": "Boekhouder",
    "firstName": "Jan",
    "lastName": "Jansen",
    "phone": "+31201234567",
    "mobile": null,
    "fax": null,
    "email": "jan@voorbeeld.nl",
    "default": true,
    "active": true
  }
]
Fields and schema
Response 200

Typearray<LegacyDebtorContact>

LegacyDebtorContact
FieldTypeRules and explanations
uuidrequired string · uuid
titleoptional string | null max. length: 50
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
functionoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
defaultoptional boolean default: false
activeoptional boolean default: true
LegacyDebtorContactCreate
FieldTypeRules and explanations
uuidoptional string | null Legacy field; normally omit when creating.
titleoptional string | null max. length: 50
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
functionoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
defaultoptional boolean default: false
activeoptional boolean default: true

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/debtor/{debtor}/contact Add a contact to a debtor

Add a contact to a debtor

Authentication
Api-Key
operationId
legacyCreateDebtorContact

Parameters

NameLocationTypeExplanation
debtorrequired path string · uuid Opaque debtor UUID from a previous legacy response.
Example: 4d9de86e-5d39-4fef-85a5-055426333625
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "firstName": "Samira",
  "lastName": "De Vries",
  "function": "Financiële administratie",
  "email": "samira.devries@voorbeeld.nl",
  "phone": "+31201234567",
  "default": true,
  "active": true
}
Fields and schema
LegacyDebtorContactCreate
FieldTypeRules and explanations
uuidoptional string | null Legacy field; normally omit when creating.
titleoptional string | null max. length: 50
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
functionoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
defaultoptional boolean default: false
activeoptional boolean default: true

Responses

200 Contact created.

Response 200

application/json
Example
{
  "uuid": "d39bfae1-aa13-42a7-a21c-0fa594e2f75b",
  "firstName": "Samira",
  "lastName": "De Vries",
  "email": "samira.devries@voorbeeld.nl",
  "default": true,
  "active": true
}
Fields and schema
LegacyDebtorContact
FieldTypeRules and explanations
uuidrequired string · uuid
titleoptional string | null max. length: 50
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
functionoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
defaultoptional boolean default: false
activeoptional boolean default: true
LegacyDebtorContactCreate
FieldTypeRules and explanations
uuidoptional string | null Legacy field; normally omit when creating.
titleoptional string | null max. length: 50
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
functionoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
defaultoptional boolean default: false
activeoptional boolean default: true

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/debtor/{debtor}/address/{debtorAddress} Retrieve a debtor’s address

One address, including the flags default and active.

Authentication
Api-Key
operationId
legacyGetDebtorAddress

Parameters

NameLocationTypeExplanation
debtorrequired path string · uuid Opaque debtor UUID from a previous legacy response.
Example: 4d9de86e-5d39-4fef-85a5-055426333625
debtorAddressrequired path string · uuid Address UUID from the address list.
Example: 9f4d2b1c-0e7a-4c6b-8d5e-3f2a1b0c9d8e

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "9f4d2b1c-0e7a-4c6b-8d5e-3f2a1b0c9d8e",
  "street": "Keizersgracht",
  "houseNumber": "100",
  "postalCode": "1015CS",
  "city": "Amsterdam",
  "country": "NL",
  "default": true,
  "active": true
}
Fields and schema
LegacyDebtorAddress
FieldTypeRules and explanations
streetoptional string | null max. length: 250
houseNumberoptional string | null max. length: 50
postalCodeoptional string | null max. length: 30
cityoptional string | null max. length: 150
countryoptional CountryCode | null
defaultoptional boolean default: false
activeoptional boolean default: true
uuidrequired string · uuid
LegacyDebtorAddressCreate
FieldTypeRules and explanations
streetoptional string | null max. length: 250
houseNumberoptional string | null max. length: 50
postalCodeoptional string | null max. length: 30
cityoptional string | null max. length: 150
countryoptional CountryCode | null
defaultoptional boolean default: false
activeoptional boolean default: true
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/debtor/{debtor}/contact/all Retrieve all debtor contacts, including inactive ones

Same format as GET /api/debtor/{debtor}/contact, including deactivated contacts.

Authentication
Api-Key
operationId
legacyListAllDebtorContacts

Parameters

NameLocationTypeExplanation
debtorrequired path string · uuid Opaque debtor UUID from a previous legacy response.
Example: 4d9de86e-5d39-4fef-85a5-055426333625

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "2c8f1a3b-4d5e-4f60-9a7b-8c9d0e1f2a3b",
    "title": "MR",
    "function": "Boekhouder",
    "firstName": "Jan",
    "lastName": "Jansen",
    "phone": "+31201234567",
    "mobile": null,
    "fax": null,
    "email": "jan@voorbeeld.nl",
    "default": true,
    "active": false
  }
]
Fields and schema
Response 200

Typearray<LegacyDebtorContact>

LegacyDebtorContact
FieldTypeRules and explanations
uuidrequired string · uuid
titleoptional string | null max. length: 50
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
functionoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
defaultoptional boolean default: false
activeoptional boolean default: true
LegacyDebtorContactCreate
FieldTypeRules and explanations
uuidoptional string | null Legacy field; normally omit when creating.
titleoptional string | null max. length: 50
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
functionoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
defaultoptional boolean default: false
activeoptional boolean default: true

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/debtor/{debtor}/contact/{entityContact} Retrieve a debtor’s contact

One contact; {entityContact} is the UUID from the contact list or your own uuid provided at creation.

Authentication
Api-Key
operationId
legacyGetDebtorContact

Parameters

NameLocationTypeExplanation
debtorrequired path string · uuid Opaque debtor UUID from a previous legacy response.
Example: 4d9de86e-5d39-4fef-85a5-055426333625
entityContactrequired path string Contact UUID, or your own uuid you provided at creation.
Example: 2c8f1a3b-4d5e-4f60-9a7b-8c9d0e1f2a3b

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "2c8f1a3b-4d5e-4f60-9a7b-8c9d0e1f2a3b",
  "title": "MR",
  "function": "Boekhouder",
  "firstName": "Jan",
  "lastName": "Jansen",
  "phone": "+31201234567",
  "mobile": null,
  "fax": null,
  "email": "jan@voorbeeld.nl",
  "default": true,
  "active": true
}
Fields and schema
LegacyDebtorContact
FieldTypeRules and explanations
uuidrequired string · uuid
titleoptional string | null max. length: 50
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
functionoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
defaultoptional boolean default: false
activeoptional boolean default: true
LegacyDebtorContactCreate
FieldTypeRules and explanations
uuidoptional string | null Legacy field; normally omit when creating.
titleoptional string | null max. length: 50
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
functionoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
mobileoptional string | null max. length: 50
faxoptional string | null max. length: 50
defaultoptional boolean default: false
activeoptional boolean default: true

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Legacy files

Compatible core routes for file submission, lists, status, balance and financial summary.

22 endpoints
POST /api/dossier/{dossier}/close Close an Ominimo file

Available only for Ominimo and Test Ominimo within existing access. Requires dossiers:create and Idempotency-Key. Only closes to lost (closed negative), with a reason and explanation; does not delete a file or record a payment or write-off. All withdrawals are grouped in one review task per creditor and Dutch calendar day. During the WIK stage, agreed letter fees follow normal settlement. Other creditors receive 403 CLOSURE_NOT_ENABLED.

Authentication
Api-Key
operationId
ominimoCloseDossier

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038
Idempotency-Keyrequired header string Unique key per logical request. Save and reuse it after timeouts or network retries.
Example: order-73145-dossier-v1

Request body required

Request body

application/json
Example
{
  "reason": "withdrawn",
  "note": "De opdrachtgever trekt de vordering in."
}
Fields and schema
Request body
FieldTypeRules and explanations
reasonrequired string Withdrawal only closes negatively (lost). Use withdrawn or incorrect_submission with an explanation.
allowed: withdrawn, incorrect_submission
noterequired string Substantive explanation for the closure.
min. length: 3 · max. length: 2000

Responses

200 Closed, or already closed. A repeat request does not create a second closure or letter fee.

Response 200

application/json
Example
{
  "uuid": "11111111-1111-4111-8111-111111111111",
  "status": "lost",
  "closedAt": "2026-10-08T10:00:00.000Z",
  "alreadyClosed": false,
  "balanceCents": 2500,
  "reviewRequired": true
}
Fields and schema
Response 200
FieldTypeRules and explanations
uuidrequired string · uuid
statusrequired string allowed: closed, lost
closedAtrequired string | null
alreadyClosedrequired boolean
balanceCentsrequired integer Remaining file balance in euro cents; closing does not zero the balance.
reviewRequiredrequired boolean The closure is included in the daily internal review.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Idempotency-Replayed

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier Retrieve your files

Paginated list, most recently modified first. Filter by modification time with X-API-FILTER-FROM and X-API-FILTER-TO (Dutch time) or by payment reference with X-API-FILTER-OGM. The response header X-API-NEXT-PAGE contains the next page number and is empty on the last page.

Authentication
Api-Key
operationId
legacyListDossiers

Parameters

NameLocationTypeExplanation
X-API-NEXT-PAGEoptional header integer Requested page; the first page is 1. Also available as query parameter page.
Example: 1
X-API-PAGE-LIMIToptional header integer Maximum rows per page (default 20, maximum 200). Also available as query parameter limit.
Example: 50
X-API-FILTER-FROMoptional header string Only files changed at or after this time, as yyyy-MM-dd HH:mm:ss in Dutch local time. Also available as a query string from.
Example: 2026-09-01 00:00:00
X-API-FILTER-TOoptional header string Only files changed at or before this time, as yyyy-MM-dd HH:mm:ss in Dutch local time. Also available as a query string to.
Example: 2026-09-30 23:59:59
X-API-FILTER-OGMoptional header string Filter by payment reference, written as ddd/dddd/ddddd or as twelve digits. Also available as a query string ogm.
Example: 262/1273/93157

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "c3069230-ff95-4c95-aa73-9c57945ae038",
    "ogm": "262/1273/93157",
    "ownerReference": "IN146900",
    "reference": "ORDER-73145",
    "currency": "EUR",
    "creditor": "Voorbeeld opdrachtgever B.V.",
    "creditorUuid": "b1a7c8e2-1234-4f5a-8b9d-123456789abc",
    "creditorReference": "10042",
    "debtor": "Voorbeeld Handel B.V.",
    "debtorUuid": "4d9de86e-5d39-4fef-85a5-055426333625",
    "debtorReference": "KLANT-1042",
    "groupReference": null,
    "isGroupMaster": false,
    "dossierClosed": false,
    "balance": 847.5,
    "status": "open",
    "substatus": "IN_BEHANDELING",
    "updatedAt": "2026-09-01T12:30:00.000Z",
    "workflow": "Zakelijke incasso",
    "meta": [
      {
        "uuid": "0f4e5b2a-3c6d-4e7f-8a9b-0c1d2e3f4a5b",
        "name": "ordernummer",
        "value": "73145"
      }
    ]
  }
]
Fields and schema
Response 200

Typearray<LegacyDossierRow>

LegacyDossierRow

File row from the list; same fields as LegacyDossier plus the party identifiers.

FieldTypeRules and explanations
uuidrequired string · uuid
ogmrequired string
ownerReferencerequired string
creditorrequired string
debtorrequired string
groupReferenceoptional string | null
isGroupMasterrequired boolean
dossierClosedrequired boolean
balancerequired number
statusrequired string
substatusrequired string | null
updatedAtrequired string · date-time
workflowrequired string
metarequired array<LegacyMetaItem>
referenceoptional string | null Your own client reference.
currencyoptional string ISO 4217 currency code.
creditorUuidoptional string · uuid Your creditor’s UUID.
creditorReferenceoptional string | null Your customer’s number at Credifin.
debtorUuidoptional string · uuid Debtor UUID; usable in GET /api/debtor/{debtor}.
debtorReferenceoptional string | null Your debtor reference.
LegacyDossier
FieldTypeRules and explanations
uuidrequired string · uuid
ogmrequired string
ownerReferencerequired string
creditorrequired string
debtorrequired string
groupReferenceoptional string | null
isGroupMasterrequired boolean
dossierClosedrequired boolean
balancerequired number
statusrequired string
substatusrequired string | null
updatedAtrequired string · date-time
workflowrequired string
metarequired array<object>
LegacyMetaItem
FieldTypeRules and explanations
uuidrequired string · uuid Metadata field UUID.
namerequired string
valuerequired string

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-API-NEXT-PAGE, X-API-PAGE, X-API-PAGE-LIMIT

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/dossier Create a file

Creates a file for an existing legacy debtor. reference may be omitted to let Credifin generate the file number.

Authentication
Api-Key
operationId
legacyCreateDossier

Parameters

NameLocationTypeExplanation
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "reference": "DOS-2026-0042",
  "creditor": "creditor-demo",
  "debtor": "4d9de86e-5d39-4fef-85a5-055426333625",
  "currency": "EUR"
}
Fields and schema
LegacyDossierCreate
FieldTypeRules and explanations
referenceoptional string Optional client reference. If omitted, Credifin generates a file number.
min. length: 1 · max. length: 200
creditoroptional string Optional. Customer UUID or customer number; customer keys and agency keys with one customer may omit it.
min. length: 1
debtorrequired string · uuid
currencyoptional CurrencyCode ISO 4217 currency code; input is normalized to uppercase.
pattern: ^[A-Za-z]{3}$ · default: EUR
CurrencyCode

ISO 4217 currency code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{3}$ · default: EUR

Responses

200 File created.

Response 200

application/json
Example
{
  "uuid": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "reference": "DOS-2026-0042",
  "creditor": "creditor-demo",
  "debtor": "4d9de86e-5d39-4fef-85a5-055426333625",
  "currency": "EUR"
}
Fields and schema
LegacyDossierCreated
FieldTypeRules and explanations
uuidrequired string · uuid
referencerequired string
currencyrequired CurrencyCode ISO 4217 currency code; input is normalized to uppercase.
pattern: ^[A-Za-z]{3}$ · default: EUR
creditorrequired string
debtorrequired string · uuid
CurrencyCode

ISO 4217 currency code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{3}$ · default: EUR

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier} Retrieve a file

Retrieve a file

Authentication
Api-Key
operationId
legacyGetDossier

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The file.

Response 200

application/json
Example
{
  "uuid": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "ogm": "+++123/4567/89012+++",
  "ownerReference": "IN-000042",
  "creditor": "Voorbeeld opdrachtgever B.V.",
  "debtor": "Voorbeeld Handel B.V.",
  "isGroupMaster": false,
  "dossierClosed": false,
  "status": "open",
  "substatus": "IN_BEHANDELING",
  "balance": 847.5,
  "updatedAt": "2026-09-01T12:30:00.000Z",
  "workflow": "Zakelijke incasso",
  "meta": []
}
Fields and schema
LegacyDossier
FieldTypeRules and explanations
uuidrequired string · uuid
ogmrequired string
ownerReferencerequired string
creditorrequired string
debtorrequired string
groupReferenceoptional string | null
isGroupMasterrequired boolean
dossierClosedrequired boolean
balancerequired number
statusrequired string
substatusrequired string | null
updatedAtrequired string · date-time
workflowrequired string
metarequired array<object>

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/status Retrieve the file status

Retrieve the file status

Authentication
Api-Key
operationId
legacyGetDossierStatus

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The legacy status and substatus.

Response 200

application/json
Example
{
  "status": "open",
  "substatus": "IN_BEHANDELING"
}
Fields and schema
LegacyDossierStatus
FieldTypeRules and explanations
statusrequired string
substatusrequired string | null

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/open-amount Retrieve the outstanding amount

Returns both balance and the alias field used by older consumers openAmount, using the same current calculation as financial, case details and the case list.

Authentication
Api-Key
operationId
legacyGetDossierOpenAmount

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 Outstanding amount in the file’s currency.

Response 200

application/json
Example
{
  "balance": "847.50",
  "openAmount": 847.5
}
Fields and schema
LegacyOpenAmount
FieldTypeRules and explanations
balancerequired string Outstanding amount in the file currency.
openAmountrequired number Compatibility alias of balance for older consumers.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/dossier/{dossier}/attachment Add an attachment to a file

Adds a file to the case. PDF, JPEG, PNG, TIFF, GIF, WEBP, HEIC, HTML, XML/UBL, EML, MSG, DOCX, XLSX, TXT, CSV up to 10 MB are accepted, as base64 in data. With visibility: "public" the debtor can see the file in the debtor portal; without that option, the attachment is available to you by default in the customer portal and API. Explicitly internal attachments remain hidden in the customer portal.

Authentication
Api-Key
operationId
legacyCreateDossierAttachment

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "filename": "overeenkomst.pdf",
  "data": "JVBERi0xLjQKJcTl8uXrCg==",
  "note": "Ondertekende overeenkomst",
  "type": "OTHER",
  "visibility": "public"
}
Fields and schema
LegacyDossierAttachmentCreate
FieldTypeRules and explanations
filenamerequired string min. length: 1 · max. length: 255
datarequired string Binary file content as base64 without a data URL prefix. Maximum 10 MB; supported: PDF, JPEG, PNG, TIFF, GIF, WEBP, HEIC, HTML, XML/UBL, EML, MSG, DOCX, XLSX, TXT, CSV.
encoding: base64
noteoptional string | null max. length: 2000
typeoptional string | null
visibilityoptional string | null allowed: confidential, informative, internal, public, null
LegacyAttachmentCreate
FieldTypeRules and explanations
filenamerequired string min. length: 1 · max. length: 255
datarequired string Binary file content as base64 without a data URL prefix. Maximum 10 MB; supported: PDF, JPEG, PNG, TIFF, GIF, WEBP, HEIC, HTML, XML/UBL, EML, MSG, DOCX, XLSX, TXT, CSV.
encoding: base64

Responses

200 Attachment saved.

Response 200

application/json
Example
{
  "upload": "success",
  "uuid": "d44cb8a4-8e34-4822-a172-cf4cb7b9d622"
}
Fields and schema
LegacyDossierAttachmentResult
FieldTypeRules and explanations
uploadrequired string
uuidrequired string · uuid
LegacyAttachmentResult
FieldTypeRules and explanations
uploadrequired string

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
413 The request or base64 attachment exceeds the size limit.

Response 413

application/json
Example
{
  "error": {
    "code": "PAYLOAD_TOO_LARGE",
    "message": "De bijlage overschrijdt de toegestane grootte.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/verification Check whether a customer reference already has a file

Searches using your own reference or by the Credifin file number. Always responds with HTTP 200; exists indicates whether a file exists. Useful for preventing duplicate submissions.

Authentication
Api-Key
operationId
legacyVerifyDossierReference

Parameters

NameLocationTypeExplanation
dossierrequired path string Your own client reference or the Credifin file number.
Example: ORDER-73145

Responses

200 The resource.

Response 200

application/json
Example
{
  "reference": "ORDER-73145",
  "exists": true,
  "dossiers": [
    {
      "uuid": "c3069230-ff95-4c95-aa73-9c57945ae038",
      "ownerReference": "IN146900",
      "reference": "ORDER-73145",
      "status": "open",
      "updatedAt": "2026-09-01T12:30:00.000Z"
    }
  ]
}
Fields and schema
LegacyDossierVerification
FieldTypeRules and explanations
referencerequired string
existsrequired boolean
dossiersrequired array<object>

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/financial Retrieve a file’s financial summary

All invoices, credit notes, payments, costs and court costs, plus the scalar fields interest (interest) and penalty (collection costs). balance uses the same current calculation as open-amount, case details and the case list. Credit notes reduce the interest base from their displayed date: linked to their invoice, otherwise oldest invoice first. Recorded adjustments remain unchanged; changes or daily interest can alter the balance between requests.

Authentication
Api-Key
operationId
legacyGetDossierFinancial

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "ownerReference": "IN146900",
  "currency": "EUR",
  "balance": 847.5,
  "principal": 750,
  "interest": 4.49,
  "penalty": 143.01,
  "interestKind": "commercial",
  "interestBase": 650,
  "claimAdjusted": false,
  "totals": {
    "principal": 750,
    "interest": 4.49,
    "penalty": 143.01,
    "costs": 100,
    "payments": 100,
    "creditnotes": 50,
    "balance": 847.5
  },
  "invoices": [
    {
      "uuid": "251ab794-7c85-443a-aeb9-44603080dd1d",
      "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
      "reference": "2026-0417",
      "ogm": null,
      "date": "2026-06-01",
      "dueDate": "2026-06-15",
      "amount": 750,
      "hasAttachment": true,
      "meta": []
    }
  ],
  "creditnotes": [
    {
      "uuid": "7d0ca6f2-1a6c-4e3b-9b8d-2f0e5c4a1b23",
      "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
      "invoice": null,
      "hasAttachment": false,
      "reference": "CN-2026-12",
      "date": "2026-06-20",
      "amount": 50,
      "description": "Retour geleverde goederen"
    }
  ],
  "payments": [
    {
      "uuid": "a9c3d4e5-6f70-4a81-b2c3-d4e5f6a7b8c9",
      "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
      "reference": "262/1273/93157",
      "date": "2026-07-03",
      "valueDate": "2026-07-03",
      "amount": 100,
      "iban": "NL02ABNA0123456789",
      "receivedBy": "OWN_ACCOUNT",
      "status": "matched",
      "source": "bank",
      "sender": "Voorbeeld Handel B.V.",
      "note": null,
      "createdAt": "2026-07-03T09:14:00.000Z"
    }
  ],
  "costs": [
    {
      "uuid": "5b6c7d8e-9f01-4a23-b456-c789d0e1f2a3",
      "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
      "type": "OTHER",
      "typeName": "Overige kosten",
      "description": "Adresonderzoek",
      "date": "2026-06-18",
      "periodFrom": null,
      "periodTo": null,
      "amount": 12.5,
      "amountVat": 0,
      "vatPercent": 0
    }
  ],
  "courtcosts": [
    {
      "uuid": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
      "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
      "type": "DAGV",
      "label": "Dagvaarding",
      "description": null,
      "date": "2026-08-02",
      "amount": 132.4,
      "amountVat": 0,
      "paidByCreditor": false,
      "thirdParty": "Gerechtsdeurwaarderskantoor Voorbeeld"
    }
  ]
}
Fields and schema
LegacyDossierFinancial
FieldTypeRules and explanations
uuidrequired string · uuid File UUID.
ownerReferenceoptional string
currencyrequired string
balancerequired number Without invoice lines or an explicitly recorded principal, the API displays the known case balance, as does the case screen. An empty submission therefore does not acquire calculated collection costs.
principalrequired number Principal (sum of invoices).
interestrequired number Interest accrued to date.
penaltyrequired number Collection costs (WIK), including VAT where applicable.
interestKindoptional string allowed: consumer, commercial
interestBaseoptional number Principal on which interest continues.
claimAdjustedoptional boolean
totalsoptional object
invoicesrequired array<LegacyInvoice>
creditnotesrequired array<LegacyCreditNote>
paymentsrequired array<LegacyPayment>
costsrequired array<LegacyCost>
courtcostsrequired array<LegacyCourtCost>
LegacyInvoice
FieldTypeRules and explanations
uuidrequired string · uuid
dossierrequired string · uuid
referencerequired string
descriptionoptional string | null
ogmoptional string | null
daterequired string · date
dueDaterequired string | null
amountrequired number
hasAttachmentrequired boolean
firstReminderDateoptional string | null
firstReminderMethodoptional string | null
metarequired array<object>
LegacyCreditNote
FieldTypeRules and explanations
uuidrequired string · uuid Credit note UUID.
dossierrequired string · uuid File UUID.
invoicerequired string | null
hasAttachmentrequired boolean
referenceoptional string | null Credit note number.
daterequired string | null Credit note date.
amountrequired number Amount reducing the principal.
descriptionoptional string | null Description.
LegacyPayment
FieldTypeRules and explanations
uuidrequired string · uuid Payment UUID.
dossierrequired string · uuid File UUID.
referenceoptional string | null Payment reference or matching key.
daterequired string | null Payment date.
valueDateoptional string | null Value date.
amountrequired number Amount received.
ibanoptional string | null Counterparty account for receipts into the client funds account; otherwise null.
receivedByoptional string | null Where the money was received.
allowed: CLIENT, OWN_ACCOUNT, null
statusrequired string allowed: matched, unmatched, rejected
sourcerequired string allowed: psp, bank, manual
senderoptional string | null Sender name.
noteoptional string | null Message.
createdAtoptional string · date-time
LegacyCost
FieldTypeRules and explanations
uuidrequired string · uuid Cost item UUID.
dossierrequired string · uuid File UUID.
typerequired string Cost type code, see GET /api/dossier-cost/type.
typeNameoptional string
descriptionoptional string | null Description.
dateoptional string | null Cost item date.
periodFromoptional string | null Start of the period, if applicable.
periodTooptional string | null End of the period, if applicable.
amountrequired number Amount excluding VAT.
amountVatoptional number VAT amount.
vatPercentoptional number
LegacyCourtCost
FieldTypeRules and explanations
uuidrequired string · uuid Court cost item UUID.
dossierrequired string · uuid File UUID.
typeoptional string | null Court cost type code.
labeloptional string | null Court cost type name.
descriptionoptional string | null Description.
daterequired string | null Date.
amountrequired number Amount.
amountVatoptional number VAT amount.
paidByCreditorrequired boolean Whether you advanced these costs yourself.
thirdPartyoptional string | null Bailiff or other third party.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/entity Retrieve the parties in a file

Party list in CollectOnline format: debtor, creditor and collection agency.

Authentication
Api-Key
operationId
legacyGetDossierEntity

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The resource.

Response 200

application/json
Example
[
  {
    "uuid": "4d9de86e-5d39-4fef-85a5-055426333625",
    "name": "Voorbeeld Handel B.V.",
    "type": "debtor",
    "reference": "KLANT-1042"
  },
  {
    "uuid": "b1a7c8e2-1234-4f5a-8b9d-123456789abc",
    "name": "Voorbeeld opdrachtgever B.V.",
    "type": "creditor",
    "reference": "10042"
  }
]
Fields and schema
LegacyDossierEntity

Typearray<object>

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/interest Retrieve a file’s interest breakdown

Statutory or commercial interest on the declining principal. The total also includes fixed invoice interest; rows show only automatically calculated interest. For a manually adjusted claim, adjusted is true and there are no rows.

Authentication
Api-Key
operationId
legacyGetDossierInterest

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "kind": "commercial",
  "interestKind": "COMMERCIAL",
  "interest": 4.49,
  "base": 650,
  "adjusted": false,
  "asOf": "2026-09-01",
  "rows": [
    {
      "from": "2026-06-15",
      "to": "2026-07-03",
      "days": 18,
      "ratePercent": 12.15,
      "base": 750,
      "interest": 4.49
    }
  ]
}
Fields and schema
LegacyDossierInterest
FieldTypeRules and explanations
uuidrequired string · uuid File UUID.
kindrequired string Applied interest type.
allowed: consumer, commercial
interestKindoptional string Interest setting for the file.
interestrequired number Total interest up to asOf.
baserequired number Principal on which interest continues to accrue.
adjustedrequired boolean True for a manually adjusted claim.
asOfoptional string | null Reference date.
rowsrequired array<LegacyInterestRow>
LegacyInterestRow
FieldTypeRules and explanations
fromrequired string · date
torequired string · date
daysrequired integer
ratePercentrequired number
baserequired number Principal bearing interest during this period.
interestrequired number Interest for this period.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/indemnification Retrieve a file’s indemnity details

Whether indemnification applies to the file, with its explanation.

Authentication
Api-Key
operationId
legacyGetDossierIndemnification

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "indemnified": false,
  "note": null
}
Fields and schema
LegacyDossierIndemnification
FieldTypeRules and explanations
uuidrequired string · uuid File UUID.
indemnifiedrequired boolean
noteoptional string | null Explanation of the indemnification.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/rpv Retrieve a file’s court registration fees and disbursements

Cost items of type RPV with their total.

Authentication
Api-Key
operationId
legacyGetDossierRpv

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The resource.

Response 200

application/json
Example
{
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "total": 87.5,
  "costs": [
    {
      "uuid": "5b6c7d8e-9f01-4a23-b456-c789d0e1f2a3",
      "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
      "type": "RPV",
      "typeName": "Rolpremie / verschotten",
      "description": "Verschotten deurwaarder",
      "date": "2026-06-18",
      "periodFrom": null,
      "periodTo": null,
      "amount": 87.5,
      "amountVat": 0,
      "vatPercent": 0
    }
  ]
}
Fields and schema
LegacyDossierRpv
FieldTypeRules and explanations
dossierrequired string The supplied file ID.
totalrequired number Total RPV costs.
costsrequired array<LegacyCost>
LegacyCost
FieldTypeRules and explanations
uuidrequired string · uuid Cost item UUID.
dossierrequired string · uuid File UUID.
typerequired string Cost type code, see GET /api/dossier-cost/type.
typeNameoptional string
descriptionoptional string | null Description.
dateoptional string | null Cost item date.
periodFromoptional string | null Start of the period, if applicable.
periodTooptional string | null End of the period, if applicable.
amountrequired number Amount excluding VAT.
amountVatoptional number VAT amount.
vatPercentoptional number

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/paymentplan Retrieve the current payment plan

The active or proposed payment plan and its instalments. Instalments include the CollectOnline names deadline_at and paid_at as dueDate and paidAt. Without an active payment plan, this route returns 404.

Authentication
Api-Key
operationId
legacyGetDossierPaymentPlan

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "3e4f5a6b-7c8d-4e9f-a0b1-c2d3e4f5a6b7",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "status": "active",
  "period": "monthly",
  "total": 847.5,
  "installment": 211.88,
  "startDate": "2026-09-15",
  "createdAt": "2026-09-01T12:30:00.000Z",
  "payments": [
    {
      "uuid": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "deadline_at": "2026-09-15",
      "dueDate": "2026-09-15",
      "amount": 211.88,
      "paid": false,
      "paid_at": null,
      "paidAt": null
    }
  ]
}
Fields and schema
LegacyPaymentPlan
FieldTypeRules and explanations
uuidrequired string · uuid Payment plan UUID.
dossierrequired string · uuid File UUID.
statusrequired string allowed: proposed, active
periodrequired string Instalment frequency, for example monthly.
totalrequired number Total payment plan amount.
installmentrequired number Instalment amount.
startDateoptional string | null First due date.
createdAtoptional string · date-time
paymentsrequired array<object>

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/meta Retrieve all metadata fields of a file

Custom name-value pairs attached to the file, such as your order number.

Authentication
Api-Key
operationId
legacyListDossierMeta

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "0f4e5b2a-3c6d-4e7f-8a9b-0c1d2e3f4a5b",
    "name": "ordernummer",
    "value": "73145",
    "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038"
  }
]
Fields and schema
Response 200

Typearray<LegacyDossierMeta>

LegacyDossierMeta
FieldTypeRules and explanations
uuidrequired string · uuid Metadata field UUID.
namerequired string
valuerequired string
dossierrequired string | null File UUID.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/dossier/{dossier}/meta Set a metadata field on this file

Same behaviour as POST /api/meta, with the file in the path. An existing field with the same name is overwritten. Credifin uses these fields when answering debtor questions.

Authentication
Api-Key
operationId
legacyUpsertDossierMeta

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "name": "ordernummer",
  "value": "73145"
}
Fields and schema
LegacyMetaCreate
FieldTypeRules and explanations
namerequired string max. length: 120 · pattern: ^[A-Za-z0-9][A-Za-z0-9 ._:-]*$
valuerequired string max. length: 4000

Responses

200 The saved metadata field.

Response 200

application/json
Example
{
  "uuid": "0f4e5b2a-3c6d-4e7f-8a9b-0c1d2e3f4a5b",
  "name": "ordernummer",
  "value": "73145",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038"
}
Fields and schema
LegacyDossierMeta
FieldTypeRules and explanations
uuidrequired string · uuid Metadata field UUID.
namerequired string
valuerequired string
dossierrequired string | null File UUID.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/meta/{name} Retrieve one metadata field of a file

The metadata field with this exact name.

Authentication
Api-Key
operationId
legacyGetDossierMeta

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038
namerequired path string Metadata field name.
Example: ordernummer

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "0f4e5b2a-3c6d-4e7f-8a9b-0c1d2e3f4a5b",
  "name": "ordernummer",
  "value": "73145",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038"
}
Fields and schema
LegacyDossierMeta
FieldTypeRules and explanations
uuidrequired string · uuid Metadata field UUID.
namerequired string
valuerequired string
dossierrequired string | null File UUID.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/meta/{name} Search a metadata field across all your files

All your customer’s files with a metadata field of this name, including each file UUID. Maximum 500 rows.

Authentication
Api-Key
operationId
legacyListMetaByName

Parameters

NameLocationTypeExplanation
namerequired path string Metadata field name.
Example: ordernummer

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "0f4e5b2a-3c6d-4e7f-8a9b-0c1d2e3f4a5b",
    "name": "ordernummer",
    "value": "73145",
    "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038"
  }
]
Fields and schema
Response 200

Typearray<LegacyDossierMeta>

LegacyDossierMeta
FieldTypeRules and explanations
uuidrequired string · uuid Metadata field UUID.
namerequired string
valuerequired string
dossierrequired string | null File UUID.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/stage/{stage} Retrieve a stage

Name and order of a file stage.

Authentication
Api-Key
operationId
legacyGetStage

Parameters

NameLocationTypeExplanation
stagerequired path string · uuid Stage UUID.
Example: 6a7b8c9d-0e1f-4a2b-b3c4-d5e6f7a8b9c0

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "6a7b8c9d-0e1f-4a2b-b3c4-d5e6f7a8b9c0",
  "name": "Minnelijk",
  "order": 1
}
Fields and schema
LegacyStage
FieldTypeRules and explanations
uuidrequired string · uuid Stage UUID.
namerequired string
orderrequired integer

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/meta Set a metadata field on a file

Creates the metadata field or overwrites its value if the name already exists. Some names are reserved for Credifin.

Authentication
Api-Key
operationId
legacyUpsertMeta

Parameters

NameLocationTypeExplanation
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "name": "ordernummer",
  "value": "73145"
}
Fields and schema
LegacyMetaCreateWithDossier
FieldTypeRules and explanations
dossierrequired string File UUID.
namerequired string max. length: 120 · pattern: ^[A-Za-z0-9][A-Za-z0-9 ._:-]*$
valuerequired string max. length: 4000

Responses

200 The saved metadata field.

Response 200

application/json
Example
{
  "uuid": "0f4e5b2a-3c6d-4e7f-8a9b-0c1d2e3f4a5b",
  "name": "ordernummer",
  "value": "73145",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038"
}
Fields and schema
LegacyDossierMeta
FieldTypeRules and explanations
uuidrequired string · uuid Metadata field UUID.
namerequired string
valuerequired string
dossierrequired string | null File UUID.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
PUT /api/dossier/group Group files under one group reference

Set groupReference on all specified files and marks one file as isGroupMaster. All files must belong to your creditor; otherwise nothing is changed.

Authentication
Api-Key
operationId
legacySetDossierGroup

Parameters

NameLocationTypeExplanation
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "reference": "GROEP-2026-07",
  "master": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "dossiers": [
    "c3069230-ff95-4c95-aa73-9c57945ae038",
    "1f2e3d4c-5b6a-4798-8a9b-0c1d2e3f4a5b"
  ]
}
Fields and schema
LegacyDossierGroupSet
FieldTypeRules and explanations
referencerequired string Group reference.
max. length: 120
masteroptional string Main file UUID; defaults to the first file.
dossiersrequired array<string> min. items: 1 · max. items: 200

Responses

200 The files in the group.

Response 200

application/json
Example
{
  "reference": "GROEP-2026-07",
  "dossiers": [
    {
      "uuid": "c3069230-ff95-4c95-aa73-9c57945ae038",
      "ownerReference": "IN146900",
      "groupReference": "GROEP-2026-07",
      "isGroupMaster": true
    },
    {
      "uuid": "1f2e3d4c-5b6a-4798-8a9b-0c1d2e3f4a5b",
      "ownerReference": "IN146901",
      "groupReference": "GROEP-2026-07",
      "isGroupMaster": false
    }
  ]
}
Fields and schema
LegacyDossierGroup
FieldTypeRules and explanations
referencerequired string
dossiersrequired array<object>

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/status/history Read case status history

Newest first. timestamp is the actual status change time in Europe/Amsterdam (YYYY-MM-DD HH:mm), not the import date. Only documented status changes are shown; no history returns an empty list. lost means written off, closed means positively closed. Internal comments are not shared. Requires dossiers:read.

Authentication
Api-Key
operationId
legacyDossierStatusHistory

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid

Responses

200 Status changes.

Response 200

application/json
Fields and schema
Response 200

Typearray<LegacyStatusHistoryRow>

LegacyStatusHistoryRow
FieldTypeRules and explanations
statusrequired string A payment promise is called payment promise in this history; the current file status uses promise to pay.
substatusrequired string | null
timestamprequired string
commentrequired null

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Legacy invoices

Compatible core routes for submitting and reading invoices.

8 endpoints
POST /api/invoice Create an invoice

Provide dossier to add an invoice to your client’s open file, including after migration or key rotation. The existing process is not restarted. With only debtor the only open file is reused, or a new one is created if none exists. With multiple open files, dossier is required (HTTP 409); an explicitly unknown file returns HTTP 404. At least one of the two fields is required. Invoice and file currencies must match. An incomplete submission remains linked to the original API client.

Authentication
Api-Key
operationId
legacyCreateInvoice

Parameters

NameLocationTypeExplanation
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Invoice in an existing file
{
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "creditor": "creditor-demo",
  "reference": "INV-2026-0815",
  "date": "2026-12-01",
  "dueDate": "2026-12-31",
  "amount": 847.5,
  "currency": "EUR",
  "invoiceType": "INVOICE"
}
Fields and schema
LegacyInvoiceCreate

At least one combination is required: debtor or dossier.

FieldTypeRules and explanations
debtoroptional string · uuid
dossieroptional string · uuid
creditoroptional string May be omitted if the API key is linked to exactly one creditor.
referencerequired string min. length: 1 · max. length: 200
daterequired string · date
dueDaterequired string · date
amountrequired number greater than: 0
currencyoptional CurrencyCode ISO 4217 currency code; input is normalized to uppercase.
pattern: ^[A-Za-z]{3}$ · default: EUR
invoiceTypeoptional string | null
descriptionoptional string | null Description of the supplied goods or services; used to record the agreement underlying the claim.
max. length: 1000
ogmoptional string | null max. length: 100
firstReminderDateoptional string | null
firstReminderMethodoptional string | null allowed: email, letter, null
CurrencyCode

ISO 4217 currency code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{3}$ · default: EUR

Responses

200 Invoice created.

Response 200

application/json
Example
{
  "uuid": "251ab794-7c85-443a-aeb9-44603080dd1d",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "reference": "INV-2026-0815",
  "date": "2026-12-01",
  "dueDate": "2026-12-31",
  "amount": 847.5,
  "hasAttachment": false,
  "meta": []
}
Fields and schema
LegacyInvoice
FieldTypeRules and explanations
uuidrequired string · uuid
dossierrequired string · uuid
referencerequired string
descriptionoptional string | null
ogmoptional string | null
daterequired string · date
dueDaterequired string | null
amountrequired number
hasAttachmentrequired boolean
firstReminderDateoptional string | null
firstReminderMethodoptional string | null
metarequired array<object>

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/invoice/{invoice} Retrieve an invoice

Retrieve an invoice

Authentication
Api-Key
operationId
legacyGetInvoice

Parameters

NameLocationTypeExplanation
invoicerequired path string · uuid Opaque invoice UUID from a previous legacy response.
Example: 251ab794-7c85-443a-aeb9-44603080dd1d

Responses

200 The invoice.

Response 200

application/json
Example
{
  "uuid": "251ab794-7c85-443a-aeb9-44603080dd1d",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "reference": "INV-2026-0815",
  "date": "2026-12-01",
  "dueDate": "2026-12-31",
  "amount": 847.5,
  "hasAttachment": true,
  "meta": []
}
Fields and schema
LegacyInvoice
FieldTypeRules and explanations
uuidrequired string · uuid
dossierrequired string · uuid
referencerequired string
descriptionoptional string | null
ogmoptional string | null
daterequired string · date
dueDaterequired string | null
amountrequired number
hasAttachmentrequired boolean
firstReminderDateoptional string | null
firstReminderMethodoptional string | null
metarequired array<object>

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/invoice/{invoice}/attachment Download the invoice file

As in CollectOnline, this route returns the binary file itself, not JSON. Without a visible invoice file it returns 404.

Authentication
Api-Key
operationId
legacyDownloadInvoiceAttachment

Parameters

NameLocationTypeExplanation
invoicerequired path string · uuid Opaque invoice UUID from a previous legacy response.
Example: 251ab794-7c85-443a-aeb9-44603080dd1d

Responses

200 The file content.

Response 200

application/octet-stream
Fields and schema
Response 200

Typestring · binary

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Content-Disposition

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
502 Document storage is temporarily unavailable; try again later.

Response 502

application/json
Example
{
  "error": {
    "code": "DOCUMENT_STORAGE_UNREACHABLE",
    "message": "De documentopslag is tijdelijk niet bereikbaar.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/invoice/{invoice}/attachment Add an attachment to an invoice

Adds a copy to an invoice. PDF, JPEG, PNG, TIFF, GIF, WEBP, HEIC, HTML, XML/UBL, EML, MSG, DOCX, XLSX, TXT, CSV up to 10 MB are accepted, as base64 in data. Invoice copies are visible to the debtor in their portal, just like copies added by Credifin.

Authentication
Api-Key
operationId
legacyCreateInvoiceAttachment

Parameters

NameLocationTypeExplanation
invoicerequired path string · uuid Opaque invoice UUID from a previous legacy response.
Example: 251ab794-7c85-443a-aeb9-44603080dd1d
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "filename": "INV-2026-0815.pdf",
  "data": "JVBERi0xLjQKJcTl8uXrCg=="
}
Fields and schema
LegacyAttachmentCreate
FieldTypeRules and explanations
filenamerequired string min. length: 1 · max. length: 255
datarequired string Binary file content as base64 without a data URL prefix. Maximum 10 MB; supported: PDF, JPEG, PNG, TIFF, GIF, WEBP, HEIC, HTML, XML/UBL, EML, MSG, DOCX, XLSX, TXT, CSV.
encoding: base64

Responses

200 Attachment saved.

Response 200

application/json
Example
{
  "upload": "success"
}
Fields and schema
LegacyAttachmentResult
FieldTypeRules and explanations
uploadrequired string

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
413 The request or base64 attachment exceeds the size limit.

Response 413

application/json
Example
{
  "error": {
    "code": "PAYLOAD_TOO_LARGE",
    "message": "De bijlage overschrijdt de toegestane grootte.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/debtor/{debtor}/invoice Retrieve all invoices of a debtor

Invoices from all this debtor’s files with your customer, oldest first.

Authentication
Api-Key
operationId
legacyListDebtorInvoices

Parameters

NameLocationTypeExplanation
debtorrequired path string · uuid Opaque debtor UUID from a previous legacy response.
Example: 4d9de86e-5d39-4fef-85a5-055426333625

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "251ab794-7c85-443a-aeb9-44603080dd1d",
    "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
    "reference": "2026-0417",
    "ogm": null,
    "date": "2026-06-01",
    "dueDate": "2026-06-15",
    "amount": 750,
    "hasAttachment": true,
    "meta": []
  }
]
Fields and schema
Response 200

Typearray<LegacyInvoice>

LegacyInvoice
FieldTypeRules and explanations
uuidrequired string · uuid
dossierrequired string · uuid
referencerequired string
descriptionoptional string | null
ogmoptional string | null
daterequired string · date
dueDaterequired string | null
amountrequired number
hasAttachmentrequired boolean
firstReminderDateoptional string | null
firstReminderMethodoptional string | null
metarequired array<object>

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/invoice Retrieve a file’s invoices

All invoices in the file, oldest first.

Authentication
Api-Key
operationId
legacyListDossierInvoices

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "251ab794-7c85-443a-aeb9-44603080dd1d",
    "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
    "reference": "2026-0417",
    "ogm": null,
    "date": "2026-06-01",
    "dueDate": "2026-06-15",
    "amount": 750,
    "hasAttachment": true,
    "meta": []
  }
]
Fields and schema
Response 200

Typearray<LegacyInvoice>

LegacyInvoice
FieldTypeRules and explanations
uuidrequired string · uuid
dossierrequired string · uuid
referencerequired string
descriptionoptional string | null
ogmoptional string | null
daterequired string · date
dueDaterequired string | null
amountrequired number
hasAttachmentrequired boolean
firstReminderDateoptional string | null
firstReminderMethodoptional string | null
metarequired array<object>

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/invoice/{invoice}/interest Retrieve an invoice’s interest breakdown

Gross interest accrued from the due date, or the fixed amount set with PUT. With fixed interest, adjusted is true and rows is empty. Existing file arrangements remain authoritative. paymentsApplied is false: use GET /api/dossier/{dossier}/interest for net interest at file level.

Authentication
Api-Key
operationId
legacyGetInvoiceInterest

Parameters

NameLocationTypeExplanation
invoicerequired path string · uuid Opaque invoice UUID from a previous legacy response.
Example: 251ab794-7c85-443a-aeb9-44603080dd1d

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "251ab794-7c85-443a-aeb9-44603080dd1d",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "kind": "commercial",
  "interest": 19.38,
  "from": "2026-06-15",
  "asOf": "2026-09-01",
  "adjusted": false,
  "paymentsApplied": false,
  "rows": [
    {
      "from": "2026-06-15",
      "to": "2026-09-01",
      "days": 78,
      "ratePercent": 12.15,
      "base": 750,
      "interest": 19.38
    }
  ]
}
Fields and schema
LegacyInvoiceInterest
FieldTypeRules and explanations
uuidrequired string · uuid Invoice UUID.
dossierrequired string · uuid File UUID.
kindrequired string allowed: consumer, commercial
interestrequired number Calculated gross or fixed invoice interest, subject to the file’s arrangements.
fromoptional string | null Start date for interest calculation.
asOfoptional string | null Reference date.
adjustedrequired boolean
paymentsAppliedrequired boolean
rowsrequired array<LegacyInterestRow>
LegacyInterestRow
FieldTypeRules and explanations
fromrequired string · date
torequired string · date
daysrequired integer
ratePercentrequired number
baserequired number Principal bearing interest during this period.
interestrequired number Interest for this period.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
PUT /api/invoice/{invoice}/interest Set a fixed interest amount on an invoice

amount is an absolute amount in euros, not a percentage or an additional charge. Requires dossiers:create. Idempotency-Key is optional; send a unique key for each change to recognise retries after a later change. Without a key, each request is processed as a new absolute setting. It replaces automatic interest on this invoice and affects the file balance; other invoices continue to accrue interest. Payments reduce principal in due-date order. A closed file, cost-free WIK process, excluded interest or manually fixed claim returns 409; these arrangements are not overwritten.

Authentication
Api-Key
operationId
legacySetInvoiceInterest

Parameters

NameLocationTypeExplanation
invoicerequired path string · uuid
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "amount": 2
}
Fields and schema
LegacyInvoiceInterestUpdate
FieldTypeRules and explanations
amountrequired number min.: 0 · max.: 21474836.47

Responses

200 The configured interest amount.

Response 200

application/json
Fields and schema
LegacyInvoiceInterestSetResult
FieldTypeRules and explanations
uuidrequired string · uuid
interestrequired number

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Legacy finance

Read payments, credit note items, costs and court costs per file.

12 endpoints
GET /api/dossier/{dossier}/creditnote Retrieve a file’s credit notes

All credit notes reducing this file’s principal.

Authentication
Api-Key
operationId
legacyListDossierCreditNotes

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "7d0ca6f2-1a6c-4e3b-9b8d-2f0e5c4a1b23",
    "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
    "invoice": null,
    "hasAttachment": false,
    "reference": "CN-2026-12",
    "date": "2026-06-20",
    "amount": 50,
    "description": "Retour geleverde goederen"
  }
]
Fields and schema
Response 200

Typearray<LegacyCreditNote>

LegacyCreditNote
FieldTypeRules and explanations
uuidrequired string · uuid Credit note UUID.
dossierrequired string · uuid File UUID.
invoicerequired string | null
hasAttachmentrequired boolean
referenceoptional string | null Credit note number.
daterequired string | null Credit note date.
amountrequired number Amount reducing the principal.
descriptionoptional string | null Description.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/creditnote/{creditNote} Retrieve a credit note

One credit note within your customer’s files.

Authentication
Api-Key
operationId
legacyGetCreditNote

Parameters

NameLocationTypeExplanation
creditNoterequired path string · uuid Credit note UUID.
Example: 7d0ca6f2-1a6c-4e3b-9b8d-2f0e5c4a1b23

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "7d0ca6f2-1a6c-4e3b-9b8d-2f0e5c4a1b23",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "invoice": null,
  "hasAttachment": false,
  "reference": "CN-2026-12",
  "date": "2026-06-20",
  "amount": 50,
  "description": "Retour geleverde goederen"
}
Fields and schema
LegacyCreditNote
FieldTypeRules and explanations
uuidrequired string · uuid Credit note UUID.
dossierrequired string · uuid File UUID.
invoicerequired string | null
hasAttachmentrequired boolean
referenceoptional string | null Credit note number.
daterequired string | null Credit note date.
amountrequired number Amount reducing the principal.
descriptionoptional string | null Description.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/payment Retrieve a file’s payments

All payments recorded in the file. receivedBy indicates whether the money was received into Credifin’s client funds account (OWN_ACCOUNT) or directly by you (CLIENT) was received; iban is only populated for receipts into the client funds account.

Authentication
Api-Key
operationId
legacyListDossierPayments

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "a9c3d4e5-6f70-4a81-b2c3-d4e5f6a7b8c9",
    "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
    "reference": "262/1273/93157",
    "date": "2026-07-03",
    "valueDate": "2026-07-03",
    "amount": 100,
    "iban": "NL02ABNA0123456789",
    "receivedBy": "OWN_ACCOUNT",
    "status": "matched",
    "source": "bank",
    "sender": "Voorbeeld Handel B.V.",
    "note": null,
    "createdAt": "2026-07-03T09:14:00.000Z"
  }
]
Fields and schema
Response 200

Typearray<LegacyPayment>

LegacyPayment
FieldTypeRules and explanations
uuidrequired string · uuid Payment UUID.
dossierrequired string · uuid File UUID.
referenceoptional string | null Payment reference or matching key.
daterequired string | null Payment date.
valueDateoptional string | null Value date.
amountrequired number Amount received.
ibanoptional string | null Counterparty account for receipts into the client funds account; otherwise null.
receivedByoptional string | null Where the money was received.
allowed: CLIENT, OWN_ACCOUNT, null
statusrequired string allowed: matched, unmatched, rejected
sourcerequired string allowed: psp, bank, manual
senderoptional string | null Sender name.
noteoptional string | null Message.
createdAtoptional string · date-time

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/payment/{payment} Retrieve a payment

One payment within your customer’s files.

Authentication
Api-Key
operationId
legacyGetPayment

Parameters

NameLocationTypeExplanation
paymentrequired path string · uuid Payment UUID.
Example: a9c3d4e5-6f70-4a81-b2c3-d4e5f6a7b8c9

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "a9c3d4e5-6f70-4a81-b2c3-d4e5f6a7b8c9",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "reference": "262/1273/93157",
  "date": "2026-07-03",
  "valueDate": "2026-07-03",
  "amount": 100,
  "iban": "NL02ABNA0123456789",
  "receivedBy": "OWN_ACCOUNT",
  "status": "matched",
  "source": "bank",
  "sender": "Voorbeeld Handel B.V.",
  "note": null,
  "createdAt": "2026-07-03T09:14:00.000Z"
}
Fields and schema
LegacyPayment
FieldTypeRules and explanations
uuidrequired string · uuid Payment UUID.
dossierrequired string · uuid File UUID.
referenceoptional string | null Payment reference or matching key.
daterequired string | null Payment date.
valueDateoptional string | null Value date.
amountrequired number Amount received.
ibanoptional string | null Counterparty account for receipts into the client funds account; otherwise null.
receivedByoptional string | null Where the money was received.
allowed: CLIENT, OWN_ACCOUNT, null
statusrequired string allowed: matched, unmatched, rejected
sourcerequired string allowed: psp, bank, manual
senderoptional string | null Sender name.
noteoptional string | null Message.
createdAtoptional string · date-time

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/cost Retrieve a file’s cost items

All cost items in the file. Interest is calculated live and appears separately in GET /api/dossier/{dossier}/interest.

Authentication
Api-Key
operationId
legacyListDossierCosts

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "5b6c7d8e-9f01-4a23-b456-c789d0e1f2a3",
    "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
    "type": "OTHER",
    "typeName": "Overige kosten",
    "description": "Adresonderzoek",
    "date": "2026-06-18",
    "periodFrom": null,
    "periodTo": null,
    "amount": 12.5,
    "amountVat": 0,
    "vatPercent": 0
  }
]
Fields and schema
Response 200

Typearray<LegacyCost>

LegacyCost
FieldTypeRules and explanations
uuidrequired string · uuid Cost item UUID.
dossierrequired string · uuid File UUID.
typerequired string Cost type code, see GET /api/dossier-cost/type.
typeNameoptional string
descriptionoptional string | null Description.
dateoptional string | null Cost item date.
periodFromoptional string | null Start of the period, if applicable.
periodTooptional string | null End of the period, if applicable.
amountrequired number Amount excluding VAT.
amountVatoptional number VAT amount.
vatPercentoptional number

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier-cost/{cost} Retrieve a cost item

One cost item within your customer’s files.

Authentication
Api-Key
operationId
legacyGetCost

Parameters

NameLocationTypeExplanation
costrequired path string · uuid Cost item UUID.
Example: 5b6c7d8e-9f01-4a23-b456-c789d0e1f2a3

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "5b6c7d8e-9f01-4a23-b456-c789d0e1f2a3",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "type": "OTHER",
  "typeName": "Overige kosten",
  "description": "Adresonderzoek",
  "date": "2026-06-18",
  "periodFrom": null,
  "periodTo": null,
  "amount": 12.5,
  "amountVat": 0,
  "vatPercent": 0
}
Fields and schema
LegacyCost
FieldTypeRules and explanations
uuidrequired string · uuid Cost item UUID.
dossierrequired string · uuid File UUID.
typerequired string Cost type code, see GET /api/dossier-cost/type.
typeNameoptional string
descriptionoptional string | null Description.
dateoptional string | null Cost item date.
periodFromoptional string | null Start of the period, if applicable.
periodTooptional string | null End of the period, if applicable.
amountrequired number Amount excluding VAT.
amountVatoptional number VAT amount.
vatPercentoptional number

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier-cost/type Retrieve cost types

The fixed list of cost types that may appear in type may occur for a cost item.

Authentication
Api-Key
operationId
legacyListCostTypes

Parameters

No additional parameters. The Api-Key header remains required.

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "OTHER",
    "name": "Overige kosten"
  },
  {
    "uuid": "RPV",
    "name": "Rolpremie / verschotten"
  }
]
Fields and schema
Response 200

Typearray<LegacyCostType>

LegacyCostType
FieldTypeRules and explanations
uuidrequired string Cost type code.
namerequired string

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier-cost/type/{costType} Retrieve a cost type

One cost type by code.

Authentication
Api-Key
operationId
legacyGetCostType

Parameters

NameLocationTypeExplanation
costTyperequired path string Cost type code.
Example: RPV

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "RPV",
  "name": "Rolpremie / verschotten"
}
Fields and schema
LegacyCostType
FieldTypeRules and explanations
uuidrequired string Cost type code.
namerequired string

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/{dossier}/court-cost Retrieve a file’s court costs

Court and bailiff costs incurred during legal proceedings.

Authentication
Api-Key
operationId
legacyListDossierCourtCosts

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
    "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
    "type": "DAGV",
    "label": "Dagvaarding",
    "description": null,
    "date": "2026-08-02",
    "amount": 132.4,
    "amountVat": 0,
    "paidByCreditor": false,
    "thirdParty": "Gerechtsdeurwaarderskantoor Voorbeeld"
  }
]
Fields and schema
Response 200

Typearray<LegacyCourtCost>

LegacyCourtCost
FieldTypeRules and explanations
uuidrequired string · uuid Court cost item UUID.
dossierrequired string · uuid File UUID.
typeoptional string | null Court cost type code.
labeloptional string | null Court cost type name.
descriptionoptional string | null Description.
daterequired string | null Date.
amountrequired number Amount.
amountVatoptional number VAT amount.
paidByCreditorrequired boolean Whether you advanced these costs yourself.
thirdPartyoptional string | null Bailiff or other third party.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/payment Report a payment you received directly

Records a payment made directly to you by the debtor. The file balance, any active payment plan and settlement are updated immediately, and your case handler is notified. Credifin records payments to its client funds account itself; receivedBy may therefore only be CLIENT . Works on any open file of your creditor, including files from CollectOnline.

Authentication
Api-Key
operationId
legacyReportPayment

Parameters

NameLocationTypeExplanation
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "amount": 100,
  "date": "2026-07-03",
  "reference": "Bankafschrift 2026-118"
}
Fields and schema
LegacyPaymentCreate
FieldTypeRules and explanations
dossierrequired string File UUID (or migrated CollectOnline UUID).
amountrequired number Amount received in the file currency.
greater than: 0
dateoptional string · date Receipt date; defaults to today.
referenceoptional string Your payment reference, for example the bank statement.
max. length: 140
noteoptional string max. length: 500
receivedByoptional string Only CLIENT is allowed.
allowed: CLIENT

Responses

200 The recorded payment.

Response 200

application/json
Example
{
  "uuid": "a9c3d4e5-6f70-4a81-b2c3-d4e5f6a7b8c9",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "reference": "Bankafschrift 2026-118",
  "date": "2026-07-03",
  "valueDate": "2026-07-03",
  "amount": 100,
  "iban": null,
  "receivedBy": "CLIENT",
  "status": "matched",
  "source": "manual",
  "sender": null,
  "note": null,
  "createdAt": "2026-07-03T09:14:00.000Z"
}
Fields and schema
LegacyPayment
FieldTypeRules and explanations
uuidrequired string · uuid Payment UUID.
dossierrequired string · uuid File UUID.
referenceoptional string | null Payment reference or matching key.
daterequired string | null Payment date.
valueDateoptional string | null Value date.
amountrequired number Amount received.
ibanoptional string | null Counterparty account for receipts into the client funds account; otherwise null.
receivedByoptional string | null Where the money was received.
allowed: CLIENT, OWN_ACCOUNT, null
statusrequired string allowed: matched, unmatched, rejected
sourcerequired string allowed: psp, bank, manual
senderoptional string | null Sender name.
noteoptional string | null Message.
createdAtoptional string · date-time

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/creditnote Add a credit note to a file

Reduces the file principal by the credit amount. Interest and collection costs are recalculated and your case handler is notified. Not available for closed files.

Authentication
Api-Key
operationId
legacyCreateCreditNote

Parameters

NameLocationTypeExplanation
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "reference": "CN-2026-12",
  "amount": 50,
  "date": "2026-06-20",
  "description": "Retour geleverde goederen"
}
Fields and schema
LegacyCreditNoteCreate
FieldTypeRules and explanations
invoiceoptional string | null
dossierrequired string File UUID.
amountrequired number Credit amount.
greater than: 0
dateoptional string · date Credit note date; defaults to today.
referenceoptional string Credit note number.
max. length: 140
descriptionoptional string max. length: 500

Responses

200 The recorded credit note.

Response 200

application/json
Example
{
  "uuid": "7d0ca6f2-1a6c-4e3b-9b8d-2f0e5c4a1b23",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "reference": "CN-2026-12",
  "date": "2026-06-20",
  "amount": 50,
  "description": "Retour geleverde goederen"
}
Fields and schema
LegacyCreditNote
FieldTypeRules and explanations
uuidrequired string · uuid Credit note UUID.
dossierrequired string · uuid File UUID.
invoicerequired string | null
hasAttachmentrequired boolean
referenceoptional string | null Credit note number.
daterequired string | null Credit note date.
amountrequired number Amount reducing the principal.
descriptionoptional string | null Description.

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/dossier-cost Add a cost item to a file

Records costs you may contractually charge the debtor, always of type OTHER. Credifin manages interest, collection costs and court costs. Your case handler reviews the item; unavailable for closed files.

Authentication
Api-Key
operationId
legacyCreateCost

Parameters

NameLocationTypeExplanation
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "amount": 12.5,
  "description": "Contractuele administratiekosten",
  "date": "2026-06-18"
}
Fields and schema
LegacyCostCreate
FieldTypeRules and explanations
dossierrequired string File UUID.
amountrequired number Cost item amount.
greater than: 0
descriptionrequired string Short description; required.
max. length: 200
dateoptional string · date
typeoptional string Only OTHER is allowed.
allowed: OTHER

Responses

200 The recorded cost item.

Response 200

application/json
Example
{
  "uuid": "5b6c7d8e-9f01-4a23-b456-c789d0e1f2a3",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "type": "OTHER",
  "typeName": "Overige kosten",
  "description": "Contractuele administratiekosten",
  "date": "2026-06-18",
  "periodFrom": null,
  "periodTo": "2026-06-18",
  "amount": 12.5,
  "amountVat": 0,
  "vatPercent": 0
}
Fields and schema
LegacyCost
FieldTypeRules and explanations
uuidrequired string · uuid Cost item UUID.
dossierrequired string · uuid File UUID.
typerequired string Cost type code, see GET /api/dossier-cost/type.
typeNameoptional string
descriptionoptional string | null Description.
dateoptional string | null Cost item date.
periodFromoptional string | null Start of the period, if applicable.
periodTooptional string | null End of the period, if applicable.
amountrequired number Amount excluding VAT.
amountVatoptional number VAT amount.
vatPercentoptional number

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Legacy documents

Retrieve and download file attachments.

5 endpoints
GET /api/dossier/{dossier}/attachment Retrieve a file’s attachments

Metadata for all customer-visible attachments and your own uploads.

Authentication
Api-Key
operationId
legacyListDossierAttachments

Parameters

NameLocationTypeExplanation
dossierrequired path string · uuid Opaque file UUID from a previous legacy response.
Example: c3069230-ff95-4c95-aa73-9c57945ae038

Responses

200 The list.

Response 200

application/json
Example
[
  {
    "uuid": "d44cb8a4-8e34-4822-a172-cf4cb7b9d622",
    "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
    "invoice": null,
    "attachmentName": "overeenkomst.pdf",
    "filename": "overeenkomst.pdf",
    "contentType": "application/pdf",
    "size": 48213,
    "note": "Ondertekende overeenkomst",
    "type": "OTHER",
    "visibility": "public",
    "date": "2026-06-01T10:00:00.000Z"
  }
]
Fields and schema
Response 200

Typearray<LegacyAttachment>

LegacyAttachment
FieldTypeRules and explanations
uuidrequired string · uuid Attachment UUID.
dossieroptional string | null
invoiceoptional string | null Populated when the attachment belongs to an invoice.
attachmentNamerequired string | null Filename (CollectOnline field name); null for a historical note without a file.
filenamerequired string
contentTypeoptional string | null MIME type.
sizeoptional integer | null Size in bytes.
noteoptional string | null Explanation.
typeoptional string | null Category.
visibilityoptional string
daterequired string · date-time

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/attachment/{attachment} Retrieve attachment details

Metadata for one attachment. Download its content through GET /api/dossier/attachment/{attachment}/download.

Authentication
Api-Key
operationId
legacyGetDossierAttachment

Parameters

NameLocationTypeExplanation
attachmentrequired path string · uuid Attachment UUID from the attachment list or upload response.
Example: d44cb8a4-8e34-4822-a172-cf4cb7b9d622

Responses

200 The resource.

Response 200

application/json
Example
{
  "uuid": "d44cb8a4-8e34-4822-a172-cf4cb7b9d622",
  "dossier": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "invoice": null,
  "attachmentName": "overeenkomst.pdf",
  "filename": "overeenkomst.pdf",
  "contentType": "application/pdf",
  "size": 48213,
  "note": "Ondertekende overeenkomst",
  "type": "OTHER",
  "visibility": "public",
  "date": "2026-06-01T10:00:00.000Z"
}
Fields and schema
LegacyAttachment
FieldTypeRules and explanations
uuidrequired string · uuid Attachment UUID.
dossieroptional string | null
invoiceoptional string | null Populated when the attachment belongs to an invoice.
attachmentNamerequired string | null Filename (CollectOnline field name); null for a historical note without a file.
filenamerequired string
contentTypeoptional string | null MIME type.
sizeoptional integer | null Size in bytes.
noteoptional string | null Explanation.
typeoptional string | null Category.
visibilityoptional string
daterequired string · date-time

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/dossier/attachment/{attachment}/download Download an attachment

The file content with Content-Type and Content-Disposition. Only documents released to the client and your own uploads are accessible.

Authentication
Api-Key
operationId
legacyDownloadDossierAttachment

Parameters

NameLocationTypeExplanation
attachmentrequired path string · uuid Attachment UUID from the attachment list or upload response.
Example: d44cb8a4-8e34-4822-a172-cf4cb7b9d622

Responses

200 The file content.

Response 200

application/octet-stream
Fields and schema
Response 200

Typestring · binary

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Content-Disposition

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
502 Document storage is temporarily unavailable; try again later.

Response 502

application/json
Example
{
  "error": {
    "code": "DOCUMENT_STORAGE_UNREACHABLE",
    "message": "De documentopslag is tijdelijk niet bereikbaar.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/creditnote/{creditNote}/attachment Upload a credit note PDF

Links the attachment to the credit note and the file without changing the credit amount. JSON with filename and base64 data, up to 10 MB, with content inspection and virus scanning as for invoice attachments. Requires dossiers:create. Works on open files within your customer access; closed files return 409.

Authentication
Api-Key
operationId
legacyCreditNoteAttachment

Parameters

NameLocationTypeExplanation
creditNoterequired path string · uuid
Idempotency-Keyoptional header string Recommended unique key per change. Resending the same key and body is safe. Optional for compatibility with existing legacy clients.
Example: legacy-order-73145-debtor

Request body required

Request body

application/json
Example
{
  "filename": "creditnota.pdf",
  "data": "<base64-encoded-pdf>"
}
Fields and schema
LegacyAttachmentCreate
FieldTypeRules and explanations
filenamerequired string min. length: 1 · max. length: 255
datarequired string Binary file content as base64 without a data URL prefix. Maximum 10 MB; supported: PDF, JPEG, PNG, TIFF, GIF, WEBP, HEIC, HTML, XML/UBL, EML, MSG, DOCX, XLSX, TXT, CSV.
encoding: base64

Responses

200 Attachment saved.

Response 200

application/json
Fields and schema
LegacyAttachmentResult
FieldTypeRules and explanations
uploadrequired string

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The request syntax is invalid.

Response 400

application/json
Example
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "De JSON-body kon niet worden verwerkt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
413 The request or base64 attachment exceeds the size limit.

Response 413

application/json
Example
{
  "error": {
    "code": "PAYLOAD_TOO_LARGE",
    "message": "De bijlage overschrijdt de toegestane grootte.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 Content-Type or file type is unsupported.

Response 415

application/json
Example
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Dit media- of bestandstype wordt niet ondersteund.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The JSON is valid, but one or more fields do not meet the contract.

Response 422

application/json
Example
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "De aanvraag bevat ongeldige velden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
GET /api/creditnote/{creditNote}/attachment Download a credit note attachment

Download a credit note attachment

Authentication
Api-Key
operationId
legacyDownloadCreditNoteAttachment

Parameters

NameLocationTypeExplanation
creditNoterequired path string · uuid

Responses

200 The file content.

Response 200

application/octet-stream
Fields and schema
Response 200

Typestring · binary

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Content-Disposition

401 The Api-Key is missing or invalid.

Response 401

application/json
Example
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Een geldige Api-Key is vereist.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 The API key cannot access this customer or resource.

Response 403

application/json
Example
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Deze API-key mag deze resource niet benaderen.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
404 The resource does not exist within this API key’s scope.

Response 404

application/json
Example
{
  "error": {
    "code": "NOT_FOUND",
    "message": "De gevraagde resource is niet gevonden.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 Conflict, such as a duplicate reference or reused idempotency key with a different body.

Response 409

application/json
Example
{
  "error": {
    "code": "IDEMPOTENCY_KEY_REUSED",
    "message": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Too many requests. Wait for the indicated period and retry.

Response 429

application/json
Example
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Probeer de aanvraag later opnieuw.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 Unexpected error. Use the same idempotency key for a safe retry.

Response 500

application/json
Example
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "De aanvraag kon niet worden afgerond.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
502 Document storage is temporarily unavailable; try again later.

Response 502

application/json
Example
{
  "error": {
    "code": "DOCUMENT_STORAGE_UNREACHABLE",
    "message": "De documentopslag is tijdelijk niet bereikbaar.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": true
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 The optional feature is not yet enabled for production.

Response 503

application/json
Example
{
  "error": {
    "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
    "message": "Bijlagen via de API zijn nog niet vrijgegeven.",
    "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
    "retryable": false
  }
}
Fields and schema
LegacyErrorEnvelope
FieldTypeRules and explanations
errorrequired object
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Files v1

Atomic submission for new customer integrations.

2 endpoints
POST /api/v1/dossiers Submit a complete file in one transaction Preferred route

Preferred route for new integrations. Debtor, address, contact, file and invoices are processed in one transaction. An error leaves no partially saved data. A retry with the same Idempotency-Key and the same body returns the same result; reusing it with another body returns HTTP 409. File and invoice attachments are included as base64. Additional details such as policy number, licence plate or cancellation date are sent as file fields.

Authentication
Api-Key
operationId
v1CreateDossier

Parameters

NameLocationTypeExplanation
Idempotency-Keyrequired header string Unique key per logical request. Save and reuse it after timeouts or network retries.
Example: order-73145-dossier-v1

Request body required

Request body

application/json
File with one invoice
{
  "reference": "DOS-2026-0042",
  "currency": "EUR",
  "debtor": {
    "reference": "KLANT-1042",
    "companyName": "Voorbeeld Handel B.V.",
    "companyNumber": "12345678",
    "email": "administratie@voorbeeld.nl",
    "language": "nl",
    "address": {
      "street": "Keizersgracht",
      "houseNumber": "100",
      "postalCode": "1015CS",
      "city": "Amsterdam",
      "country": "NL"
    },
    "contact": {
      "firstName": "Samira",
      "lastName": "De Vries",
      "email": "samira.devries@voorbeeld.nl",
      "phone": "+31201234567"
    }
  },
  "invoices": [
    {
      "reference": "INV-2026-0815",
      "date": "2026-12-01",
      "dueDate": "2026-12-31",
      "amount": 847.5
    }
  ],
  "meta": [
    {
      "name": "polisnummer",
      "value": "POL-2026-1042"
    },
    {
      "name": "kenteken",
      "value": "GF-132-X"
    },
    {
      "name": "polis_ingangsdatum",
      "value": "2026-01-15"
    },
    {
      "name": "opzegdatum",
      "value": "2026-05-01"
    }
  ]
}
Fields and schema
V1DossierCreate
FieldTypeRules and explanations
creditoroptional string Customer number or UUID of the customer you submit for. Required for an agency key (see GET /api/creditor); for a customer key, omit it or use your own customer number.
max. length: 200
referenceoptional string Customer reference; if omitted, Credifin generates a file number.
min. length: 1 · max. length: 200
currencyoptional CurrencyCode ISO 4217 currency code; input is normalized to uppercase.
pattern: ^[A-Za-z]{3}$ · default: EUR
debtorrequired V1DebtorInput
invoicesrequired array<V1InvoiceInput> min. items: 1 · max. items: 100
attachmentsoptional array<V1AttachmentInput> File-level attachments, such as a policy schedule, cancellation letter, confirmation email (.eml/.msg) or account statement. Visible to the customer in the customer portal by default; not automatically visible to the debtor.
max. items: 25
metaoptional array<V1MetaInput> Free file fields supplied by the creditor. Credifin uses these details when answering debtor questions. Change or add them later per file through the meta route.
max. items: 50
CurrencyCode

ISO 4217 currency code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{3}$ · default: EUR

V1DebtorInput

At least one combination is required: companyName or lastName.

FieldTypeRules and explanations
referencerequired string min. length: 1 · max. length: 200
companyNameoptional string | null max. length: 250
companyNumberoptional string | null max. length: 100
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
languagerequired LanguageCode Language code, for example nl, en or nl-BE; input is normalized to a canonical form.
pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$
addressrequired V1AddressInput
contactoptional V1ContactInput
LanguageCode

Language code, for example nl, en or nl-BE; input is normalized to a canonical form.

Typestring · pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$

V1AddressInput
FieldTypeRules and explanations
streetrequired string min. length: 1 · max. length: 250
houseNumberrequired string min. length: 1 · max. length: 50
houseNumberAdditionoptional string | null max. length: 30
postalCoderequired string min. length: 1 · max. length: 30
cityrequired string min. length: 1 · max. length: 150
countryrequired CountryCode ISO 3166-1 alpha-2 country code; input is normalized to uppercase.
pattern: ^[A-Za-z]{2}$
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

V1ContactInput

At least one combination is required: email or phone.

FieldTypeRules and explanations
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
roleoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
V1InvoiceInput
FieldTypeRules and explanations
referencerequired string min. length: 1 · max. length: 200
daterequired string · date
dueDaterequired string · date
amountrequired number greater than: 0
descriptionoptional string | null max. length: 1000
attachmentsoptional array<V1AttachmentInput> max. items: 10
V1AttachmentInput
FieldTypeRules and explanations
filenamerequired string min. length: 1 · max. length: 255
contentTypeoptional string | null Optional; if provided, it must match the detected file contents.
allowed: application/pdf, image/jpeg, image/png, image/tiff, text/plain, text/csv, null
datarequired string Binary file content as base64 without a data URL prefix. Maximum 10 MB.
encoding: base64
V1MetaInput

One file field. You choose the name yourself; use a fixed name per type of detail, for example ordernummer, contractnummer, polisnummer, kenteken, voertuig, polis_ingangsdatum, polis_einddatum, opzegdatum, opgezegd_door, opzegreden, premie_termijnbedrag, betaaltermijn or laatste_betaling. Dates as YYYY-MM-DD. Some names are reserved for Credifin.

FieldTypeRules and explanations
namerequired string min. length: 1 · max. length: 120 · pattern: ^[A-Za-z0-9][A-Za-z0-9 ._:-]*$
valuerequired string max. length: 4000

Responses

201 The complete file has been created.

Response 201

application/json
Example
{
  "dossierId": "c3069230-ff95-4c95-aa73-9c57945ae038",
  "reference": "DOS-2026-0042",
  "debtorId": "4d9de86e-5d39-4fef-85a5-055426333625",
  "invoiceIds": [
    "251ab794-7c85-443a-aeb9-44603080dd1d"
  ],
  "createdAt": "2026-09-01T12:30:00Z"
}
Fields and schema
V1DossierCreated
FieldTypeRules and explanations
dossierIdrequired string · uuid
referencerequired string
debtorIdrequired string · uuid
invoiceIdsrequired array<string · uuid>
createdAtrequired string · date-time

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Idempotency-Replayed

400 The JSON body could not be processed.

Response 400

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/invalid-request",
  "title": "Ongeldige aanvraag",
  "status": 400,
  "detail": "De JSON-body kon niet worden verwerkt.",
  "code": "INVALID_REQUEST",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 A valid Api-Key is required.

Response 401

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/unauthorized",
  "title": "Niet geauthenticeerd",
  "status": 401,
  "detail": "Een geldige Api-Key is vereist.",
  "code": "UNAUTHORIZED",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 This API key cannot access this resource.

Response 403

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/forbidden",
  "title": "Geen toegang",
  "status": 403,
  "detail": "Deze API-key mag deze resource niet benaderen.",
  "code": "FORBIDDEN",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
409 This Idempotency-Key was previously used with a different body.

Response 409

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/idempotency-key-reused",
  "title": "Conflict",
  "status": 409,
  "detail": "Deze Idempotency-Key is eerder met een andere body gebruikt.",
  "code": "IDEMPOTENCY_KEY_REUSED",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
413 The request or attachment exceeds the permitted size.

Response 413

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/payload-too-large",
  "title": "Aanvraag te groot",
  "status": 413,
  "detail": "De aanvraag of bijlage overschrijdt de toegestane grootte.",
  "code": "PAYLOAD_TOO_LARGE",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 This media or file type is unsupported.

Response 415

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/unsupported-media-type",
  "title": "Niet-ondersteund mediatype",
  "status": 415,
  "detail": "Dit media- of bestandstype wordt niet ondersteund.",
  "code": "UNSUPPORTED_MEDIA_TYPE",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The request contains invalid fields.

Response 422

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/validation-failed",
  "title": "Validatiefout",
  "status": 422,
  "detail": "De aanvraag bevat ongeldige velden.",
  "code": "VALIDATION_FAILED",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Retry the request later.

Response 429

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/rate-limited",
  "title": "Te veel aanvragen",
  "status": 429,
  "detail": "Probeer de aanvraag later opnieuw.",
  "code": "RATE_LIMITED",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": true
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 The request could not be completed.

Response 500

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/internal-error",
  "title": "Interne fout",
  "status": 500,
  "detail": "De aanvraag kon niet worden afgerond.",
  "code": "INTERNAL_ERROR",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": true
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 API attachments are not enabled yet.

Response 503

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/attachments-temporarily-unavailable",
  "title": "Functie niet beschikbaar",
  "status": 503,
  "detail": "Bijlagen via de API zijn nog niet vrijgegeven.",
  "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
POST /api/v1/dossiers/validate Validate a file without saving it

Validates the JSON structure and intake field rules with the same parser, without creating a debtor, file, invoice, alias or idempotency record. Use this check during implementation and before production submissions. An Idempotency-Key is not required because this operation does not modify file data; actual intake can still fail if current data conflicts.

Authentication
Api-Key
operationId
v1ValidateDossier

Parameters

No additional parameters. The Api-Key header remains required.

Request body required

Request body

application/json
File with one invoice to validate
{
  "reference": "DOS-2026-0042",
  "currency": "EUR",
  "debtor": {
    "reference": "KLANT-1042",
    "companyName": "Voorbeeld Handel B.V.",
    "language": "nl",
    "address": {
      "street": "Keizersgracht",
      "houseNumber": "100",
      "postalCode": "1015CS",
      "city": "Amsterdam",
      "country": "NL"
    }
  },
  "invoices": [
    {
      "reference": "INV-2026-0815",
      "date": "2026-12-01",
      "dueDate": "2026-12-31",
      "amount": 847.5
    }
  ]
}
Fields and schema
V1DossierCreate
FieldTypeRules and explanations
creditoroptional string Customer number or UUID of the customer you submit for. Required for an agency key (see GET /api/creditor); for a customer key, omit it or use your own customer number.
max. length: 200
referenceoptional string Customer reference; if omitted, Credifin generates a file number.
min. length: 1 · max. length: 200
currencyoptional CurrencyCode ISO 4217 currency code; input is normalized to uppercase.
pattern: ^[A-Za-z]{3}$ · default: EUR
debtorrequired V1DebtorInput
invoicesrequired array<V1InvoiceInput> min. items: 1 · max. items: 100
attachmentsoptional array<V1AttachmentInput> File-level attachments, such as a policy schedule, cancellation letter, confirmation email (.eml/.msg) or account statement. Visible to the customer in the customer portal by default; not automatically visible to the debtor.
max. items: 25
metaoptional array<V1MetaInput> Free file fields supplied by the creditor. Credifin uses these details when answering debtor questions. Change or add them later per file through the meta route.
max. items: 50
CurrencyCode

ISO 4217 currency code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{3}$ · default: EUR

V1DebtorInput

At least one combination is required: companyName or lastName.

FieldTypeRules and explanations
referencerequired string min. length: 1 · max. length: 200
companyNameoptional string | null max. length: 250
companyNumberoptional string | null max. length: 100
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
languagerequired LanguageCode Language code, for example nl, en or nl-BE; input is normalized to a canonical form.
pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$
addressrequired V1AddressInput
contactoptional V1ContactInput
LanguageCode

Language code, for example nl, en or nl-BE; input is normalized to a canonical form.

Typestring · pattern: ^[A-Za-z]{2}(-[A-Za-z]{2})?$

V1AddressInput
FieldTypeRules and explanations
streetrequired string min. length: 1 · max. length: 250
houseNumberrequired string min. length: 1 · max. length: 50
houseNumberAdditionoptional string | null max. length: 30
postalCoderequired string min. length: 1 · max. length: 30
cityrequired string min. length: 1 · max. length: 150
countryrequired CountryCode ISO 3166-1 alpha-2 country code; input is normalized to uppercase.
pattern: ^[A-Za-z]{2}$
CountryCode

ISO 3166-1 alpha-2 country code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{2}$

V1ContactInput

At least one combination is required: email or phone.

FieldTypeRules and explanations
firstNameoptional string | null max. length: 150
lastNameoptional string | null max. length: 250
roleoptional string | null max. length: 150
emailoptional string | null max. length: 320
phoneoptional string | null max. length: 50
V1InvoiceInput
FieldTypeRules and explanations
referencerequired string min. length: 1 · max. length: 200
daterequired string · date
dueDaterequired string · date
amountrequired number greater than: 0
descriptionoptional string | null max. length: 1000
attachmentsoptional array<V1AttachmentInput> max. items: 10
V1AttachmentInput
FieldTypeRules and explanations
filenamerequired string min. length: 1 · max. length: 255
contentTypeoptional string | null Optional; if provided, it must match the detected file contents.
allowed: application/pdf, image/jpeg, image/png, image/tiff, text/plain, text/csv, null
datarequired string Binary file content as base64 without a data URL prefix. Maximum 10 MB.
encoding: base64
V1MetaInput

One file field. You choose the name yourself; use a fixed name per type of detail, for example ordernummer, contractnummer, polisnummer, kenteken, voertuig, polis_ingangsdatum, polis_einddatum, opzegdatum, opgezegd_door, opzegreden, premie_termijnbedrag, betaaltermijn or laatste_betaling. Dates as YYYY-MM-DD. Some names are reserved for Credifin.

FieldTypeRules and explanations
namerequired string min. length: 1 · max. length: 120 · pattern: ^[A-Za-z0-9][A-Za-z0-9 ._:-]*$
valuerequired string max. length: 4000

Responses

200 The body is valid and can be submitted to file intake.

Response 200

application/json
Example
{
  "valid": true,
  "stored": false,
  "reference": "DOS-2026-0042",
  "debtorReference": "KLANT-1042",
  "currency": "EUR",
  "invoiceCount": 1,
  "attachmentCount": 0,
  "totalAmount": 847.5,
  "message": "Validatie geslaagd. Er is geen dossier opgeslagen."
}
Fields and schema
V1DossierValidationResult
FieldTypeRules and explanations
validrequired boolean
storedrequired boolean Confirms this validation route saved nothing.
referencerequired string | null The normalized file reference, or null when no reference was provided.
debtorReferencerequired string min. length: 1 · max. length: 200
currencyrequired CurrencyCode ISO 4217 currency code; input is normalized to uppercase.
pattern: ^[A-Za-z]{3}$ · default: EUR
invoiceCountrequired integer min.: 1 · max.: 100
attachmentCountrequired integer min.: 0 · max.: 25
totalAmountrequired number Sum of the validated invoice amounts.
messagerequired string
CurrencyCode

ISO 4217 currency code; input is normalized to uppercase.

Typestring · pattern: ^[A-Za-z]{3}$ · default: EUR

Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

400 The JSON body could not be processed.

Response 400

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/invalid-request",
  "title": "Ongeldige aanvraag",
  "status": 400,
  "detail": "De JSON-body kon niet worden verwerkt.",
  "code": "INVALID_REQUEST",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
401 A valid Api-Key is required.

Response 401

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/unauthorized",
  "title": "Niet geauthenticeerd",
  "status": 401,
  "detail": "Een geldige Api-Key is vereist.",
  "code": "UNAUTHORIZED",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
403 This API key cannot access this resource.

Response 403

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/forbidden",
  "title": "Geen toegang",
  "status": 403,
  "detail": "Deze API-key mag deze resource niet benaderen.",
  "code": "FORBIDDEN",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
413 The request or attachment exceeds the permitted size.

Response 413

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/payload-too-large",
  "title": "Aanvraag te groot",
  "status": 413,
  "detail": "De aanvraag of bijlage overschrijdt de toegestane grootte.",
  "code": "PAYLOAD_TOO_LARGE",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
415 This media or file type is unsupported.

Response 415

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/unsupported-media-type",
  "title": "Niet-ondersteund mediatype",
  "status": 415,
  "detail": "Dit media- of bestandstype wordt niet ondersteund.",
  "code": "UNSUPPORTED_MEDIA_TYPE",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
422 The request contains invalid fields.

Response 422

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/validation-failed",
  "title": "Validatiefout",
  "status": 422,
  "detail": "De aanvraag bevat ongeldige velden.",
  "code": "VALIDATION_FAILED",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
429 Retry the request later.

Response 429

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/rate-limited",
  "title": "Te veel aanvragen",
  "status": 429,
  "detail": "Probeer de aanvraag later opnieuw.",
  "code": "RATE_LIMITED",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": true
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Response headers: Retry-After

500 The request could not be completed.

Response 500

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/internal-error",
  "title": "Interne fout",
  "status": 500,
  "detail": "De aanvraag kon niet worden afgerond.",
  "code": "INTERNAL_ERROR",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": true
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.
503 API attachments are not enabled yet.

Response 503

application/problem+json
Example
{
  "type": "https://api.credifin.nl/problems/attachments-temporarily-unavailable",
  "title": "Functie niet beschikbaar",
  "status": 503,
  "detail": "Bijlagen via de API zijn nog niet vrijgegeven.",
  "code": "ATTACHMENTS_TEMPORARILY_UNAVAILABLE",
  "requestId": "req_01J6P4NAZG68Y9JVX0TB3JCB58",
  "retryable": false
}
Fields and schema
V1ProblemDetails
FieldTypeRules and explanations
typerequired string · uri
titlerequired string
statusrequired integer min.: 400 · max.: 599
detailrequired string
coderequired string
instanceoptional string
errorsoptional array<ErrorField>
requestIdrequired string Correlation ID for support and logging.
retryablerequired boolean
ErrorField
FieldTypeRules and explanations
fieldrequired string
coderequired string Stable, machine-readable error code.
messagerequired string Human-readable explanation; not intended as a stable integration value.

Handle errors

For IDEMPOTENCY_RESOURCE_UNAVAILABLE, the previously saved result is no longer available within your access. Check the current data first. Use a new reference and Idempotency-Key only for an intentional new submission. Repeating the same request will not resolve a 404 or 403.

Use the stable code in application logic. Human-readable text may change. Legacy routes use a JSON envelope; V1 uses application/problem+json.

Retry allowed

Only retry when retryable: true. For 429 respect Retry-After and reuse the same idempotency key.

Support and traceability

Store requestId when an error occurs. This lets Credifin locate a specific request without sharing API keys or personal data in logs.

CodeWhenWhat to do
CREDITOR_MISMATCHThe customer in the body does not belong to this key. The message shows the value you sent and what the key expects.Leave creditor out or use the correct key. Do not retry.
DOSSIER_DELETED / DEBTOR_DELETED (HTTP 410)You created this case or debtor through the API, but Credifin has since deleted it.Do not retry. Create a new case or debtor if needed.
DOSSIER_CLOSEDPayment, credit note or costs on a closed file.Contact Credifin for a correction.
PAYMENT_REPORTING_NOT_ENABLEDPayment reporting is disabled for your customer.Ask Credifin to enable the client permission.
DOCUMENTS_NOT_ENABLEDDocuments are not enabled for your customer.Ask Credifin to enable the client permission.
FILE_BLOCKEDAttachment contains dangerous content, such as a PDF with scripts or an archive with a program.Send a standard PDF or image.
MALWARE_DETECTEDThe virus scanner detected malware in the attachment.Check the source system; the file was not saved.
RESERVED_META_NAMEThis field name is reserved for Credifin.Choose your own name.
ATTACHMENTS_TEMPORARILY_UNAVAILABLEAttachment upload is temporarily disabled by Credifin.Submit the file without the attachment and resend the attachment later.
IDEMPOTENCY_KEY_REUSEDThe same key with a different body.Use a separate key for each logical request.

Coming later

These features are planned and will appear here once live.