Authenticate every call with an Authorization: Bearer header carrying your API key. All responses are JSON unless stated otherwise.
Body: the invoice XML, sent raw (Content-Type application/xml, up to 2 MB). Query parameters:
profile: one of en16931-ubl en16931-cii xrechnung-3 xrechnung-3-cii facturx deep=true: queue the full official schematron run and return 202 with a job URL instead of a synchronous answer.Synchronous response:
{"valid": false,
"profile": "xrechnung-3",
"engine": "libxml2-xsd+core-rules",
"errors": [{"id": "BR-CO-15", "severity": "error",
"message": "Total with VAT ...",
"location": null,
"documentation": "/rules/BR-CO-15"}],
"warnings": []}Status of a deep validation job: pending, running, done, or failed. A finished job carries the same result shape as the synchronous response.
Pro plan and above. JSON in, compliant XRechnung UBL out (Content-Type application/xml). Totals and the VAT breakdown are computed server side and self-validated before the response leaves.
{"invoice_number": "2026-042",
"issue_date": "2026-07-09",
"currency": "EUR",
"seller": {"name": "Anbieter GmbH", "vat_id": "DE123456789",
"address": {"street": "Beispielweg 1", "city": "Berlin",
"postal_code": "10115", "country": "DE"}},
"buyer": {"name": "Kunde AG",
"address": {"city": "Hamburg", "country": "DE"}},
"lines": [{"description": "Consulting", "quantity": 10,
"unit_price": 120.00, "vat_rate": 19}]}Body: a Factur-X or ZUGFeRD PDF. Returns the embedded invoice XML.
Business plan. Multipart form with fields pdf and xml; returns the PDF with the invoice attached as factur-x.xml.
Rule metadata as JSON: identifier, severity, official text, syntax, source.