API documentation
The invoice schema (InvoiceRequest)
One JSON schema for both directions: /v1/convert accepts it as
input, /v1/read returns it for incoming invoices (round-trip).
It covers the semantic EN 16931 fields; special cases beyond that go through
CII XML passthrough.
| Field group | Examples |
|---|---|
| Header | number, typeCode (380/381/384), issueDate, dueDate, currency, buyerReference (Leitweg-ID), notes |
| References | orderReference, contractReference, projectId, correctedInvoice (for corrections) |
| Payment | paymentTerms, paymentMeansCode, cashDiscounts, prepaidAmount, taxCurrency |
| Parties | seller/buyer/payee/deliveryAddress with address, vatId, iban/bic, contact, endpointId |
| Line items | items[] with name, quantity, unit (UN/ECE Rec 20), unitPrice, vatPercent, vatCategory (S/AE/K/E/G/Z/O), gtin, allowances/charges |
| Document level | allowances/charges, attachments (embedded supporting documents), totals |
The optional totals block is recalculated server-side —
mismatches produce a 422 with details, never a silent correction.
Full field list with BT mapping: openapi.json.
Minimal example:
{
"number": "RE-2026-0042",
"issueDate": "2026-07-08",
"dueDate": "2026-08-07",
"currency": "EUR",
"seller": { "name": "Muster GmbH", "street": "Musterstraße 1", "zip": "4020",
"city": "Linz", "country": "AT", "vatId": "ATU12345678",
"iban": "AT611904300234573201" },
"buyer": { "name": "Beispiel GmbH", "street": "Beispielweg 2", "zip": "80331",
"city": "München", "country": "DE", "vatId": "DE123456789" },
"items": [ { "name": "Softwareentwicklung", "quantity": 16, "unit": "HUR",
"unitPrice": 120.0, "vatPercent": 20 } ]
}