XRechnung Validation Errors: A Complete Guide for German Businesses
The most common XRechnung validation errors, why they happen, and how to fix each one. Practical guidance for anyone sending e-invoices in Germany.
You generated an XRechnung invoice, ran it through validation, and got a wall of errors. Now what?
XRechnung is Germany's national e-invoicing standard — a CIUS (Core Invoice Usage Specification) built on top of the European EN 16931 standard. It adds a set of German-specific business rules, prefixed BR-DE, that go beyond what the European standard requires. These rules enforce things like mandatory payment information, the Leitweg-ID for government invoices, and specific seller contact details.
This guide covers the most common BR-DE validation errors that trip up German businesses, explains why each rule exists, and tells you how to fix it. If you're looking for the deep technical reference with XML examples for every single rule, see our developer-focused BR-DE troubleshooting guide.
Understanding XRechnung Validation
When you validate an XRechnung invoice, the validation engine checks three layers of rules:
Layer 1: Schema validation. Does the XML structure match the expected schema? Are required elements present? Are data types correct? This catches malformed XML — missing closing tags, wrong element names, invalid date formats.
Layer 2: EN 16931 business rules (BR-*). Does the invoice satisfy the core European requirements? These are rules like "Invoice total must equal the sum of line totals" (BR-CO-10) or "VAT category tax amount must equal the category taxable amount times the rate" (BR-CO-14). Every EN 16931-compliant invoice must pass these.
Layer 3: German CIUS rules (BR-DE-*). Does the invoice satisfy Germany's additional requirements? This is where XRechnung adds its own constraints. An invoice can be perfectly valid EN 16931 and still fail XRechnung validation because it's missing something Germany specifically requires.
Most of the errors businesses encounter fall in Layer 3 — the BR-DE rules. You built a valid European invoice, but you didn't account for what Germany wants on top.
The Most Common BR-DE Errors
Let's walk through the errors that cause the most trouble, grouped by what part of the invoice they affect.
Payment Information Errors
Germany takes payment information seriously. Where the European standard makes some payment details optional, XRechnung makes them mandatory.
BR-DE-1 — Payment Instructions Required
Every XRechnung invoice must include payment instructions (Business Group BG-16). This means you need a PaymentMeans element with at least a payment method code and, for bank transfers, the payee's IBAN.
This is the single most common XRechnung error we see. It happens because many accounting systems treat payment details as optional metadata — after all, the European standard doesn't strictly require them. But XRechnung does, every time.
BR-DE-2 — Payment Group Must Be Present
Related to BR-DE-1, this rule requires that the payment means group is actually populated with meaningful data. Having an empty PaymentMeans block isn't enough — the payment method code and financial account details need to be there.
BR-DE-10 — Skonto (Cash Discount) Format
If you offer early payment discounts (Skonto), the format must follow a specific structure in the payment terms field. Germany uses a structured text format for Skonto that many systems get wrong. The format is #SKONTO#TAGE=14#PROZENT=2.00#, and getting the delimiters or field names wrong triggers this error.
BR-DE-18 — Extended Skonto Validation
Similar to BR-DE-10, this validates the Skonto information when a basis amount is specified. If you include a Skonto term with a basis amount, BR-DE-18 checks that the format and values are consistent.
Buyer and Routing Errors
XRechnung invoices sent to German government entities need routing information that commercial invoices don't typically carry.
BR-DE-15 — Buyer Reference Mandatory
Every XRechnung invoice must include a Buyer Reference (BT-10). For B2G invoices, this is typically the Leitweg-ID — a routing code that tells the government's receiving system where to deliver the invoice. For B2B invoices, it can be any agreed-upon reference.
If your invoice is missing BT-10 entirely, you'll hit this error. This catches a lot of businesses transitioning from PDF invoicing, where buyer references were optional metadata rather than a structural requirement.
BR-DE-5 — Leitweg-ID Format
When the Buyer Reference is a Leitweg-ID (the standard routing code for German public sector invoices), it must follow a specific format: a series of numbers separated by hyphens, with a check digit. The pattern is typically something like 04011000-12345-67. Getting the format wrong — wrong number of segments, missing check digit, invalid characters — triggers this error.
Note: this rule only applies when the Buyer Reference follows the Leitweg-ID pattern. B2B invoices using other reference formats won't trigger it.
Seller Information Errors
Germany requires more seller information than the European base standard.
BR-DE-17 — Seller Contact Required
The seller must include contact information — specifically a contact name, telephone number, and email address. All three are required. Many invoicing systems include the company name and address but skip the individual contact details, which triggers this error.
This rule exists because German procurement processes often need a specific person to contact about invoice queries, not just a general company address.
BR-DE-3 — VAT ID or Tax Number Required
The seller must provide either a VAT identification number (USt-IdNr.) or a tax number (Steuernummer). This is stricter than the European standard, which is more flexible about seller tax identification. If your system omits both, you'll get this error.
BR-DE-16 — Seller Tax Registration
Related to BR-DE-3, this rule ensures that the seller's tax registration information is properly structured. The VAT ID must follow the expected format (DE followed by 9 digits for German VAT IDs).
Format and Profile Errors
BR-DE-4 — Invalid XRechnung Profile
The invoice must declare the correct XRechnung specification identifier. The current value is urn:cen.eu:en16931:2017#compliant#urn:xrechnung:3.0. If your system generates an older version string or a malformed identifier, this error fires.
This is a common issue after XRechnung version updates. If you implemented XRechnung 2.x and haven't updated the specification identifier to 3.0, every invoice will fail this check.
BR-DE-21 — Specification Identifier Format
The CustomizationID (BT-24) must contain a valid specification identifier. This catches more subtle formatting issues with the identifier string.
Other Notable Rules
BR-DE-7 — German Postal Code Format
When the seller or buyer address is in Germany, the postal code must be a valid 5-digit German PLZ. This catches addresses with missing or malformed postal codes.
BR-DE-13 — Delivery Date
An invoice must include either an invoice delivery date or an invoicing period. Many systems only include the invoice issue date and skip the delivery information, which isn't enough for XRechnung.
BR-DE-19 — IBAN Format
When a bank account is provided for payment, the IBAN must follow the correct format. This catches typos, wrong country prefixes, and invalid check digits in IBANs.
BR-DE-22 — Unique Attachment Filenames
If your invoice includes document-level attachments, each attachment must have a unique filename. Duplicate filenames across attachments trigger this error.
B2G vs B2B: Different Requirements
One source of confusion is that XRechnung rules apply differently depending on whether you're invoicing a government entity (B2G) or a private business (B2B).
For B2G invoices:
- Leitweg-ID is mandatory as the Buyer Reference
- Invoices must be submitted through the government's receiving platforms (ZRE at the federal level, or state-specific platforms like OZG-RE)
- The Leitweg-ID format is strictly validated (BR-DE-5)
For B2B invoices:
- Buyer Reference (BT-10) is still mandatory, but it doesn't need to be a Leitweg-ID — any agreed reference works
- Direct exchange between trading partners is allowed (no mandatory government platform)
- All other BR-DE rules still apply
As of 2026, German businesses must be able to receive e-invoices but are not yet required to send them. The sending mandate starts January 2027 for businesses with over EUR 800,000 in annual revenue, and January 2028 for all businesses. Start preparing now — the reception requirement means your trading partners may already be sending you XRechnung invoices.
How to Validate Your XRechnung Invoices
The official way to validate XRechnung invoices is through the KOSIT validator, maintained by the Koordinierungsstelle für IT-Standards. It's open source but requires Java and some setup to run locally.
For a faster check, use the Invoice Navigator validator — upload your invoice file and get instant results showing which BR-DE rules pass and which fail, with explanations for each error. You can also use the dedicated XRechnung validator for a format-specific experience.
When you encounter errors, the error pages in our country-specific error library provide detailed explanations with XML examples for both UBL and CII syntaxes.
Validation Checklist
Before submitting any XRechnung invoice, verify:
- Payment instructions are included with a valid payment method code and IBAN
- Buyer Reference (BT-10) is present — Leitweg-ID for B2G, agreed reference for B2B
- Seller contact includes name, phone, and email (all three)
- Seller has either VAT ID or tax number
- Specification identifier matches
urn:cen.eu:en16931:2017#compliant#urn:xrechnung:3.0 - Delivery date or invoicing period is included
- German postal codes are valid 5-digit format
- Any Skonto terms follow the correct structured format
- Attachment filenames are unique
Staying Current
XRechnung is a living standard. KOSIT releases updates roughly annually, and each update can add, modify, or deprecate business rules. The transition from XRechnung 2.x to 3.0 in 2024 changed several rules and updated the specification identifier.
Keep an eye on:
- KOSIT releases: New validator configurations and rule updates
- XRechnung specification: Changes to business rules and syntax bindings
- Government platform updates: Changes to ZRE and state-level receiving platforms
The Germany country page tracks the latest regulatory changes and deadlines. For the complete technical reference on every BR-DE rule with code examples, see our BR-DE validation error guide for developers.
FAQ
What is a BR-DE error in XRechnung?
BR-DE errors are validation failures specific to Germany's XRechnung standard. The prefix "BR-DE" stands for Business Rule - Deutschland. These rules add requirements on top of the European EN 16931 standard — things like mandatory payment information, seller contact details, and the Leitweg-ID format. An invoice can be valid EN 16931 but still fail XRechnung validation due to BR-DE rules.
What is the most common XRechnung validation error?
BR-DE-1 (missing payment instructions) is the most frequently encountered error. Many accounting systems treat payment details as optional because the European base standard doesn't strictly require them. XRechnung requires payment instructions on every invoice, including the payment method code and payee bank details.
What is a Leitweg-ID and when do I need one?
A Leitweg-ID is a routing code used in German public sector e-invoicing. It tells the government's receiving system which department or entity should receive the invoice. You need one when sending B2G (business-to-government) invoices. For B2B invoices, the Buyer Reference field is still required but doesn't need to be a Leitweg-ID — any agreed-upon reference value works.
Does XRechnung apply to B2B invoices in Germany?
Yes, increasingly. Since January 2025, all German businesses must accept XRechnung (and other EN 16931-compliant formats) for B2B transactions. The sending mandate begins January 2027 for larger businesses and January 2028 for all others. All BR-DE validation rules apply to B2B invoices except for the Leitweg-ID format check, which is B2G-specific.
How is XRechnung different from ZUGFeRD?
XRechnung is a pure XML format (available in UBL or CII syntax) with strict German business rules. ZUGFeRD is a hybrid format that embeds XML inside a PDF. Both are EN 16931 compliant and accepted in Germany. The key difference: XRechnung has the BR-DE validation rules baked in, while ZUGFeRD invoices need to be validated separately against those rules. For more detail, see our XRechnung vs ZUGFeRD comparison.
Where can I find all the BR-DE error codes?
Our error library for Germany lists every BR-DE error with explanations and fixes. For the complete developer reference with XML examples, see the BR-DE validation error guide. You can also validate any invoice against all BR-DE rules using the Invoice Navigator validator.
What XRechnung version should I use in 2026?
As of 2026, XRechnung 3.0.x is the current version. Your invoice must use the specification identifier urn:cen.eu:en16931:2017#compliant#urn:xrechnung:3.0. Using older version identifiers (2.x) will trigger a BR-DE-4 validation error. Check the KOSIT website for the latest validator configuration version.
Check Your Compliance Status
Find out exactly what your business needs to do for e-invoicing compliance.
Use Obligation Finder