Dieser Endpunkt erstellt Verkaufsrechnungen in Sage Cloud Demat Invoicing. Einmal erstellt, können Sie diese per E-Mail, Peppol oder Post versenden.
ℹ️ Authentifizierung (persönlicher API-Token +
X-Company-Id), Limits und allgemeine Fehlercodes finden Sie im API-Überblick für Entwickler. Lesen Sie diesen zuerst.
POST https://www.clouddematinvoicing.be/api/v1/webhooks/create-invoice
Header:
Authorization: Bearer <ihr-api-token>
X-Company-Id: <ihre-company-id>
Content-Type: application/json
Accept: application/json
Der Body ist ein JSON-Array von Rechnungsobjekten. Sie können eine oder mehrere Rechnungen gleichzeitig erstellen (max. 50, atomar verarbeitet).
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
language |
string | Ja | Rechnungssprache (bestimmt die PDF-Sprache): nl, fr, en oder de |
invoice_date |
string | Ja | Rechnungsdatum im Format JJJJ-MM-TT (z. B. 2026-02-15) |
expire_days |
integer | Ja | Anzahl Tage nach dem Rechnungsdatum bis zur Fälligkeit (0–365) |
reference |
string | Nein | Ihre eigene Referenz (z. B. Bestellnummer), max. 255 Zeichen |
intro |
string | Nein | Einleitungstext über den Rechnungszeilen, max. 255 Zeichen |
remarks |
string | Nein | Bemerkung unter den Rechnungszeilen (für den Kunden sichtbar), max. 255 Zeichen |
private_notes |
string | Nein | Private Notiz (nur intern, nicht auf dem PDF), max. 255 Zeichen |
payment_info |
string | Nein | Zahlungsinfo anzeigen: yes (Standard), no oder paid (siehe unten) |
vat_shifted |
integer | Nein | MwSt.-Verlagerungsregime (siehe Tabelle unten). Standard 0 |
client |
object | Ja | Kundendaten (siehe Kundenobjekt) |
invoice_lines |
array | Ja | Mindestens 1 Rechnungszeile (siehe Rechnungszeilen) |
payment_info| Wert | Verhalten |
|---|---|
yes |
Zahlungsinformationen auf der Rechnung anzeigen (Standard) |
no |
Zahlungsinformationen ausblenden |
paid |
Rechnung sofort als bezahlt markieren; eine Zahlung wird automatisch für den vollen Betrag erfasst |
vat_shiftedMwSt.-Verlagerungsregime:
| Wert | Bedeutung |
|---|---|
0 |
Keine Verlagerung (Standard) |
1 |
MwSt. verlagert (allgemein) |
2 |
Mitunternehmer (Arbeiten an unbeweglichen Gütern) |
4 |
Innergemeinschaftliche Dienstleistung (B2B) |
8 |
Innergemeinschaftliche Lieferung von Waren (B2B) |
32 |
Differenzbesteuerung (MwSt.) |
64 |
Ausfuhr von Waren (außerhalb EU) |
128 |
Dienstleistungen außerhalb EU (B2B) |
⚠️ Bei jedem Wert außer
0müssen alle Rechnungszeilenvat_percentage: 0haben. Der Kunde benötigt in der Regel eine gültige USt-IdNr. (z. B. für innergemeinschaftliche Lieferungen).
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
company_type |
string | Ja | company oder individual (Legacy: bedrijf / particulier) |
type |
string | Bei company |
Rechtsform (z. B. bv, nv, vzw). Siehe Abschnitt „Entitätstypen" unten |
email |
string | Ja | Gültige E-Mail-Adresse, max. 255 Zeichen |
first_name |
string | Ja | Vorname der Kontaktperson |
last_name |
string | Ja | Nachname der Kontaktperson |
address |
string | Ja | Straße + Hausnummer |
address_zip |
string | Ja | Postleitzahl |
address_city |
string | Ja | Stadt |
address_country |
string | Ja | Ländercode, genau 2 Buchstaben (ISO 3166-1, z. B. BE) |
vat_country_code |
string | Nein | USt-Ländercode, genau 2 Buchstaben (z. B. BE) |
vat_id |
string | Nein | USt-IdNr. ohne Ländercode (z. B. 0123456789). Punkte/Leerzeichen werden normalisiert |
title |
string | Nein | Anrede, max. 255 Zeichen |
telephone |
string | Nein | Telefonnummer, max. 255 Zeichen |
ℹ️ Das Feld
typeist nur für Unternehmen (company/bedrijf) erforderlich, nicht für Privatpersonen.
invoice_lines)| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
description |
string | Ja | Beschreibung des Produkts oder der Dienstleistung, max. 255 Zeichen |
unit_price |
numeric | Ja | Einzelpreis ohne MwSt. (Punkt als Dezimaltrennzeichen, z. B. 99.99) |
amount |
numeric | Ja | Anzahl der Einheiten (kann dezimal sein, z. B. 2.5) |
vat_percentage |
numeric | Ja | MwSt.-Satz ohne % (z. B. 21, 6, 0) |
Die Summen werden automatisch berechnet:
netto = unit_price × amountmwst = netto × (vat_percentage / 100)gesamt = netto + mwstcurl -X POST https://www.clouddematinvoicing.be/api/v1/webhooks/create-invoice \
-H "Authorization: Bearer <ihr-api-token>" \
-H "X-Company-Id: 12345" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '[
{
"language": "de",
"invoice_date": "2026-02-15",
"expire_days": 30,
"reference": "ORDER-2026-001",
"intro": "Vielen Dank für Ihre Bestellung!",
"remarks": "Bitte zahlen Sie innerhalb von 30 Tagen.",
"payment_info": "yes",
"vat_shifted": 0,
"client": {
"company_type": "company",
"type": "bv",
"email": "info@kunde.be",
"vat_country_code": "BE",
"vat_id": "0123456789",
"first_name": "Jan",
"last_name": "Janssen",
"address": "Kerkstraat 1",
"address_zip": "1000",
"address_city": "Brüssel",
"address_country": "BE",
"telephone": "+32 2 123 45 67"
},
"invoice_lines": [
{ "description": "Website-Entwicklung", "unit_price": 1500.00, "amount": 1, "vat_percentage": 21 },
{ "description": "Hosting (12 Monate)", "unit_price": 15.00, "amount": 12, "vat_percentage": 21 }
]
}
]'
Für eine Privatperson sind type und vat_id nicht erforderlich:
[
{
"language": "de",
"invoice_date": "2026-02-20",
"expire_days": 14,
"client": {
"company_type": "individual",
"email": "john.doe@gmail.com",
"first_name": "John",
"last_name": "Doe",
"address": "Dorpstraat 45",
"address_zip": "9000",
"address_city": "Gent",
"address_country": "BE"
},
"invoice_lines": [
{ "description": "Grafikdesign Logo", "unit_price": 350.00, "amount": 1, "vat_percentage": 21 }
]
}
]
Bei Verlagerung verwenden Sie vat_shifted und vat_percentage: 0:
[
{
"language": "en",
"invoice_date": "2026-02-25",
"expire_days": 30,
"vat_shifted": 4,
"remarks": "Reverse charge - VAT to be accounted for by the customer",
"client": {
"company_type": "company",
"type": "gmbh",
"email": "info@deutschefirma.de",
"vat_country_code": "DE",
"vat_id": "123456789",
"first_name": "Hans",
"last_name": "Müller",
"address": "Hauptstraße 10",
"address_zip": "10115",
"address_city": "Berlin",
"address_country": "DE"
},
"invoice_lines": [
{ "description": "Consulting services", "unit_price": 2500.00, "amount": 1, "vat_percentage": 0 }
]
}
]
{
"invoices": [1234, 5678]
}
invoices ist eine Liste interner Datenbank-IDs in derselben Reihenfolge wie die Eingabe; dies sind keine Rechnungsnummern. Rechnungsnummern werden automatisch gemäß Ihren Unternehmenseinstellungen generiert.
Siehe die Fehlertabelle im API-Überblick. Ein Validierungsfehler sieht so aus:
{
"error": "invalid_body",
"errors": {
"0.language": ["The language must be one of: nl, fr, en, de."],
"0.client.email": ["The client email must be a valid email address."],
"0.invoice_lines.0.unit_price": ["The unit price must be a number."]
}
}
Für jede Rechnung prüft Sage Cloud Demat Invoicing, ob der Kunde bereits existiert, andernfalls wird er angelegt:
vat_country_code + vat_id): Abgleich auf Ihr Unternehmen + die normalisierte USt-IdNr. Die Formatierung spielt keine Rolle: 0123456789 und 0123.456.789 treffen denselben Kunden.vat_id + email. Verwenden Sie eine einheitliche E-Mail-Adresse, um Duplikate zu vermeiden.⚠️ Existiert der Kunde bereits (USt-Abgleich)? Dann wird er nicht mit den neuen Daten (Name, Adresse, E-Mail) überschrieben. Ändern Sie Kundendaten in Sage Cloud Demat Invoicing selbst.
1234.56), kein Komma und kein Tausendertrennzeichen.JJJJ-MM-TT mit führenden Nullen (2026-02-05).%-Zeichen (21, nicht "21%" oder 0.21).Gültige Werte für client.type (nur bei Unternehmen erforderlich), u. a.: bv, nv, vzw, bvba, cvba, comm.v, comm.va, vof, eenmanszaak, sa, sarl, sas, srl, gmbh, ag, limited-ltd, limited-llc, natuurlijk-persoon, onbekend. Nicht sicher? Verwenden Sie onbekend.
Der alte Endpunkt POST /webhooks/create-invoice (ohne /api/v1) funktioniert noch für bestehende Integrationen, ist aber veraltet: er gibt eine einfache Liste ([10232, 10233]) zurück und verwendet andere Fehlercodes (406/401). Migrieren Sie zu POST /api/v1/webhooks/create-invoice.