E-Invoice API

API reference

Authenticate every call with an Authorization: Bearer header carrying your API key. All responses are JSON unless stated otherwise.

POST /v1/validate

Body: the invoice XML, sent raw (Content-Type application/xml, up to 2 MB). Query parameters:

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": []}

GET /v1/jobs/{token}

Status of a deep validation job: pending, running, done, or failed. A finished job carries the same result shape as the synchronous response.

POST /v1/generate/xrechnung

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}]}

POST /v1/facturx/extract

Body: a Factur-X or ZUGFeRD PDF. Returns the embedded invoice XML.

POST /v1/facturx/embed

Business plan. Multipart form with fields pdf and xml; returns the PDF with the invoice attached as factur-x.xml.

GET /v1/rules/{id}

Rule metadata as JSON: identifier, severity, official text, syntax, source.

Limits