API-Dokumentation
Mit einem API-Schlüssel liest und schreibt ein anderes Programm — ein Shop, eine Zeiterfassung, ein eigenes Skript — die Belege, Kunden, Produkte und Abo-Rechnungen eines Unternehmens. Hier steht jede Anfrage, die ein Schlüssel stellen kann, mit ihren Feldern.
Für KI-Assistenten und Code-Generatoren
Diesen Link können Sie einem KI-Assistenten oder einem Code-Generator geben — er beschreibt jede Anfrage, die ein Schlüssel stellen kann, und enthält keine Daten.
Erste Schritte
https://api.billmatic.de/api/v1/companies/<Unternehmens-Kennung>Die Unternehmens-Kennung steht nach der Anmeldung unter Organisation → API-Schlüssel.
- Authorization
Bearer bm_…— der Schlüssel, bei jeder Anfrage. Ohne gültigen Schlüssel kommt 401.- Accept
application/ld+json— Antworten als JSON. Ohne diese Kopfzeile antwortet die API im JSON:API-Format.- Content-Type
application/ld+jsonbei POST,application/merge-patch+jsonbei PATCH. Der Inhalt ist ein gewöhnliches JSON-Objekt mit den Feldern, die unten bei jeder Anfrage stehen.
curl https://api.billmatic.de/api/v1/companies/<Unternehmens-Kennung>/customers \ -H "Authorization: Bearer bm_…" \ -H "Accept: application/ld+json"
curl -X POST https://api.billmatic.de/api/v1/companies/<Unternehmens-Kennung>/customers \
-H "Authorization: Bearer bm_…" \
-H "Accept: application/ld+json" \
-H "Content-Type: application/ld+json" \
-d '{"company": "Weidner Bau GmbH", "salutation": "Herr", "firstName": "Peter",
"lastName": "Fuchs", "street": "Baustraße 14", "zipCode": "01067",
"city": "Dresden", "country": "DE", "email": "buchhaltung@weidner-bau.de"}'Antworten
- Ein Eintrag ist ein JSON-Objekt mit den Feldern aus der Übersicht unten, dazu
@id(seine Adresse) und@type. - Eine Liste steht in
member, die Gesamtzahl intotalItems. Listen kommen seitenweise:?page=2&itemsPerPage=50; solange es eine nächste Seite gibt, nenntview.nextihre Adresse. - Beträge sind Zeichenketten mit Punkt und zwei Nachkommastellen (
"1469.13"), nie JSON-Zahlen — so geht kein Cent durch Rundung verloren. Datumsangaben folgen ISO 8601. - Belege veröffentlichen und versenden ist endgültig. Veröffentlichen vergibt die Nummer und macht den Beleg zum Rechtsdokument; ändern lässt er sich danach nur noch durch Storno oder Gutschrift.
send-mailverschickt eine echte E-Mail an den Kunden. - Was ein Schlüssel tut, tut er im Namen der Person, die ihn erstellt hat — so steht es auch in den Belegen und im Änderungsprotokoll.
Fehler
detail (bei 401 in message).| Code | Bedeutet | Was tun |
|---|---|---|
| 401 | Der Schlüssel fehlt, ist falsch oder wurde widerrufen. | Kopfzeile prüfen; ein widerrufener Schlüssel wird durch einen neuen ersetzt. |
| 403 | Der Schlüssel darf das nicht — der Bereich ist nicht angehakt, nicht gebucht, oder mit einem Schlüssel gar nicht erreichbar. | Der Grund steht in detail. Häkchen ändern heißt: neuen Schlüssel erstellen. |
| 404 | Den Eintrag gibt es nicht — oder die Unternehmens-Kennung ist eine andere als die des Schlüssels. | Kennung in der Adresse prüfen. |
| 409 | Die Anfrage ist richtig, der Zustand lässt sie nicht zu — etwa ein Beleg, der schon veröffentlicht ist. | Nicht wiederholen; erst den Zustand ändern. |
| 422 | Felder fehlen oder sind ungültig. | violations nennt je Feld (propertyPath) den Grund (message). |
Anfragen
- Belege 29
- Kunden 5
- Produkte 5
- Abo-Rechnungen 5
Belege
/archiveThe company's archived documents, newest first
Filter with `type`, page with `page` and `itemsPerPage`.
Parameter in der Adresse
pageinteger- The collection page number
itemsPerPageinteger- The number of items per page
typestring- Optional type filter.
Antwort 200: eine Liste in member, je Eintrag diese Felder.
Felder der Antwort (11)
idstringcompanyIdstring- The company this entry belongs to.
typestring- Beispiel:
invoice numberstring, darf leer seinissuedOnstring, darf leer seintotalNetstring, darf leer seintotalVatstring, darf leer seintotalGrossstring, darf leer seinsha256string- SHA-256 of the archived PDF — what makes the record verifiable.
hasXmlbooleanarchivedAtstring
/archive/{id}/pdfThe archived PDF/A-3
The archived PDF/A-3
Antwort 200: die Datei selbst (application/pdf).
/archive/{id}/xmlThe archived XML
The archived XML
Antwort 200: die Datei selbst (application/xml).
/cancellations/{id}Get one cancellation invoice
Get one cancellation invoice
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/credit-notes/{id}Get one credit note
Get one credit note
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/documentsList all documents of a company
Returns invoices, offers, cancellation invoices, credit notes and Mahnungen in one list, newest first. Filter with `type` and `status`, page with `page` and `itemsPerPage`.
Parameter in der Adresse
pageinteger- The collection page number
itemsPerPageinteger- The number of items per page
typestring- Optional document type filter.Erlaubt:
INVOICE,CANCELLATION,CREDIT_NOTE,OFFER,DUNNING_NOTICE statusstring- Optional status filter.Erlaubt:
DRAFT,PUBLISHED,PAID,CANCELLED
Antwort 200: eine Liste in member, je Eintrag diese Felder.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/documents/{id}/archiveMove a published document into the archive
Move a published document into the archive
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/documents/{id}/pdfThe PDF/A-3 hybrid
Answers application/pdf. Published documents only.
Antwort 200: die Datei selbst (application/pdf).
/documents/{id}/publishPublish a draft — number, snapshots, totals, e-invoice, archive entry
One operation that either fully happens or does not. A failed KOSIT validation consumes no number.
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/documents/{id}/send-mailSend the document to its recipient
Uses this document type's own subject and template. A send failure leaves the document published and sets emailStatus to FAILED.
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/documents/{id}/xmlThe XRechnung/ZUGFeRD XML
Answers application/xml. Published documents only.
Antwort 200: die Datei selbst (application/xml).
/dunning-candidatesThe overdue invoices of a company, most overdue first
Published, unpaid, uncancelled invoices whose `dueOn` has passed, each with the Mahnstufe it has already reached and the one that would come next. Computed per request and stored nowhere; nothing is sent automatically.
Antwort 200: eine Liste in member, je Eintrag diese Felder.
Felder der Antwort (10)
idstring- The overdue invoice. The candidate has no identity of its own — this is the invoice's id.
companyIdstringnumberstring, darf leer sein- Beispiel:
RE-2026-00000001 customerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seindaysOverdueinteger- Whole days since `dueOn` passed. One on the first day the invoice is late.Beispiel:
17 totalstring- Exact decimal string, never a JSON number.Beispiel:
1469.13 highestLevelIssuedinteger- The highest Mahnstufe already written for this invoice, drafts included. Zero where there is none.Beispiel:
0 nextLevelinteger- The Mahnstufe the derive endpoint would accept right now.Beispiel:
1
/dunning-notices/{id}Get one Mahnung
Get one Mahnung
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/invoicesCreate an invoice draft
Creates a draft. It gets no number and is not a legal document until it is published.
Inhalt der Anfrage application/ld+json
customerIdstringPflicht- UUID of an existing customer of this company.
titlestring, darf leer seinissuedOnstring (date-time), darf leer seindueOnstring (date-time), darf leer sein- Invoices only. Defaults to the agreed payment term.
expiresOnstring (date-time), darf leer sein- Offers only. Defaults to 14 days.
servicePeriodFromstring (date-time), darf leer seinservicePeriodTostring (date-time), darf leer seinintroTextstring, darf leer sein- Overrides the default text template for this document type.
closingTextstring, darf leer seinlineItemsListeFelder je Eintrag (7)
titlestringPflichtdescriptionstring, darf leer seinquantitystring- Decimal string, up to four places.Beispiel:
7.35 unitPricestring- Decimal string in Euro, two places.Beispiel:
125.00 unitstring, darf leer sein- Erlaubt:
YEAR,MONTH,WEEK,DAY,HOUR,MINUTE,CENTIMETER,METER,KILOMETER,SQUARE_CENTIMETER,SQUARE_METER,HECTARE,CUBIC_CENTIMETER,LITER,CUBIC_METER,TON,KILOGRAM,GRAM,KILOWATT_HOUR,PIECE,NUMBER_OF_ARTICLES,PAIRS,SET,PACKAGE,FLAT_RATE,PERCENTAGE taxRateinteger, darf leer seinproductNumberstring, darf leer sein
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/invoices/{id}Get one invoice
Get one invoice
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/invoices/{id}Change an invoice draft
Draft only. Sending `lineItems` replaces every position.
Inhalt der Anfrage application/merge-patch+json
customerIdstring, darf leer sein- UUID of a customer of this company.
titlestring, darf leer seinissuedOnstring (date-time), darf leer seindueOnstring (date-time), darf leer sein- Invoices only.
expiresOnstring (date-time), darf leer sein- Offers only.
servicePeriodFromstring (date-time), darf leer seinservicePeriodTostring (date-time), darf leer seinintroTextstring, darf leer seinclosingTextstring, darf leer seinlineItemsListeFelder je Eintrag (7)
titlestringPflichtdescriptionstring, darf leer seinquantitystring- Decimal string, up to four places.Beispiel:
7.35 unitPricestring- Decimal string in Euro, two places.Beispiel:
125.00 unitstring, darf leer sein- Erlaubt:
YEAR,MONTH,WEEK,DAY,HOUR,MINUTE,CENTIMETER,METER,KILOMETER,SQUARE_CENTIMETER,SQUARE_METER,HECTARE,CUBIC_CENTIMETER,LITER,CUBIC_METER,TON,KILOGRAM,GRAM,KILOWATT_HOUR,PIECE,NUMBER_OF_ARTICLES,PAIRS,SET,PACKAGE,FLAT_RATE,PERCENTAGE taxRateinteger, darf leer seinproductNumberstring, darf leer sein
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/invoices/{id}Delete an invoice draft
Draft only. A published invoice is refused with 409 — correct it with a cancellation.
Antwort 204: kein Inhalt.
/invoices/{id}/cancellationDerive a cancellation invoice from a published invoice
Takes no body: the cancellation carries the original positions. It reverses the invoice when it is published, not when it is created.
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/invoices/{id}/credit-noteDerive a credit note from a cancelled, paid invoice
Refused unless the invoice was cancelled and the money had actually been received — there is no refund to make otherwise.
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/invoices/{id}/dunning-noticesDerive a Mahnung from an overdue invoice
Refused with 409 unless the invoice is published, unpaid, uncancelled and past its `dueOn`, and unless `level` is the next Mahnstufe for it. Three positions at 0 %: the invoice's gross, the Mahngebühr and the Verzugszinsen, the last two omitted when zero. The invoice is never touched.
Inhalt der Anfrage application/ld+json
levelinteger- The Mahnstufe — 1 is the Zahlungserinnerung. Must be the next one for this invoice.Beispiel:
1 feestring- Mahngebühr as a decimal string in Euro, two places. Zero leaves the position off.Beispiel:
5.00 intereststring- Verzugszinsen as a decimal string in Euro, two places. Zero leaves the position off.Beispiel:
2.35
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/invoices/{id}/duplicateDuplicate an invoice — the copy is a draft
Takes no body. The copy carries recipient, title, service period, texts and positions, and none of the publication: no number, no snapshots, no dates from the original. A draft duplicates too.
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/invoices/{id}/mark-paidMark a published invoice as paid
Mark a published invoice as paid
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/invoices/{id}/mark-unpaidUndo a payment mark
Undo a payment mark
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/offersCreate an offer draft
Create an offer draft
Inhalt der Anfrage application/ld+json
customerIdstringPflicht- UUID of an existing customer of this company.
titlestring, darf leer seinissuedOnstring (date-time), darf leer seindueOnstring (date-time), darf leer sein- Invoices only. Defaults to the agreed payment term.
expiresOnstring (date-time), darf leer sein- Offers only. Defaults to 14 days.
servicePeriodFromstring (date-time), darf leer seinservicePeriodTostring (date-time), darf leer seinintroTextstring, darf leer sein- Overrides the default text template for this document type.
closingTextstring, darf leer seinlineItemsListeFelder je Eintrag (7)
titlestringPflichtdescriptionstring, darf leer seinquantitystring- Decimal string, up to four places.Beispiel:
7.35 unitPricestring- Decimal string in Euro, two places.Beispiel:
125.00 unitstring, darf leer sein- Erlaubt:
YEAR,MONTH,WEEK,DAY,HOUR,MINUTE,CENTIMETER,METER,KILOMETER,SQUARE_CENTIMETER,SQUARE_METER,HECTARE,CUBIC_CENTIMETER,LITER,CUBIC_METER,TON,KILOGRAM,GRAM,KILOWATT_HOUR,PIECE,NUMBER_OF_ARTICLES,PAIRS,SET,PACKAGE,FLAT_RATE,PERCENTAGE taxRateinteger, darf leer seinproductNumberstring, darf leer sein
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/offers/{id}Get one offer
Get one offer
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/offers/{id}Change an offer draft
Change an offer draft
Inhalt der Anfrage application/merge-patch+json
customerIdstring, darf leer sein- UUID of a customer of this company.
titlestring, darf leer seinissuedOnstring (date-time), darf leer seindueOnstring (date-time), darf leer sein- Invoices only.
expiresOnstring (date-time), darf leer sein- Offers only.
servicePeriodFromstring (date-time), darf leer seinservicePeriodTostring (date-time), darf leer seinintroTextstring, darf leer seinclosingTextstring, darf leer seinlineItemsListeFelder je Eintrag (7)
titlestringPflichtdescriptionstring, darf leer seinquantitystring- Decimal string, up to four places.Beispiel:
7.35 unitPricestring- Decimal string in Euro, two places.Beispiel:
125.00 unitstring, darf leer sein- Erlaubt:
YEAR,MONTH,WEEK,DAY,HOUR,MINUTE,CENTIMETER,METER,KILOMETER,SQUARE_CENTIMETER,SQUARE_METER,HECTARE,CUBIC_CENTIMETER,LITER,CUBIC_METER,TON,KILOGRAM,GRAM,KILOWATT_HOUR,PIECE,NUMBER_OF_ARTICLES,PAIRS,SET,PACKAGE,FLAT_RATE,PERCENTAGE taxRateinteger, darf leer seinproductNumberstring, darf leer sein
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/offers/{id}Delete an offer draft
Delete an offer draft
Antwort 204: kein Inhalt.
/offers/{id}/duplicateDuplicate an offer — the copy is a draft
As for an invoice, with the validity recomputed from today. Duplicating is not converting: the copy is an offer again and records no relation to its origin.
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
/offers/{id}/invoiceCreate an invoice draft from a published offer
Copies the positions. The offer is unchanged and is not consumed.
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (33)
idstring- Document UUID.
numberstring, darf leer sein- Null while the document is a draft.Beispiel:
RE-2026-00000001 typestring- Beispiel:
INVOICE statusstring- Beispiel:
PUBLISHED displayStatusstring- The stored status folded together with the two questions whose answer depends on the day they are asked: an invoice past its `dueOn` reads `overdue`, an unconverted offer past its `expiresOn` reads `expired`. Computed per request, never stored — `status` stays the truth.Erlaubt:
draft,open,paid,overdue,cancelled,converted,expiredBeispiel:overdue isCancellableboolean- Whether a Storno may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/cancellation`, so the interface never re-derives it.
isCreditNoteCreatableboolean- Whether a Gutschrift may be derived from this document right now — the domain rule behind `POST …/invoices/{id}/credit-note`, including the cap that refuses a second one.
isDuplicableboolean- Whether this document may be duplicated — the domain rule behind `POST …/duplicate`: true on an invoice and on an offer, draft or published, false on the three kinds that cannot exist without the invoice they refer to.
hasElectronicInvoiceboolean- Whether this kind carries an XRechnung payload at all. False on an offer and on a Mahnung, and then `…/documents/{id}/xml` has nothing to answer with.
titlestring, darf leer seincompanyIdstringcustomerIdstring, darf leer seincustomerNamestring, darf leer seinissuedOnstring, darf leer seindueOnstring, darf leer seinexpiresOnstring, darf leer seinservicePeriodFromstring, darf leer seinservicePeriodTostring, darf leer seinpublishedAtstring, darf leer seinpaidAtstring, darf leer seinarchivedAtstring, darf leer seinemailStatusstringnetstring- Exact decimal string, never a JSON number.Beispiel:
1234.56 taxstringtotalstring- Always positive.Beispiel:
1469.13 signedTotalstring- Negative for a cancellation invoice and a credit note.Beispiel:
-1469.13 introTextstring, darf leer seinclosingTextstring, darf leer seinoriginalInvoiceIdstring, darf leer seinoriginalInvoiceNumberstring, darf leer seindunningLevelinteger, darf leer sein- The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel:
1 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
7.3500 unitstring, darf leer seinunitPricestring- Beispiel:
125.00 taxRateinteger- Percent.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
918.75 productNumberstring, darf leer sein- The Artikelstamm entry this position was filled from, if any. A plain string, not a reference — editing or deleting that product changes nothing here.Beispiel:
10000
taxGroupsListeFelder je Eintrag (3)
rateinteger- Percent.Beispiel:
19 netstring- The taxable base for this rate.Beispiel:
1000.00 taxstring- Rounded once, from the base above.Beispiel:
190.00
Kunden
/customersSearch customers
Matches company, first name, last name, customer number and email. Use the returned `id` as `customerId` when creating a document. Page with `page` and `itemsPerPage`.
Parameter in der Adresse
pageinteger- The collection page number
itemsPerPageinteger- The number of items per page
qstring- Optional search term.Beispiel:
Weidner
Antwort 200: eine Liste in member, je Eintrag diese Felder.
Felder der Antwort (19)
idstring- Customer UUID. Use this value as `customerId` when creating a document.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company this customer belongs to — the `{companyId}` of every route that reaches them.
displayNamestring- Human-readable display name.Beispiel:
Weidner Bau GmbH numberstring, darf leer sein- Customer number.Beispiel:
10007 companystring, darf leer sein- Company name, if available.Beispiel:
Weidner Bau GmbH firstNamestring, darf leer sein- First name, if available.Beispiel:
Peter lastNamestring, darf leer sein- Last name, if available.Beispiel:
Fuchs emailstring, darf leer sein- Email address, if available.Beispiel:
buchhaltung@weidner-bau.de citystring, darf leer sein- City.Beispiel:
Dresden countrystring, darf leer sein- Country code.Beispiel:
DE salutationstring, darf leer sein- Salutation.Beispiel:
mr streetstring, darf leer sein- Street and number.Beispiel:
Bautzner Straße 41 zipCodestring, darf leer sein- Postal code.Beispiel:
01099 phonestring, darf leer sein- Phone number.Beispiel:
+49 351 4820 mobilestring, darf leer sein- Mobile number.
taxIdstring, darf leer sein- VAT identifier of the customer.Beispiel:
DE123456789 isPublicAuthorityboolean- A public authority needs a Leitweg-ID on every e-invoice.
buyerReferenceIdstring, darf leer sein- Leitweg-ID / buyer reference.Beispiel:
991-33333TEST-33 paymentTermDaysinteger, darf leer sein- Payment term in days; null falls back to the Company default.Beispiel:
14
/customersCreate a customer
When `number` is omitted, the next number from this company's own range is assigned.
Inhalt der Anfrage application/ld+json
companystring, darf leer sein- Beispiel:
DB salutationstring, darf leer seinPflicht- Required salutation. Allowed values are `Herr`, `Frau` and `Divers`.Erlaubt:
Herr,Frau,DiversBeispiel:Herr firstNamestring, darf leer seinPflicht- Beispiel:
Peter lastNamestring, darf leer seinPflicht- Beispiel:
Fuchs numberstring, darf leer sein- Optional customer number. When omitted, Billmatic generates the next available customer number for the company.Beispiel:
10007 streetstring, darf leer seinPflicht- Beispiel:
Main Street 1 zipCodestring, darf leer seinPflicht- Beispiel:
01067 citystring, darf leer seinPflicht- Beispiel:
Dresden countrystring, darf leer seinPflicht- Required ISO 3166-1 alpha-2 country code.Beispiel:
DE emailstring (email), darf leer seinPflicht- Beispiel:
customer@example.test phonestring, darf leer sein- Beispiel:
+49 351 123456 mobilestring, darf leer sein- Beispiel:
+49 170 1234567 taxIdstring, darf leer sein- Optional tax ID. Required by Billmatic validation when the country is not Germany.Beispiel:
DE123456789 isPublicAuthorityboolean- Whether the customer is a public authority. If true, `buyerReferenceId` is required.Beispiel:
false buyerReferenceIdstring, darf leer sein- Optional buyer reference / Leitweg-ID. Required for public authorities.Beispiel:
991-12345-67
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (19)
idstring- Customer UUID. Use this value as `customerId` when creating a document.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company this customer belongs to — the `{companyId}` of every route that reaches them.
displayNamestring- Human-readable display name.Beispiel:
Weidner Bau GmbH numberstring, darf leer sein- Customer number.Beispiel:
10007 companystring, darf leer sein- Company name, if available.Beispiel:
Weidner Bau GmbH firstNamestring, darf leer sein- First name, if available.Beispiel:
Peter lastNamestring, darf leer sein- Last name, if available.Beispiel:
Fuchs emailstring, darf leer sein- Email address, if available.Beispiel:
buchhaltung@weidner-bau.de citystring, darf leer sein- City.Beispiel:
Dresden countrystring, darf leer sein- Country code.Beispiel:
DE salutationstring, darf leer sein- Salutation.Beispiel:
mr streetstring, darf leer sein- Street and number.Beispiel:
Bautzner Straße 41 zipCodestring, darf leer sein- Postal code.Beispiel:
01099 phonestring, darf leer sein- Phone number.Beispiel:
+49 351 4820 mobilestring, darf leer sein- Mobile number.
taxIdstring, darf leer sein- VAT identifier of the customer.Beispiel:
DE123456789 isPublicAuthorityboolean- A public authority needs a Leitweg-ID on every e-invoice.
buyerReferenceIdstring, darf leer sein- Leitweg-ID / buyer reference.Beispiel:
991-33333TEST-33 paymentTermDaysinteger, darf leer sein- Payment term in days; null falls back to the Company default.Beispiel:
14
/customers/{id}One customer
One customer
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (19)
idstring- Customer UUID. Use this value as `customerId` when creating a document.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company this customer belongs to — the `{companyId}` of every route that reaches them.
displayNamestring- Human-readable display name.Beispiel:
Weidner Bau GmbH numberstring, darf leer sein- Customer number.Beispiel:
10007 companystring, darf leer sein- Company name, if available.Beispiel:
Weidner Bau GmbH firstNamestring, darf leer sein- First name, if available.Beispiel:
Peter lastNamestring, darf leer sein- Last name, if available.Beispiel:
Fuchs emailstring, darf leer sein- Email address, if available.Beispiel:
buchhaltung@weidner-bau.de citystring, darf leer sein- City.Beispiel:
Dresden countrystring, darf leer sein- Country code.Beispiel:
DE salutationstring, darf leer sein- Salutation.Beispiel:
mr streetstring, darf leer sein- Street and number.Beispiel:
Bautzner Straße 41 zipCodestring, darf leer sein- Postal code.Beispiel:
01099 phonestring, darf leer sein- Phone number.Beispiel:
+49 351 4820 mobilestring, darf leer sein- Mobile number.
taxIdstring, darf leer sein- VAT identifier of the customer.Beispiel:
DE123456789 isPublicAuthorityboolean- A public authority needs a Leitweg-ID on every e-invoice.
buyerReferenceIdstring, darf leer sein- Leitweg-ID / buyer reference.Beispiel:
991-33333TEST-33 paymentTermDaysinteger, darf leer sein- Payment term in days; null falls back to the Company default.Beispiel:
14
/customers/{id}Change a customer
Change a customer
Inhalt der Anfrage application/merge-patch+json
companystring, darf leer seinsalutationstring, darf leer sein- Allowed values are `Herr`, `Frau` and `Divers`; null clears it.Erlaubt:
Herr,Frau,DiversBeispiel:Divers firstNamestring, darf leer seinlastNamestring, darf leer seinnumberstring, darf leer seinstreetstring, darf leer seinzipCodestring, darf leer seincitystring, darf leer seincountrystring, darf leer seinemailstring, darf leer seinphonestring, darf leer seinmobilestring, darf leer seintaxIdstring, darf leer seinisPublicAuthorityboolean, darf leer seinbuyerReferenceIdstring, darf leer sein- Leitweg-ID. Required for a public authority.
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (19)
idstring- Customer UUID. Use this value as `customerId` when creating a document.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company this customer belongs to — the `{companyId}` of every route that reaches them.
displayNamestring- Human-readable display name.Beispiel:
Weidner Bau GmbH numberstring, darf leer sein- Customer number.Beispiel:
10007 companystring, darf leer sein- Company name, if available.Beispiel:
Weidner Bau GmbH firstNamestring, darf leer sein- First name, if available.Beispiel:
Peter lastNamestring, darf leer sein- Last name, if available.Beispiel:
Fuchs emailstring, darf leer sein- Email address, if available.Beispiel:
buchhaltung@weidner-bau.de citystring, darf leer sein- City.Beispiel:
Dresden countrystring, darf leer sein- Country code.Beispiel:
DE salutationstring, darf leer sein- Salutation.Beispiel:
mr streetstring, darf leer sein- Street and number.Beispiel:
Bautzner Straße 41 zipCodestring, darf leer sein- Postal code.Beispiel:
01099 phonestring, darf leer sein- Phone number.Beispiel:
+49 351 4820 mobilestring, darf leer sein- Mobile number.
taxIdstring, darf leer sein- VAT identifier of the customer.Beispiel:
DE123456789 isPublicAuthorityboolean- A public authority needs a Leitweg-ID on every e-invoice.
buyerReferenceIdstring, darf leer sein- Leitweg-ID / buyer reference.Beispiel:
991-33333TEST-33 paymentTermDaysinteger, darf leer sein- Payment term in days; null falls back to the Company default.Beispiel:
14
/customers/{id}Delete a customer
Refused with 409 when the customer appears on any document.
Antwort 204: kein Inhalt.
Produkte
/productsSearch products
Matches name, description and Artikelnummer. Use the returned `productNumber` as a line item's `productNumber`. Page with `page` and `itemsPerPage`.
Parameter in der Adresse
pageinteger- The collection page number
itemsPerPageinteger- The number of items per page
qstring- Optional search term.Beispiel:
Wartung
Antwort 200: eine Liste in member, je Eintrag diese Felder.
Felder der Antwort (8)
idstring- Product UUID.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company whose catalogue this entry belongs to — the `{companyId}` of every route that reaches it.
productNumberstring- Artikelnummer, unique within the company. What a filled position carries as `productNumber`.Beispiel:
10000 namestring- What the filled position is called.Beispiel:
Wartung, Support (Juli) descriptionstring, darf leer sein- The longer text, copied onto the position.Beispiel:
Monatliche Wartung inklusive Fernzugriff. unitPricestring- Decimal string in Euro, two places.Beispiel:
125.00 unitstring, darf leer sein- Unit code, from the same closed set a position takes.Beispiel:
HOUR taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19
/productsCreate a product
When `productNumber` is omitted, the next number from this company's own range is assigned.
Inhalt der Anfrage application/ld+json
namestring, darf leer seinPflicht- Beispiel:
Wartung, Support (Juli) descriptionstring, darf leer sein- Beispiel:
Monatliche Wartung inklusive Fernzugriff. unitPricestring- Decimal string in Euro, two places.Beispiel:
125.00 unitstring, darf leer seinPflicht- Unit code. The same closed set a document position takes.Erlaubt:
YEAR,MONTH,WEEK,DAY,HOUR,MINUTE,CENTIMETER,METER,KILOMETER,SQUARE_CENTIMETER,SQUARE_METER,HECTARE,CUBIC_CENTIMETER,LITER,CUBIC_METER,TON,KILOGRAM,GRAM,KILOWATT_HOUR,PIECE,NUMBER_OF_ARTICLES,PAIRS,SET,PACKAGE,FLAT_RATE,PERCENTAGEBeispiel:HOUR taxRateinteger, darf leer seinPflicht- Percent — 0, 7 or 19.Beispiel:
19 productNumberstring, darf leer sein- Optional Artikelnummer. When omitted, billmatic assigns the next free number of this company.Beispiel:
10000
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (8)
idstring- Product UUID.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company whose catalogue this entry belongs to — the `{companyId}` of every route that reaches it.
productNumberstring- Artikelnummer, unique within the company. What a filled position carries as `productNumber`.Beispiel:
10000 namestring- What the filled position is called.Beispiel:
Wartung, Support (Juli) descriptionstring, darf leer sein- The longer text, copied onto the position.Beispiel:
Monatliche Wartung inklusive Fernzugriff. unitPricestring- Decimal string in Euro, two places.Beispiel:
125.00 unitstring, darf leer sein- Unit code, from the same closed set a position takes.Beispiel:
HOUR taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19
/products/{id}One product
One product
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (8)
idstring- Product UUID.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company whose catalogue this entry belongs to — the `{companyId}` of every route that reaches it.
productNumberstring- Artikelnummer, unique within the company. What a filled position carries as `productNumber`.Beispiel:
10000 namestring- What the filled position is called.Beispiel:
Wartung, Support (Juli) descriptionstring, darf leer sein- The longer text, copied onto the position.Beispiel:
Monatliche Wartung inklusive Fernzugriff. unitPricestring- Decimal string in Euro, two places.Beispiel:
125.00 unitstring, darf leer sein- Unit code, from the same closed set a position takes.Beispiel:
HOUR taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19
/products/{id}Change a product
Changes no document a position was already filled from — the position carries its own copy.
Inhalt der Anfrage application/merge-patch+json
namestring, darf leer seindescriptionstring, darf leer seinunitPricestring, darf leer sein- Decimal string in Euro, two places. An explicit null is 0,00 €.Beispiel:
125.00 unitstring, darf leer sein- Erlaubt:
YEAR,MONTH,WEEK,DAY,HOUR,MINUTE,CENTIMETER,METER,KILOMETER,SQUARE_CENTIMETER,SQUARE_METER,HECTARE,CUBIC_CENTIMETER,LITER,CUBIC_METER,TON,KILOGRAM,GRAM,KILOWATT_HOUR,PIECE,NUMBER_OF_ARTICLES,PAIRS,SET,PACKAGE,FLAT_RATE,PERCENTAGE taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19 productNumberstring, darf leer sein
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (8)
idstring- Product UUID.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company whose catalogue this entry belongs to — the `{companyId}` of every route that reaches it.
productNumberstring- Artikelnummer, unique within the company. What a filled position carries as `productNumber`.Beispiel:
10000 namestring- What the filled position is called.Beispiel:
Wartung, Support (Juli) descriptionstring, darf leer sein- The longer text, copied onto the position.Beispiel:
Monatliche Wartung inklusive Fernzugriff. unitPricestring- Decimal string in Euro, two places.Beispiel:
125.00 unitstring, darf leer sein- Unit code, from the same closed set a position takes.Beispiel:
HOUR taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19
/products/{id}Delete a product
Never refused. No document points at a product, so nothing is left dangling.
Antwort 204: kein Inhalt.
Abo-Rechnungen
/recurring-schedulesList the recurring schedules
Readable whether or not `RECURRING_INVOICES` is booked. When it is not, every entry carries `readOnlyReason`. Page with `page` and `itemsPerPage`.
Parameter in der Adresse
pageinteger- The collection page number
itemsPerPageinteger- The number of items per page
Antwort 200: eine Liste in member, je Eintrag diese Felder.
Felder der Antwort (19)
idstring- Schedule UUID.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company issuing — the `{companyId}` of every route that reaches it.
recipientIdstringrecipientNamestring- The recipient as the list shows them.Beispiel:
Kundin Kunze intervalstring- MONTHLY | QUARTERLY | HALF_YEARLY | YEARLY.Beispiel:
MONTHLY startDatestring- The first period, and the anchor every later one is measured from.Beispiel:
2026-01-31 endDatestring, darf leer sein- Inclusive. A period whose run date falls after it is not generated.Beispiel:
2026-12-31 nextRunOnstring- The period the next run generates.Beispiel:
2026-02-28 isActiveboolean- False pauses the schedule without deleting it. A paused schedule accumulates no back-invoices.
introTextstring, darf leer seinclosingTextstring, darf leer seinlastRunAtstring, darf leer sein- When the runner last considered this schedule.Beispiel:
2026-02-28T03:00:00+00:00 lastSkipReasonstring, darf leer sein- Why the last run produced nothing, or null when it produced an invoice.Beispiel:
FEATURE_NOT_BOOKED readOnlyReasonstring, darf leer sein- Why this schedule is read-only, ready to show — or null when it may be changed.
netstring- The template net, with tax rounded once per rate.Beispiel:
99.00 taxstring- Beispiel:
18.81 totalstring- What each invoice this schedule issues will come to.Beispiel:
117.81 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
1.0000 unitstring, darf leer seinunitPricestring- Beispiel:
99.00 taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
99.00 productNumberstring, darf leer sein- The Artikelstamm entry this template was filled from, if any. A plain string, not a reference.Beispiel:
10000
invoicesListeFelder je Eintrag (7)
idstringnumberstring, darf leer sein- Null while the invoice is still a draft — a refused publication leaves one behind.
periodstring- The period this invoice covers. The schedule's own run date.Beispiel:
2026-01-31 issuedOnstring, darf leer sein- The Rechnungsdatum: the day the run happened, which differs from the period when a run caught up.Beispiel:
2026-01-31 totalstring- Beispiel:
117.81 statusstring- DRAFT | PUBLISHED | PAID | CANCELLED.Beispiel:
PUBLISHED emailStatusstring- UNSENT | SENT | FAILED.Beispiel:
SENT
/recurring-schedulesCreate a recurring schedule
Refused with 403 when `RECURRING_INVOICES` is not booked. The first run is `startDate` itself; no proration and no partial first period.
Inhalt der Anfrage application/ld+json
recipientIdstring, darf leer seinPflicht- UUID of a customer of this company.
intervalstring, darf leer seinPflicht- MONTHLY | QUARTERLY | HALF_YEARLY | YEARLY.Erlaubt:
MONTHLY,QUARTERLY,HALF_YEARLY,YEARLYBeispiel:MONTHLY startDatestring (date-time), darf leer seinPflicht- The first period. Its day of the month anchors every later one.Beispiel:
2026-01-31 endDatestring (date-time), darf leer sein- Inclusive. Omitted, the schedule runs until it is paused or deleted.Beispiel:
2026-12-31 isActiveboolean- False creates the schedule paused.
introTextstring, darf leer seinclosingTextstring, darf leer seinlineItemsListeFelder je Eintrag (7)
titlestringPflichtdescriptionstring, darf leer seinquantitystring- Decimal string, up to four places.Beispiel:
1 unitPricestring- Decimal string in Euro, two places.Beispiel:
99.00 unitstring, darf leer sein- Erlaubt:
YEAR,MONTH,WEEK,DAY,HOUR,MINUTE,CENTIMETER,METER,KILOMETER,SQUARE_CENTIMETER,SQUARE_METER,HECTARE,CUBIC_CENTIMETER,LITER,CUBIC_METER,TON,KILOGRAM,GRAM,KILOWATT_HOUR,PIECE,NUMBER_OF_ARTICLES,PAIRS,SET,PACKAGE,FLAT_RATE,PERCENTAGE taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19 productNumberstring, darf leer sein
Antwort 201: ein Eintrag mit diesen Feldern.
Felder der Antwort (19)
idstring- Schedule UUID.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company issuing — the `{companyId}` of every route that reaches it.
recipientIdstringrecipientNamestring- The recipient as the list shows them.Beispiel:
Kundin Kunze intervalstring- MONTHLY | QUARTERLY | HALF_YEARLY | YEARLY.Beispiel:
MONTHLY startDatestring- The first period, and the anchor every later one is measured from.Beispiel:
2026-01-31 endDatestring, darf leer sein- Inclusive. A period whose run date falls after it is not generated.Beispiel:
2026-12-31 nextRunOnstring- The period the next run generates.Beispiel:
2026-02-28 isActiveboolean- False pauses the schedule without deleting it. A paused schedule accumulates no back-invoices.
introTextstring, darf leer seinclosingTextstring, darf leer seinlastRunAtstring, darf leer sein- When the runner last considered this schedule.Beispiel:
2026-02-28T03:00:00+00:00 lastSkipReasonstring, darf leer sein- Why the last run produced nothing, or null when it produced an invoice.Beispiel:
FEATURE_NOT_BOOKED readOnlyReasonstring, darf leer sein- Why this schedule is read-only, ready to show — or null when it may be changed.
netstring- The template net, with tax rounded once per rate.Beispiel:
99.00 taxstring- Beispiel:
18.81 totalstring- What each invoice this schedule issues will come to.Beispiel:
117.81 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
1.0000 unitstring, darf leer seinunitPricestring- Beispiel:
99.00 taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
99.00 productNumberstring, darf leer sein- The Artikelstamm entry this template was filled from, if any. A plain string, not a reference.Beispiel:
10000
invoicesListeFelder je Eintrag (7)
idstringnumberstring, darf leer sein- Null while the invoice is still a draft — a refused publication leaves one behind.
periodstring- The period this invoice covers. The schedule's own run date.Beispiel:
2026-01-31 issuedOnstring, darf leer sein- The Rechnungsdatum: the day the run happened, which differs from the period when a run caught up.Beispiel:
2026-01-31 totalstring- Beispiel:
117.81 statusstring- DRAFT | PUBLISHED | PAID | CANCELLED.Beispiel:
PUBLISHED emailStatusstring- UNSENT | SENT | FAILED.Beispiel:
SENT
/recurring-schedules/{id}One recurring schedule
Carries the template positions and the invoices generated so far.
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (19)
idstring- Schedule UUID.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company issuing — the `{companyId}` of every route that reaches it.
recipientIdstringrecipientNamestring- The recipient as the list shows them.Beispiel:
Kundin Kunze intervalstring- MONTHLY | QUARTERLY | HALF_YEARLY | YEARLY.Beispiel:
MONTHLY startDatestring- The first period, and the anchor every later one is measured from.Beispiel:
2026-01-31 endDatestring, darf leer sein- Inclusive. A period whose run date falls after it is not generated.Beispiel:
2026-12-31 nextRunOnstring- The period the next run generates.Beispiel:
2026-02-28 isActiveboolean- False pauses the schedule without deleting it. A paused schedule accumulates no back-invoices.
introTextstring, darf leer seinclosingTextstring, darf leer seinlastRunAtstring, darf leer sein- When the runner last considered this schedule.Beispiel:
2026-02-28T03:00:00+00:00 lastSkipReasonstring, darf leer sein- Why the last run produced nothing, or null when it produced an invoice.Beispiel:
FEATURE_NOT_BOOKED readOnlyReasonstring, darf leer sein- Why this schedule is read-only, ready to show — or null when it may be changed.
netstring- The template net, with tax rounded once per rate.Beispiel:
99.00 taxstring- Beispiel:
18.81 totalstring- What each invoice this schedule issues will come to.Beispiel:
117.81 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
1.0000 unitstring, darf leer seinunitPricestring- Beispiel:
99.00 taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
99.00 productNumberstring, darf leer sein- The Artikelstamm entry this template was filled from, if any. A plain string, not a reference.Beispiel:
10000
invoicesListeFelder je Eintrag (7)
idstringnumberstring, darf leer sein- Null while the invoice is still a draft — a refused publication leaves one behind.
periodstring- The period this invoice covers. The schedule's own run date.Beispiel:
2026-01-31 issuedOnstring, darf leer sein- The Rechnungsdatum: the day the run happened, which differs from the period when a run caught up.Beispiel:
2026-01-31 totalstring- Beispiel:
117.81 statusstring- DRAFT | PUBLISHED | PAID | CANCELLED.Beispiel:
PUBLISHED emailStatusstring- UNSENT | SENT | FAILED.Beispiel:
SENT
/recurring-schedules/{id}Change a recurring schedule
Changes no invoice it has already issued — every one of those carries its own copy. Sending `lineItems` replaces the whole template.
Inhalt der Anfrage application/merge-patch+json
recipientIdstring, darf leer sein- UUID of a customer of this company.
intervalstring, darf leer sein- MONTHLY | QUARTERLY | HALF_YEARLY | YEARLY.Erlaubt:
MONTHLY,QUARTERLY,HALF_YEARLY,YEARLYBeispiel:MONTHLY startDatestring (date-time), darf leer sein- Beispiel:
2026-01-31 endDatestring (date-time), darf leer sein- Inclusive. An explicit null lets the schedule run on indefinitely.Beispiel:
2026-12-31 isActiveboolean, darf leer sein- False pauses the schedule; true resumes it.
introTextstring, darf leer seinclosingTextstring, darf leer seinlineItemsListeFelder je Eintrag (7)
titlestringPflichtdescriptionstring, darf leer seinquantitystring- Decimal string, up to four places.Beispiel:
1 unitPricestring- Decimal string in Euro, two places.Beispiel:
99.00 unitstring, darf leer sein- Erlaubt:
YEAR,MONTH,WEEK,DAY,HOUR,MINUTE,CENTIMETER,METER,KILOMETER,SQUARE_CENTIMETER,SQUARE_METER,HECTARE,CUBIC_CENTIMETER,LITER,CUBIC_METER,TON,KILOGRAM,GRAM,KILOWATT_HOUR,PIECE,NUMBER_OF_ARTICLES,PAIRS,SET,PACKAGE,FLAT_RATE,PERCENTAGE taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19 productNumberstring, darf leer sein
Antwort 200: ein Eintrag mit diesen Feldern.
Felder der Antwort (19)
idstring- Schedule UUID.Beispiel:
1f083991-caf1-4e2d-843d-4520d3fd5391 companyIdstring- The company issuing — the `{companyId}` of every route that reaches it.
recipientIdstringrecipientNamestring- The recipient as the list shows them.Beispiel:
Kundin Kunze intervalstring- MONTHLY | QUARTERLY | HALF_YEARLY | YEARLY.Beispiel:
MONTHLY startDatestring- The first period, and the anchor every later one is measured from.Beispiel:
2026-01-31 endDatestring, darf leer sein- Inclusive. A period whose run date falls after it is not generated.Beispiel:
2026-12-31 nextRunOnstring- The period the next run generates.Beispiel:
2026-02-28 isActiveboolean- False pauses the schedule without deleting it. A paused schedule accumulates no back-invoices.
introTextstring, darf leer seinclosingTextstring, darf leer seinlastRunAtstring, darf leer sein- When the runner last considered this schedule.Beispiel:
2026-02-28T03:00:00+00:00 lastSkipReasonstring, darf leer sein- Why the last run produced nothing, or null when it produced an invoice.Beispiel:
FEATURE_NOT_BOOKED readOnlyReasonstring, darf leer sein- Why this schedule is read-only, ready to show — or null when it may be changed.
netstring- The template net, with tax rounded once per rate.Beispiel:
99.00 taxstring- Beispiel:
18.81 totalstring- What each invoice this schedule issues will come to.Beispiel:
117.81 lineItemsListeFelder je Eintrag (10)
idstringpositionintegertitlestringdescriptionstring, darf leer seinquantitystring- Exact decimal string with up to four places.Beispiel:
1.0000 unitstring, darf leer seinunitPricestring- Beispiel:
99.00 taxRateinteger, darf leer sein- Percent — 0, 7 or 19.Beispiel:
19 netstring- Quantity times unit price, rounded to the cent.Beispiel:
99.00 productNumberstring, darf leer sein- The Artikelstamm entry this template was filled from, if any. A plain string, not a reference.Beispiel:
10000
invoicesListeFelder je Eintrag (7)
idstringnumberstring, darf leer sein- Null while the invoice is still a draft — a refused publication leaves one behind.
periodstring- The period this invoice covers. The schedule's own run date.Beispiel:
2026-01-31 issuedOnstring, darf leer sein- The Rechnungsdatum: the day the run happened, which differs from the period when a run caught up.Beispiel:
2026-01-31 totalstring- Beispiel:
117.81 statusstring- DRAFT | PUBLISHED | PAID | CANCELLED.Beispiel:
PUBLISHED emailStatusstring- UNSENT | SENT | FAILED.Beispiel:
SENT
/recurring-schedules/{id}Delete a recurring schedule
The invoices it issued are untouched and keep their numbers — `recurring_schedule_id` is set to NULL on them, never cascaded.