Guide
Leitweg-ID for developers
A missing or malformed BT-10 is one of the most frequent rejections when sending XRechnung to German public buyers. What the id is, which format applies, and where it goes in your JSON.
Updated on
What is the Leitweg-ID?
The Leitweg-ID routes the invoice to the right public-sector recipient in Germany. In EN 16931 the field is Buyer reference (BT-10). XRechnung makes it mandatory for public procurement — rule BR-DE-15.
Germany has required e-invoices from suppliers to its federal administration since 27 November 2020 (E-Rechnungsverordnung), and the federal submission platforms ZRE and OZG-RE route every invoice by its Leitweg-ID. Your public-sector customer assigns the id — it arrives with the purchase order, not from a lookup service.
What format does a Leitweg-ID have?
Three segments joined by dashes: {coarse}-{fine}-{check}, e.g. 04011000-1234512345-06.
| Segment | Rule | Example |
|---|---|---|
| Coarse addressing (Grobadressierung) | 2–12 digits | 04011000 |
| Fine addressing (Feinadressierung, optional) | 1–30 alphanumeric characters | 1234512345 |
| Check digits (Prüfziffer) | exactly 2 digits | 06 |
Format OK — this is what normbill expects in invoice.buyer_reference (tier-1).
Note: Official KoSIT Schematron for BR-DE-15 only checks presence — not syntax. Format checking is normbill tier-1 (NB-LEITWEG-FORMAT).
Where does the Leitweg-ID go in the API request?
{
"format": "xrechnung-3.0",
"invoice": {
"buyer_reference": "04011000-1234512345-06",
...
}
}If the field is missing, generate returns 422 with path: "invoice.buyer_reference" and a concrete fix — not only the raw Schematron text.
Which validation rules check the Leitweg-ID?
| Rule | Layer | What it checks |
|---|---|---|
BR-DE-15 | KoSIT validator (tier 3, authoritative) | Buyer reference must be present |
NB-LEITWEG-FORMAT | normbill pre-flight (tier 1) | Format matches the pattern above — syntax issues surface before the sidecar |
Where next?
Validator · Playground · Docs · OSS vs API