How It Works
- Partner: The referral entity (e.g. a law firm) with a configured commission rate
- Customer: A client brought in by a partner - automatically linked via your API key
- Debtor: The person or company that owes the debt to the customer
- Claim: A debt collection case - linked to a debtor and a customer via
customer_id - Revenue Share: Automatically created when incaseof.law earns fees on a claim linked to a customer
Step 1: Create a Partner
Partners are created internally by incaseof.law. If you are interested in becoming a partner, contact us at [email protected]. Once confirmed, you will receive an API key to start integrating.Step 2: Create a Customer
Create a customer. The customer is automatically linked to your partner account via your API key. Send your own ID for the business aspartner_client_reference and its VAT ID as uid on every case. If your partner account already has a customer with that reference or UID, the API returns it instead of creating a new one — see Reusing an existing customer.
Nothing reaches a debtor before the customer has accepted our terms. The customer’s contact receives an invitation
and accepts our GTC and DPA when signing in. Until then claims of this customer can be created, but no letter, SMS or
e-mail goes to a debtor and no court filing is made. If your agreement with us requires the provider confirmation
under § 1.5 lit. b, forward it once per customer with
POST /openapi/customers/{id}/provider-confirmation — the
same rule applies until it is on file. GET /openapi/customers/{id} shows what
is still outstanding in legal_acceptance.missing (gtc, dpa, provider_confirmation).- cURL
- JavaScript
- Python
Save the customer ID: You will need the
id from the response to link claims to this customer.Customer Fields
¹ Partner keys only. Required when your partner agreement requires it (see Required fields and prohibited data).
Reusing an existing customer
Each business you work for should be one customer. Before creating, the API looks for a customer of your partner account — first bypartner_client_reference, then by uid, and when neither matches, by the same email and the same name (case and spaces ignored), as long as that customer’s stored partner_client_reference / uid do not differ from the ones you sent:
nullfor either key is treated as not given. Withoutpartner_client_referenceanduid, only name and e-mail identify the customer: the same business sent with a different name or e-mail becomes a new customer. Sendpartner_client_reference(or store the returnedid) to make the match exact.- Customers created before you sent these keys can be linked with
PATCH /openapi/customers/{id}({"partner_client_reference": "ACME-001", "uid": "ATU12345678"}); a key already used by another of your customers returns409. - The keys are scoped to your partner account: another partner sending the same UID gets its own customer.
- The customer’s onboarding invitation is sent once, with the first claim filed for that customer — reusing the customer does not send it again.
- E-mail that already has a login. If the customer’s
emailbelongs to an existing incaseof.law user — for example one owner with two companies and separate bookkeeping — no invitation is needed: the user is added to the new customer’s organisation immediately, receives a short notice e-mail, and finds the company in their account after the next login. The response shows"existing_user_linked": true. Each company remains a separate customer with its ownid.
Required fields and prohibited data
Your partner agreement may require fields the API otherwise treats as optional, and may prohibit health data. incaseof.law sets both for your partner account; they are checked before anything is stored, so a refused request leaves nothing behind.- Required fields — a request without one answers
400 VALIDATION_ERROR, onedetailsentry per missing field, e.g."message": "creditor_confirmation required". Checked on creation:- claim:
creditor_confirmation: { "warranties_confirmed": true, "consent_confirmed": true } - invoice (JSON and PDF upload):
default_date,creditor_reminder_dates(not withdefault_basis: "bgb_286_3"),contract_date,subject - debtor:
legal_representative(the debtor’s guardian or attorney — send it whenever one exists) - customer:
legal_form,legal_representative(ownerfor a sole trader),billing_email,payout_account,vat_deductible
- claim:
- Prohibited data — invoice
subject/description,invoice_issuer,invoice_recipient, paymentnotes, documentdescriptionand customermetadataare checked for health data: a health insurance number (KVNR), an institution code (IK, a nine-digit number on its own),PZN,Pflegegrad,Diagnose,ICDor an ICD code (F32.1). A match answers400 PROHIBITED_DATAnaming the field; the value is never echoed. Describe services neutrally, e.g. “Privatärztliche Leistung vom 01.09.2026”.
Step 3: Create a Debtor
Create the debtor (person or company) that owes the debt to your customer. You must include thecustomer_id so the system knows which organization this debtor belongs to.
Salutation (person.salutation): mr (Herr), mrs (Frau) or diverse (Divers). Herr, Herrn, Hr., Frau, Fr., männlich, weiblich, male, female, m, w, f, d (also followed by academic titles, e.g. Frau Dr.) are accepted case-insensitively and stored as the code. ohne Anrede, none, unbekannt or no value means no salutation: the letter then addresses the debtor by name only. Do not send diverse as a fallback, for couples or for companies; a couple (Herr und Frau) is rejected. An unrecognised salutation returns 400 VALIDATION_ERROR with the accepted values. If your system calls the field gender, send it as person.gender: the same values are accepted, an unrecognised one is ignored, and it is read only when salutation is absent, null or empty.
Send your own customer number for the debtor as partner_client_reference and, for a business, its VAT ID as company.uid. A person whose name you hold in one field goes into person.last_name with first_name empty; such a case is checked by our case managers before the first letter goes out.
- cURL
Save the debtor ID: You will need the
id from the response when creating the claim.Step 4: Create a Claim with Customer ID
When creating a claim, pass thecustomer_id to link it to a partner’s customer. This enables automatic revenue share tracking.
- cURL
- JavaScript
- Python
Step 4b: Decide on the court step
When out-of-court collection is exhausted, the claim moves todunning_action_recommended (you receive the webhook
claim.collection_stage_changed). The creditor decides whether to take the claim to court — through your integration:
GET /openapi/claims/{claim_id}/lawsuit-decision/estimate— the court fee, and whether a lawyer is required (Austria) or not allowed (Germany).decision_openistruewhile a decision can still be sent (the claim is atdunning_action_recommendedordunning_action_filed); once one is recorded (by you or by the creditor in the portal) it turnsfalseanddecidedturnstrue.POST /openapi/claims/{claim_id}/lawsuit-decisionwith{ "decision": "sue" }or{ "decision": "decline" }.
Step 5: Automatic Revenue Sharing
When incaseof.law earns fees on a claim linked to a customer, the system automatically calculates the partner’s commission based on those fees - not the payment amount. No additional API calls are needed - revenue shares are created automatically.Revenue Share Statuses
Complete Partner Workflow Example
- JavaScript
- Python
Managing Customers
List Customers
- cURL
Update a Customer
- cURL
Delete a Customer
- cURL
Next Steps
- Use the Customer API to create customers
- Link claims to customers using
customer_idwhen creating claims - Revenue shares are tracked automatically