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 groupExamples
Headernumber, typeCode (380/381/384), issueDate, dueDate, currency, buyerReference (Leitweg-ID), notes
ReferencesorderReference, contractReference, projectId, correctedInvoice (for corrections)
PaymentpaymentTerms, paymentMeansCode, cashDiscounts, prepaidAmount, taxCurrency
Partiesseller/buyer/payee/deliveryAddress with address, vatId, iban/bic, contact, endpointId
Line itemsitems[] with name, quantity, unit (UN/ECE Rec 20), unitPrice, vatPercent, vatCategory (S/AE/K/E/G/Z/O), gtin, allowances/charges
Document levelallowances/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 } ]
}