curl --request POST \
--url https://service.incaseof.law/openapi/claims/{claim_id}/invoices \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'file=@example-file;type=application/pdf' \
--form 'invoice_number=<string>' \
--form total_amount=123 \
--form maturity_date=2023-12-25 \
--form issue_date=2023-12-25 \
--form 'invoice_issuer=<string>' \
--form 'invoice_recipient=<string>' \
--form 'subject=<string>' \
--form 'description=<string>' \
--form invoice_amount_net=123 \
--form creditor_reminder_fees_incurred=123 \
--form amount_paid=1.01 \
--form last_payment_date=2023-12-25 \
--form default_date=2023-12-25 \
--form 'creditor_reminder_dates=<string>' \
--form contract_date=2023-12-25 \
--form documentType=invoiceimport requests
url = "https://service.incaseof.law/openapi/claims/{claim_id}/invoices"
files = { "file": ("example-file", open("example-file", "rb"), "application/pdf") }
payload = {
"invoice_number": "<string>",
"total_amount": "123",
"maturity_date": "2023-12-25",
"issue_date": "2023-12-25",
"invoice_issuer": "<string>",
"invoice_recipient": "<string>",
"subject": "<string>",
"description": "<string>",
"invoice_amount_net": "123",
"creditor_reminder_fees_incurred": "123",
"amount_paid": "1.01",
"last_payment_date": "2023-12-25",
"default_date": "2023-12-25",
"creditor_reminder_dates": "<string>",
"contract_date": "2023-12-25",
"documentType": "invoice"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('invoice_number', '<string>');
form.append('total_amount', '123');
form.append('maturity_date', '2023-12-25');
form.append('issue_date', '2023-12-25');
form.append('invoice_issuer', '<string>');
form.append('invoice_recipient', '<string>');
form.append('subject', '<string>');
form.append('description', '<string>');
form.append('invoice_amount_net', '123');
form.append('creditor_reminder_fees_incurred', '123');
form.append('amount_paid', '1.01');
form.append('last_payment_date', '2023-12-25');
form.append('default_date', '2023-12-25');
form.append('creditor_reminder_dates', '<string>');
form.append('contract_date', '2023-12-25');
form.append('documentType', 'invoice');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://service.incaseof.law/openapi/claims/{claim_id}/invoices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://service.incaseof.law/openapi/claims/{claim_id}/invoices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/pdf\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_number\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"total_amount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"maturity_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issue_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_issuer\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_recipient\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"subject\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_amount_net\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_fees_incurred\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount_paid\"\r\n\r\n1.01\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_payment_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_dates\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contract_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\ninvoice\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://service.incaseof.law/openapi/claims/{claim_id}/invoices"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/pdf\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_number\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"total_amount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"maturity_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issue_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_issuer\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_recipient\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"subject\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_amount_net\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_fees_incurred\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount_paid\"\r\n\r\n1.01\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_payment_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_dates\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contract_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\ninvoice\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://service.incaseof.law/openapi/claims/{claim_id}/invoices")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/pdf\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_number\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"total_amount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"maturity_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issue_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_issuer\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_recipient\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"subject\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_amount_net\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_fees_incurred\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount_paid\"\r\n\r\n1.01\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_payment_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_dates\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contract_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\ninvoice\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://service.incaseof.law/openapi/claims/{claim_id}/invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/pdf\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_number\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"total_amount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"maturity_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issue_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_issuer\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_recipient\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"subject\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_amount_net\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_fees_incurred\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount_paid\"\r\n\r\n1.01\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_payment_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_dates\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contract_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\ninvoice\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "b7c2d6ba-9d2c-42b6-8e1f-4a8e3d9e9c77",
"claim_id": "3c90c3cc-0d44-4b50-8888-8dd257363052",
"invoice_number": "INV-2025-001",
"invoice_amount_gross": 123.45,
"invoice_due_date": "2025-10-01",
"invoice_issue_date": "2025-09-15",
"invoice_issuer": "Acme GmbH",
"invoice_recipient": "John Doe",
"subject": "Original invoice PDF",
"created_at": "2025-10-11T10:30:00Z"
}
}
{
"success": false,
"message": "Claim not found"
}
{
"success": false,
"message": "Invalid file type. Only PDF files are allowed for invoice uploads."
}
{
"success": false,
"message": "Invalid request. This endpoint only supports PDF invoice uploads via multipart/form-data. Please use multipart/form-data with a file field. The original filename will be automatically preserved."
}
Upload invoice PDF
Upload the PDF of an invoice the claim is based on. A new invoice is created for it; its amount adds to the
claim’s total_claim_amount. Fields you send are stored on that invoice; the PDF is read automatically for
the ones you leave out.
Only PDF files (multipart/form-data, a file part). The fields may come before or after the file part.
Field names: total_amount is stored as invoice_amount_gross, maturity_date as invoice_due_date,
issue_date as invoice_issue_date. Files over 50 MB answer 413.
An invoice partly paid before handover: send total_amount (the amount on the invoice) and amount_paid
(optionally last_payment_date); the rules are those of the manual invoice endpoint. A refused combination
answers 400 and stores nothing.
Required fields and the health-data check of your partner agreement (see Partner intake rules) are applied
before the PDF is stored: a refused upload stores nothing. description / subject is checked as the subject.
curl --request POST \
--url https://service.incaseof.law/openapi/claims/{claim_id}/invoices \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'file=@example-file;type=application/pdf' \
--form 'invoice_number=<string>' \
--form total_amount=123 \
--form maturity_date=2023-12-25 \
--form issue_date=2023-12-25 \
--form 'invoice_issuer=<string>' \
--form 'invoice_recipient=<string>' \
--form 'subject=<string>' \
--form 'description=<string>' \
--form invoice_amount_net=123 \
--form creditor_reminder_fees_incurred=123 \
--form amount_paid=1.01 \
--form last_payment_date=2023-12-25 \
--form default_date=2023-12-25 \
--form 'creditor_reminder_dates=<string>' \
--form contract_date=2023-12-25 \
--form documentType=invoiceimport requests
url = "https://service.incaseof.law/openapi/claims/{claim_id}/invoices"
files = { "file": ("example-file", open("example-file", "rb"), "application/pdf") }
payload = {
"invoice_number": "<string>",
"total_amount": "123",
"maturity_date": "2023-12-25",
"issue_date": "2023-12-25",
"invoice_issuer": "<string>",
"invoice_recipient": "<string>",
"subject": "<string>",
"description": "<string>",
"invoice_amount_net": "123",
"creditor_reminder_fees_incurred": "123",
"amount_paid": "1.01",
"last_payment_date": "2023-12-25",
"default_date": "2023-12-25",
"creditor_reminder_dates": "<string>",
"contract_date": "2023-12-25",
"documentType": "invoice"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('invoice_number', '<string>');
form.append('total_amount', '123');
form.append('maturity_date', '2023-12-25');
form.append('issue_date', '2023-12-25');
form.append('invoice_issuer', '<string>');
form.append('invoice_recipient', '<string>');
form.append('subject', '<string>');
form.append('description', '<string>');
form.append('invoice_amount_net', '123');
form.append('creditor_reminder_fees_incurred', '123');
form.append('amount_paid', '1.01');
form.append('last_payment_date', '2023-12-25');
form.append('default_date', '2023-12-25');
form.append('creditor_reminder_dates', '<string>');
form.append('contract_date', '2023-12-25');
form.append('documentType', 'invoice');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://service.incaseof.law/openapi/claims/{claim_id}/invoices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://service.incaseof.law/openapi/claims/{claim_id}/invoices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/pdf\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_number\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"total_amount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"maturity_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issue_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_issuer\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_recipient\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"subject\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_amount_net\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_fees_incurred\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount_paid\"\r\n\r\n1.01\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_payment_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_dates\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contract_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\ninvoice\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://service.incaseof.law/openapi/claims/{claim_id}/invoices"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/pdf\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_number\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"total_amount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"maturity_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issue_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_issuer\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_recipient\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"subject\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_amount_net\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_fees_incurred\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount_paid\"\r\n\r\n1.01\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_payment_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_dates\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contract_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\ninvoice\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://service.incaseof.law/openapi/claims/{claim_id}/invoices")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/pdf\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_number\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"total_amount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"maturity_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issue_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_issuer\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_recipient\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"subject\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_amount_net\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_fees_incurred\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount_paid\"\r\n\r\n1.01\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_payment_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_dates\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contract_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\ninvoice\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://service.incaseof.law/openapi/claims/{claim_id}/invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/pdf\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_number\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"total_amount\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"maturity_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issue_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_issuer\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_recipient\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"subject\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoice_amount_net\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_fees_incurred\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount_paid\"\r\n\r\n1.01\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_payment_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"default_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"creditor_reminder_dates\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contract_date\"\r\n\r\n2023-12-25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentType\"\r\n\r\ninvoice\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "b7c2d6ba-9d2c-42b6-8e1f-4a8e3d9e9c77",
"claim_id": "3c90c3cc-0d44-4b50-8888-8dd257363052",
"invoice_number": "INV-2025-001",
"invoice_amount_gross": 123.45,
"invoice_due_date": "2025-10-01",
"invoice_issue_date": "2025-09-15",
"invoice_issuer": "Acme GmbH",
"invoice_recipient": "John Doe",
"subject": "Original invoice PDF",
"created_at": "2025-10-11T10:30:00Z"
}
}
{
"success": false,
"message": "Claim not found"
}
{
"success": false,
"message": "Invalid file type. Only PDF files are allowed for invoice uploads."
}
{
"success": false,
"message": "Invalid request. This endpoint only supports PDF invoice uploads via multipart/form-data. Please use multipart/form-data with a file field. The original filename will be automatically preserved."
}
multipart/form-data with a PDF file upload.
The interactive playground cannot send file uploads; use Insomnia/Postman for testing.Overview
Upload a PDF invoice and attach it to a claim. When you upload a PDF, it is stored and linked to the claim, and OCR attempts to extract invoice data and populate the invoice record.Request Format
- Content-Type:
multipart/form-data - Required field:
file(PDF only) - Optional text fields:
invoice_number,total_amount,maturity_date,issue_date,invoice_issuer,invoice_recipient,subject,invoice_amount_net,creditor_reminder_fees_incurred,amount_paid,last_payment_date
Authentication
Requires API Token authentication via Bearer token.Path Parameters
Request Body (Multipart Form)
invoice_amount_gross)invoice_due_date)invoice_issue_date)total_amount and must be less than it. We collect only the rest; it is not recorded as a payment. A refused combination answers 400 and stores nothing. See the manual invoice endpoint for details.YYYY-MM-DD, not in the future). Requires amount_paid.Testing Instructions
- Create a new request: Method
POST, URL/openapi/claims//invoices - Auth tab: Type
Bearer, Token = your API token - Body tab: Type
Multipart Form- Add field
filewith typeFile, select your.pdf(original filename is automatically preserved) - Optional text fields:
invoice_number,total_amount,maturity_date,issue_date,invoice_issuer,invoice_recipient,subject,invoice_amount_net,creditor_reminder_fees_incurred,amount_paid,last_payment_date
- Add field
- Send request and verify
201response
multipart/form-data, the original PDF filename is automatically preserved.The Mintlify playground cannot send multipart/form-data with files. Use Insomnia/Postman for testing.Examples
curl -X POST \
'https://<host>/openapi/claims/3c90c3cc-0d44-4b50-8888-8dd257363052/invoices' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-F 'file=@/path/to/invoice.pdf' \
-F 'invoice_number=INV-2025-001' \
-F 'total_amount=123.45' \
-F 'maturity_date=2025-10-01' \
-F 'issue_date=2025-09-15' \
-F 'invoice_issuer=Acme GmbH' \
-F 'invoice_recipient=John Doe' \
-F 'subject=Original invoice PDF'
const formData = new FormData()
formData.append('file', yourFileInput.files[0])
formData.append('invoice_number', 'INV-2025-001')
formData.append('total_amount', '123.45')
formData.append('maturity_date', '2025-10-01')
formData.append('issue_date', '2025-09-15')
formData.append('invoice_issuer', 'Acme GmbH')
formData.append('invoice_recipient', 'John Doe')
formData.append('subject', 'Original invoice PDF')
const res = await fetch('https://<host>/openapi/claims/3c90c3cc-0d44-4b50-8888-8dd257363052/invoices', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_API_TOKEN' },
body: formData,
})
const json = await res.json()
import requests
url = 'https://<host>/openapi/claims/3c90c3cc-0d44-4b50-8888-8dd257363052/invoices'
headers = { 'Authorization': 'Bearer YOUR_API_TOKEN' }
files = { 'file': ('invoice.pdf', open('invoice.pdf', 'rb'), 'application/pdf') }
data = {
'invoice_number': 'INV-2025-001',
'total_amount': '123.45',
'maturity_date': '2025-10-01',
'issue_date': '2025-09-15',
'invoice_issuer': 'Acme GmbH',
'invoice_recipient': 'John Doe',
'subject': 'Original invoice PDF',
}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.status_code, response.text)
Responses
{
"success": true,
"data": {
"id": "b7c2d6ba-9d2c-42b6-8e1f-4a8e3d9e9c77",
"claim_id": "3c90c3cc-0d44-4b50-8888-8dd257363052",
"invoice_number": "INV-2025-001",
"invoice_amount_gross": 123.45,
"invoice_due_date": "2025-10-01",
"invoice_issue_date": "2025-09-15",
"invoice_issuer": "Acme GmbH",
"invoice_recipient": "John Doe",
"subject": "Original invoice PDF",
"created_at": "2025-10-11T10:30:00Z"
}
}
{
"success": false,
"message": "Claim not found"
}
{
"success": false,
"message": "Invalid file type. Only PDF files are allowed for invoice uploads."
}
{
"success": false,
"message": "Invalid request. This endpoint only supports PDF invoice uploads via multipart/form-data. Please use multipart/form-data with a file field. The original filename will be automatically preserved."
}
Notes
- This endpoint only accepts PDF file uploads via
multipart/form-data - OCR runs on uploaded PDFs and may populate invoice fields automatically
- The invoice amount will automatically update the claim’s total_claim_amount via database triggers
Authorizations
An API key (ico_live_…), sent as Authorization: Bearer <key>. Not a JWT.
Path Parameters
Body
The invoice PDF
Gross amount in EUR
The creditor's name on the invoice
The debtor's name on the invoice
Stored as the subject when subject is not sent
Reminder fees the creditor already charged and that are still unpaid
Paid by the debtor to the creditor before handover. Requires total_amount and must be less than it; see the manual invoice endpoint
x >= 0.01Date of that payment; requires amount_paid
The date the debtor fell into default
The dates of your own reminders: comma-separated (2026-10-01,2026-10-15), a JSON array, or the field repeated once per date; see the manual invoice endpoint
See the manual invoice endpoint
reminder, bgb_286_3 The date of the contract the invoice is based on