German public buyers do not read invoices; their reception platforms do, checking conformity with the XRechnung specification and bouncing whatever misses a BR-DE rule or a Leitweg-ID. InvoiceXML validates with the same official artifacts, specification 3.0.2 and KoSIT Schematron 2.5.0, in both UBL and CII. The first time your invoice meets the portal is not the first time it has been checked. And when 4.0 arrives, the move is a config flag, not a migration.
curl -X POST https://api.invoicexml.com/v1/create/xrechnung \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "invoice": { ... }, "options": { "version": "3.0" } }'
{
"valid": true,
"data": {
"profile": "xrechnung",
"customizationId": "urn:cen.eu:en16931:2017#compliant#
urn:xeinkauf.de:kosit:xrechnung_3.0"
}
}
XRechnung is a CIUS, not a syntax: it legally exists in both UBL and CII, and in the wild it also arrives wrapped in hybrid PDFs or stamped with retired identifiers. Every route lands in the right rule set without you declaring anything.
| Route | How it's created | How it's recognized | What we run |
|---|---|---|---|
| XRechnung in CII | POST /v1/create/xrechnung | BT-24 names the KoSIT guideline | EN 16931 + KoSIT Schematron 2.5.0, CII binding |
| XRechnung in UBL | /v1/create/ubl · profile: xrechnung | CustomizationID read from the document | EN 16931 + KoSIT Schematron 2.5.0, UBL binding |
| ZUGFeRD XRechnung reference profile | Arrives from suppliers as a hybrid PDF | The xrechnung.xml attachment is extracted automatically |
The same KoSIT rules, end to end |
| Retired XRechnung 2.x | Legacy systems still emit it | 2.x identifiers, invalid since February 2024 | Reported clearly as retired, never silently passed |
data.profile and data.customizationId, so which rulebook ran is part of the record. Identifiers we hold no dedicated rules for fall back to the EN 16931 core with a PROFILE-DETECTION warning, not an invented failure. The UBL syntax side has its own deep dive on the UBL hub.
Six endpoints with free in-browser companions, sharing one engine and one rulebook per route.
Invoice JSON in, a validated XRechnung 3.0 document out, totals and VAT computed.
Open toolBR-DE findings in plain language, before the platform sees the file.
Open toolTurn a plain UBL invoice into a portal-ready XRechnung.
Open toolBridge B2G to B2B: the same invoice as a hybrid PDF.
Open toolA readable preview of any XRechnung file, for sign-off and archives.
Open toolBT-mapped JSON from received XRechnung documents, straight into your ERP.
Open toolKoSIT has announced XRechnung 4.0, the German CIUS of the revised EN 16931, for late 2026; an effective date has not been set. Our handling is already written down: a new version becomes opt-in via options.version during the authority's transition window, the default flips on the effective date, and the outgoing version stays pinnable until its sunset. Upgrading early is one field; doing nothing is also a valid plan. 2.x went out through the same machinery: its identifiers stopped being valid in February 2024, and our validator says so instead of guessing.
Announced for late 2026, effective date pending. When the window opens: opt in early with options.version, or do nothing and ride the default flip.
The BR-DE family is where XRechnung gets German: seller contact details, payment instructions, the Leitweg-ID. Each finding names the rule, the layer, the business terms involved, and the JSON path to light up in your UI.
No decoding sessions with the Schematron source: the message already says what to add and where.
{
"valid": false,
"data": {
"profile": "xrechnung",
"customizationId": "urn:cen.eu:en16931:2017#compliant#
urn:xeinkauf.de:kosit:xrechnung_3.0"
},
"errors": [
{
"rule": "BR-DE-15",
"layer": "cius",
"message": "The buyer must have a reference
(Leitweg-ID). This is mandatory for
German public sector invoices.",
"btCodes": ["BT-10"],
"fields": ["buyerReference"]
}
]
}
XRechnung began as procurement plumbing and became the reference point of German e-invoicing. Under the B2B rules it qualifies as an e-invoice outright, so the same documents serve ministries and Mittelstand.
Directive 2014/55/EU set the European floor, and the federal portal documentation lives at e-rechnung-bund.de. For how Germany fits the wider rollout, see the Mandate Map.
POST /v1/create/xrechnung emits the CII binding, /v1/create/ubl with profile xrechnung emits UBL. On validation you declare nothing: syntax and profile are detected from the file.buyerReference in our JSON model). German public-sector buyers route invoices internally with it, and rule BR-DE-15 makes it mandatory; when it is missing, the finding points at the exact field to fix.options.version to adopt it early; on the effective date the default flips; until the sunset you can keep pinning 3.0. The policy is published on our versioning page.xrechnung.xml attachment are recognized, the embedded XML is extracted, and the KoSIT rules run against it like any other XRechnung.Validate, convert and embed compliant e-invoices through one API. Start your 30-day free trial. No credit card required.