Schnittstelle

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

Alles auf dieser Seite gibt es auch als eine Datei im OpenAPI-Format, ohne Anmeldung erreichbar.
OpenAPI-Datei, öffentlichhttps://api.billmatic.de/api/v1/openapi.json

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

Jede Anfrage braucht drei Dinge: die Adresse, die Kennung Ihres Unternehmens und einen API-Schlüssel.
Adresse für Ihr Unternehmenhttps://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+json bei POST, application/merge-patch+json bei PATCH. Der Inhalt ist ein gewöhnliches JSON-Objekt mit den Feldern, die unten bei jeder Anfrage stehen.
Kunden lesen
curl https://api.billmatic.de/api/v1/companies/<Unternehmens-Kennung>/customers \
  -H "Authorization: Bearer bm_…" \
  -H "Accept: application/ld+json"
Einen Kunden anlegen
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

Was zurückkommt, und worauf ein Programm achten sollte.
  • 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 in totalItems. Listen kommen seitenweise: ?page=2&itemsPerPage=50; solange es eine nächste Seite gibt, nennt view.next ihre 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-mail verschickt 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

Jede Ablehnung trägt ihren Grund auf Deutsch in detail (bei 401 in message).
CodeBedeutetWas tun
401Der Schlüssel fehlt, ist falsch oder wurde widerrufen.Kopfzeile prüfen; ein widerrufener Schlüssel wird durch einen neuen ersetzt.
403Der 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.
404Den Eintrag gibt es nicht — oder die Unternehmens-Kennung ist eine andere als die des Schlüssels.Kennung in der Adresse prüfen.
409Die Anfrage ist richtig, der Zustand lässt sie nicht zu — etwa ein Beleg, der schon veröffentlicht ist.Nicht wiederholen; erst den Zustand ändern.
422Felder fehlen oder sind ungültig.violations nennt je Feld (propertyPath) den Grund (message).

Belege

Rechnungen, Angebote, Mahnungen, Stornos und Gutschriften samt Archiv. Schreiben heißt auch veröffentlichen und per E-Mail versenden. Lesen öffnet jedes GET, Schreiben jedes POST, PATCH und DELETE.
GET/archive

The 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)
idstring
companyIdstring
The company this entry belongs to.
typestring
Beispiel: invoice
numberstring, darf leer sein
issuedOnstring, darf leer sein
totalNetstring, darf leer sein
totalVatstring, darf leer sein
totalGrossstring, darf leer sein
sha256string
SHA-256 of the archived PDF — what makes the record verifiable.
hasXmlboolean
archivedAtstring
GET/archive/{id}/pdf

The archived PDF/A-3

The archived PDF/A-3

Antwort 200: die Datei selbst (application/pdf).

GET/archive/{id}/xml

The archived XML

The archived XML

Antwort 200: die Datei selbst (application/xml).

GET/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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
GET/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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
GET/documents

List 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
POST/documents/{id}/archive

Move 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
GET/documents/{id}/pdf

The PDF/A-3 hybrid

Answers application/pdf. Published documents only.

Antwort 200: die Datei selbst (application/pdf).

POST/documents/{id}/publish

Publish 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
POST/documents/{id}/send-mail

Send 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
GET/documents/{id}/xml

The XRechnung/ZUGFeRD XML

Answers application/xml. Published documents only.

Antwort 200: die Datei selbst (application/xml).

GET/dunning-candidates

The 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.
companyIdstring
numberstring, darf leer sein
Beispiel: RE-2026-00000001
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
daysOverdueinteger
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
GET/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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
POST/invoices

Create 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 sein
issuedOnstring (date-time), darf leer sein
dueOnstring (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 sein
servicePeriodTostring (date-time), darf leer sein
introTextstring, darf leer sein
Overrides the default text template for this document type.
closingTextstring, darf leer sein
lineItemsListe
Felder je Eintrag (7)
titlestringPflicht
descriptionstring, darf leer sein
quantitystring
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 sein
productNumberstring, 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
GET/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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
PATCH/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 sein
issuedOnstring (date-time), darf leer sein
dueOnstring (date-time), darf leer sein
Invoices only.
expiresOnstring (date-time), darf leer sein
Offers only.
servicePeriodFromstring (date-time), darf leer sein
servicePeriodTostring (date-time), darf leer sein
introTextstring, darf leer sein
closingTextstring, darf leer sein
lineItemsListe
Felder je Eintrag (7)
titlestringPflicht
descriptionstring, darf leer sein
quantitystring
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 sein
productNumberstring, 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
DELETE/invoices/{id}

Delete an invoice draft

Draft only. A published invoice is refused with 409 — correct it with a cancellation.

Antwort 204: kein Inhalt.

POST/invoices/{id}/cancellation

Derive 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
POST/invoices/{id}/credit-note

Derive 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
POST/invoices/{id}/dunning-notices

Derive 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
POST/invoices/{id}/duplicate

Duplicate 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
POST/invoices/{id}/mark-paid

Mark 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
POST/invoices/{id}/mark-unpaid

Undo 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
POST/offers

Create 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 sein
issuedOnstring (date-time), darf leer sein
dueOnstring (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 sein
servicePeriodTostring (date-time), darf leer sein
introTextstring, darf leer sein
Overrides the default text template for this document type.
closingTextstring, darf leer sein
lineItemsListe
Felder je Eintrag (7)
titlestringPflicht
descriptionstring, darf leer sein
quantitystring
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 sein
productNumberstring, 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
GET/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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
PATCH/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 sein
issuedOnstring (date-time), darf leer sein
dueOnstring (date-time), darf leer sein
Invoices only.
expiresOnstring (date-time), darf leer sein
Offers only.
servicePeriodFromstring (date-time), darf leer sein
servicePeriodTostring (date-time), darf leer sein
introTextstring, darf leer sein
closingTextstring, darf leer sein
lineItemsListe
Felder je Eintrag (7)
titlestringPflicht
descriptionstring, darf leer sein
quantitystring
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 sein
productNumberstring, 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
DELETE/offers/{id}

Delete an offer draft

Delete an offer draft

Antwort 204: kein Inhalt.

POST/offers/{id}/duplicate

Duplicate 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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
POST/offers/{id}/invoice

Create 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 sein
companyIdstring
customerIdstring, darf leer sein
customerNamestring, darf leer sein
issuedOnstring, darf leer sein
dueOnstring, darf leer sein
expiresOnstring, darf leer sein
servicePeriodFromstring, darf leer sein
servicePeriodTostring, darf leer sein
publishedAtstring, darf leer sein
paidAtstring, darf leer sein
archivedAtstring, darf leer sein
emailStatusstring
netstring
Exact decimal string, never a JSON number.Beispiel: 1234.56
taxstring
totalstring
Always positive.Beispiel: 1469.13
signedTotalstring
Negative for a cancellation invoice and a credit note.Beispiel: -1469.13
introTextstring, darf leer sein
closingTextstring, darf leer sein
originalInvoiceIdstring, darf leer sein
originalInvoiceNumberstring, darf leer sein
dunningLevelinteger, darf leer sein
The Mahnstufe, on a Mahnung and nowhere else. 1 is the Zahlungserinnerung.Beispiel: 1
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 7.3500
unitstring, darf leer sein
unitPricestring
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
taxGroupsListe
Felder 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

Die Kundenliste. Lesen öffnet jedes GET, Schreiben jedes POST, PATCH und DELETE.
GET/customers

Search 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
POST/customers

Create 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
GET/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
PATCH/customers/{id}

Change a customer

Change a customer

Inhalt der Anfrage application/merge-patch+json

companystring, darf leer sein
salutationstring, darf leer sein
Allowed values are `Herr`, `Frau` and `Divers`; null clears it.Erlaubt: Herr, Frau, DiversBeispiel: Divers
firstNamestring, darf leer sein
lastNamestring, darf leer sein
numberstring, darf leer sein
streetstring, darf leer sein
zipCodestring, darf leer sein
citystring, darf leer sein
countrystring, darf leer sein
emailstring, darf leer sein
phonestring, darf leer sein
mobilestring, darf leer sein
taxIdstring, darf leer sein
isPublicAuthorityboolean, darf leer sein
buyerReferenceIdstring, 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
DELETE/customers/{id}

Delete a customer

Refused with 409 when the customer appears on any document.

Antwort 204: kein Inhalt.

Produkte

Der Artikelstamm. Lesen öffnet jedes GET, Schreiben jedes POST, PATCH und DELETE.
GET/products

Search 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
POST/products

Create 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
GET/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
PATCH/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 sein
descriptionstring, darf leer sein
unitPricestring, 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
DELETE/products/{id}

Delete a product

Never refused. No document points at a product, so nothing is left dangling.

Antwort 204: kein Inhalt.

Abo-Rechnungen

Die Zeitpläne der Abo-Rechnungen. Lesen öffnet jedes GET, Schreiben jedes POST, PATCH und DELETE.
GET/recurring-schedules

List 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.
recipientIdstring
recipientNamestring
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 sein
closingTextstring, darf leer sein
lastRunAtstring, 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
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 1.0000
unitstring, darf leer sein
unitPricestring
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
invoicesListe
Felder je Eintrag (7)
idstring
numberstring, 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
POST/recurring-schedules

Create 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 sein
closingTextstring, darf leer sein
lineItemsListe
Felder je Eintrag (7)
titlestringPflicht
descriptionstring, darf leer sein
quantitystring
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.
recipientIdstring
recipientNamestring
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 sein
closingTextstring, darf leer sein
lastRunAtstring, 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
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 1.0000
unitstring, darf leer sein
unitPricestring
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
invoicesListe
Felder je Eintrag (7)
idstring
numberstring, 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
GET/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.
recipientIdstring
recipientNamestring
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 sein
closingTextstring, darf leer sein
lastRunAtstring, 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
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 1.0000
unitstring, darf leer sein
unitPricestring
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
invoicesListe
Felder je Eintrag (7)
idstring
numberstring, 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
PATCH/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 sein
closingTextstring, darf leer sein
lineItemsListe
Felder je Eintrag (7)
titlestringPflicht
descriptionstring, darf leer sein
quantitystring
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.
recipientIdstring
recipientNamestring
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 sein
closingTextstring, darf leer sein
lastRunAtstring, 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
lineItemsListe
Felder je Eintrag (10)
idstring
positioninteger
titlestring
descriptionstring, darf leer sein
quantitystring
Exact decimal string with up to four places.Beispiel: 1.0000
unitstring, darf leer sein
unitPricestring
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
invoicesListe
Felder je Eintrag (7)
idstring
numberstring, 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
DELETE/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.

Antwort 204: kein Inhalt.