1
Create your customer
The debtor, with the contact details the collector will write to.
2
Add the case vouchers
The unpaid invoices, and any reminder and compensation fees you have already
charged.
3
Attach the documentation
Invoice copies, contracts, photos — whatever proves the claim.
4
Register direct payments
Money the debtor pays straight to you after handover.
5
Book the settlement
What you are paid, and what you are charged.
Before you start
- Get access to the creditor portal. Your debt collection partner invites you. If you do not have access yet, reach out to them.
- Create an API key. In the portal, go to Developers → API, name the key
and grant it the scopes listed under Scopes. Authenticate with
Authorization: Bearer {token}— see Authentication. - Note your ids. The same page shows your
tenantId— your debt collection partner’s tenant, which is part of every URL — and yourcreditorId, which identifies you. - Ask for the configuration ids you need. The case group you should send cases under, the handles of any custom attributes, and the id of any custom voucher type. These are set up in the platform by your partner.
- Add a webhook. Under Developers → Webhooks in the portal, or with Create webhook. It only ever receives events for your own cases. See Webhooks.
Identifiers to store on both sides
Getting the identifier mapping right is the most important part of the integration. Decide up front which id lives where, and persist it.1. Create your customer
A customer is your relationship with the party that owes the money. It holds one or more users: the people involved. Exactly one of them is the debtor.POST /v1/{tenantId}/customers?creditorId={creditorId}
- One user must be the debtor.
relation: "debtor"is the party the claim is against, and the one the debt is registered on. Anyone else on the matter — a guardian, an administrator, a contact at a company — isrelation: "alternative-contact". contact: truemarks the user Debbie addresses its letters, emails and texts to.isCompanysays whether the customer is a business or a private individual. Sendcvron the user for a company andcprfor a person.referenceIdis your customer number — the one in the system you keep your books in. It is what the settlement refers to, so it has to match. It only needs to be unique within your creditor, which is whyGET /customers/by-reference-id/{referenceId}?creditorId={creditorId}finds the customer again instead of you keeping a mapping table.
customerId. Store it.
API reference: Create customer
See POST Create customer for full
details.
2. Add the case vouchers for collection
A case voucher is one financial entry on the claim. Send the unpaid invoice, plus any reminder fees and compensation fees you have already charged, in one request. Debbie decides itself whether that opens a new case or extends an existing one for the same debtor.POST /v1/{tenantId}/customers/{customerId}/add-case-vouchers
Voucher types
voucherTypeId says what the entry is. These are the ones an invoice-to-cash
integration normally sends:
The full list, including subscription and loan types, is on the
Voucher types page, and Get voucher
types returns the same list at
runtime including any types your debt collection partner has defined
themselves. Fetch it once and cache it rather than hard-coding the ids.
Amounts, references and duplicates
- Amounts are integers in the minor unit, and debt is negative.
-450000is a debt of 4,500.00 DKK. A positive amount is a credit note or a payment. referenceIdis your invoice number. It is what you will refer to when you register a direct payment, and what the settlement reports back, so send the number your own system knows.uniqueIdstops duplicates. It is unique across the whole tenant, so a replayed request is rejected rather than creating the invoice twice. Setting it to the invoice number is usually right.
You do not send source
Everything you send through this API is imposed by you, and is registered with
source: "CREDITOR" whatever the field says. Leave it out.
Attributes and case groups
Two mechanisms carry your own structure into the collection process:- Attributes (properties) are custom fields on a case or a case voucher — a
meter number, a contract id, a subscription plan. Your debt collection partner
defines the property types in the platform and gives you the handle to use
as the key:
"properties": { "meterNumber": "874113" }. Attributes can be printed in the letters to the debtor and reported on, so anything the collector or the debtor needs to recognise the claim belongs here. - Case groups segment your portfolio — a product line, a business unit, a
brand. Pass
constraints.caseGroupIdand the case is opened in that group, which decides how the collector treats and reports on it. The id comes from your partner.constraintsonly applies when the vouchers open a new case; it is ignored when they land on an existing one.
caseId it landed
on and the caseVoucherId it was created as. Store the caseId — you need
it for the next step.
API reference: Add case vouchers
See POST Add case
vouchers for full
details.
3. Attach the documentation
A claim that is documented is a claim that survives an objection. Attach the invoice copy, the contract, the delivery note, the photo — whatever your partner would otherwise have to ask you for. Documents are attached in two calls: upload the file, then create the document that points at it.Upload the file
POST /v1/{tenantId}/files
content is the file, base64 encoded. The response is the stored file:
The upload calls the identifier
id; everywhere it is referenced afterwards —
on a document, and as the appendix of a case voucher — the field is called
fileId. It is the same value. On a document only the id is read: the name
and content type are taken from the stored file.Create the document
POST /v1/{tenantId}/documents
entityIdandentityTypesay what the document belongs to.casewith thecaseIdyou got back in step 2 is what you want for invoice copies and anything else about a specific claim.creditorwith your owncreditorIdis for documents about the relationship itself — a power of attorney, a standing agreement — and they are not tied to a case.typeis alwaysOTHER. The other document types — foundation, verdict, settlement — decide whether a debt has a legal foundation and when it expires, and are set by your debt collection partner as the case progresses through the courts.minAccessRoledecides who can see it. Consider setting it todebtor: the document then shows up in the debtor’s self-service portal, so someone disputing an invoice can see the invoice. Leave it out and the document stays between you and your collection partner.
API reference: Add document
See POST Add document for full
details.
4. Register payments made directly to you
Once a case is handed over, the debtor may still pay you rather than your debt collection partner — into your own bank account, or through your own portal. Those payments have to reach Debbie, or the collection process keeps chasing money that has already arrived, and the settlement is wrong.POST /v1/{tenantId}/direct-payments?creditorId={creditorId}
- You reference the invoice, not the case.
caseVoucherReferenceIdis thereferenceIdyou sent the invoice under. Debbie finds it within your creditor, so it has to match exactly one case voucher. If you stored thecaseVoucherIdDebbie returned when the invoice was created, send that instead — exactly one of the two. - The payment goes to that one invoice. A payment of 1,200.00 on an invoice of 1,200.00 settles it; a smaller amount settles part of it. A payment that covers several invoices has to be split by you and sent as one request per invoice — one payment against one entry is all this endpoint does today.
- The amount is positive, in the minor unit, and cannot exceed what is still outstanding on that invoice — earlier payments already registered against it count.
currencyis a check, not a conversion. If you send it, it must match the currency of the invoice.- Send an
Idempotency-Keyheader, one per request — the bank transaction id plus the invoice number, say, since one transfer may cover several invoices — so a retry within 48 hours is answered with the original result instead of booking the payment again. There is nouniqueIdon a direct payment. sourceis not a field here either. A direct payment is by definition money that never passed through your collection partner, and is always registered asCREDITOR.
When the payment is refused
Every refusal carries amessage that says why. These are the ones to handle:
A
400 or 404 will not succeed on retry with the same body; put those aside
for review rather than back on the queue.
API reference: Register direct payment
See POST Register direct
payment for full details.
5. Book the settlement
When your debt collection partner settles with you, a settlement is created andbillings.create fires with a billingId. That is the trigger to fetch what
the settlement is made of — the payments and how they were split, and the fees
and disbursements you are charged — and post it.
Settlements
Settlement has enough detail of its own that it has a separate guide. See
Settlements.
What happens in between
Between handover and settlement, the collection process is your partner’s. Three webhooks tell you what is going on without you having to ask:
There is no per-payment event today: money reaching a case is accounted for in
the settlement, and visible in the creditor portal meanwhile.
billings.create
is the one your integration has to handle.
Subscribe to them under Developers → Webhooks in the portal or with
Create webhook; a webhook of yours
only ever carries your own creditor’s events.
Scopes
Grant the API key only what the integration uses:Checklist before going live
1
The customer reference is the one you post money into
customer.referenceId is the customer number from the system that receives
the settlement, and caseVoucher.referenceId is your invoice number.2
Every write is replayable
Idempotency-Key on every request, uniqueId on every voucher, and failed
calls go to a retry queue rather than being dropped.3
Identifiers are stored on both sides
customerId, caseId and the caseVoucherId of every voucher you created
are persisted in your own system.4
Documentation follows the claim
Invoice copies and contracts are uploaded and attached to the case, and it
is decided per document type whether the debtor should be able to see it.
5
Direct payments flow to Debbie the same day
Payments into your own account are registered against the invoice they
settle, keyed on the bank transaction id.
6
The webhook receiver verifies and is idempotent
X-Verification-Token is checked, creditorId is checked against your own,
the handler tolerates duplicate deliveries, and it responds 200 before doing
downstream work.7
Settlement is booked in full
billings.create triggers a fetch of both the deposit distribution and the
billing vouchers, and the payout, the commission, the fees and the
disbursements are all posted. See Settlements.