Identifiers and validation rules, explained
Every European e-invoice declares what it claims to be through a handful of URN strings, and every failed validation report speaks in rule codes. These pages take each string a developer is likely to paste into a search engine, from urn:cen.eu:en16931:2017 to BR-DE-15, and answer it directly: what it means, where it lives in the XML, and what to do about it.
Specification identifiers
The URN strings inside the documents: what each declares, which rules it triggers, and what to do with a document carrying it.
Factur-X and ZUGFeRD profiles
The five profile identifiers of the Franco-German hybrid PDF format, declared in BT-24 of the embedded CII XML.
| urn:factur-x.eu:1p0:minimum | The MINIMUM profile: header data only, no line items, below the EN 16931 core. |
| urn:factur-x.eu:1p0:basicwl | BASIC WL (without lines): document-level data with VAT breakdown, still no lines. |
| urn:factur-x.eu:1p0:basic | BASIC: the first EN 16931 compliant profile, declared via the #compliant# stem form. |
| urn:factur-x.eu:1p0:en16931 | The EN 16931 (Comfort) profile: the full European core data set, the recommended default. |
| urn:factur-x.eu:1p0:extended | EXTENDED: beyond the core for complex billing, declared via the #conformant# stem form. |
The European core
The stem nearly every European specification identifier builds on.
| urn:cen.eu:en16931:2017 | The EN 16931 core identifier and the #compliant# / #conformant# grammar behind every CIUS and extension. |
National and network CustomizationIDs
The BT-24 values that route a document to a national or network rule set.
| urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0 | The XRechnung 3.0 CustomizationID, in both its xeinkauf.de and older xoev-de spellings. |
| urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0 | The Peppol BIS Billing 3.0 CustomizationID and its ProfileID companion (BT-23). |
Syntax namespaces
Identifiers that name the XML vocabulary itself rather than a profile.
| urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100 | The namespace of the CII root element, defined by CrossIndustryInvoice_100pD16B.xsd. |
Validation rule codes
The other string developers paste into a search engine: the rule code from a failed validation report. Each page explains what the rule actually checks, why it fails in practice, and shows the cryptic raw Schematron output next to the readable, field-mapped finding the InvoiceXML validators return for the same failure.
XRechnung rules (BR-DE)
The German CIUS rules from KoSIT. They fire in the cius layer when a document declares the XRechnung profile, including ZUGFeRD hybrids doing so.
| BR-DE-1 | Payment instructions (BG-16) are mandatory: an XRechnung must say how it will be paid. |
| BR-DE-2 | The seller contact group (BG-6) is mandatory: name, phone, and email of a human to ask. |
| BR-DE-15 | The buyer reference (BT-10) is mandatory: the Leitweg-ID slot of German B2G invoicing. |
| BR-DE-17 | Only specific UNTDID 1001 invoice type codes are accepted (380, 381, 384 and friends). |
| BR-DE-18 | Skonto entries in the payment terms (BT-20) must follow the strict #SKONTO# line format. |
| BR-DE-21 | The specification identifier (BT-24) must syntactically be the XRechnung one. |
EN 16931 core rules
Structural rules of the European core model. They fire in the en16931 layer, in every format and profile.
| BR-01 | A specification identifier (BT-24) is mandatory: the invoice must declare its profile. |
| BR-16 | At least one invoice line (BG-25) is mandatory: summary-only documents fail. |
| BR-CO-03 | The VAT point date (BT-7) and its code (BT-8) are mutually exclusive: send one, not both. |
| BR-CL-24 | Attached documents (BT-125) may only use the six MIME types EN 16931 allows. |
The totals chain (BR-CO)
The calculation rules that tie the document totals together, from the line sum to the amount due. One wrong cent fails the chain; documents generated via /v1/create/* compute it server-side.
| BR-CO-10 | Sum of line net amounts (BT-106) = the sum over every line's BT-131. |
| BR-CO-11 | Sum of document level allowances (BT-107) = the sum of the allowance amounts (BT-92). |
| BR-CO-13 | Total without VAT (BT-109) = lines minus allowances plus charges. |
| BR-CO-15 | Total with VAT (BT-112) = total without VAT plus the VAT total. |
| BR-CO-16 | Amount due (BT-115) = total with VAT minus prepaid plus rounding. |
VAT rules
The VAT breakdown arithmetic and the category-specific requirements, en16931 layer.
| BR-CO-14 | The invoice VAT total (BT-110) must equal the sum of the VAT breakdown amounts. |
| BR-CO-17 | Each VAT category tax amount (BT-117) = taxable amount x rate / 100, rounded. |
| BR-S-08 | Each standard-rate breakdown's taxable amount must equal the sum of its rate's lines. |
| BR-AE-10 | A reverse charge VAT breakdown needs an exemption reason (VATEX-EU-AE or text). |
| BR-E-10 | An exempt VAT breakdown needs an exemption reason code or text. |
| BR-IC-11 | An intra-community supply invoice needs a delivery date (BT-72) or invoicing period (BG-14). |
| BR-IC-12 | An intra-community supply invoice needs the deliver-to country code (BT-80). |
Peppol BIS rules
The network overlay of Peppol BIS Billing 3.0, plus the national packs riding on it. Cius layer, Peppol profile; the plain en16931 profile drops them.
| PEPPOL-EN16931-R001 | A business process type (BT-23) is mandatory: the ProfileID next to the CustomizationID. |
| PEPPOL-EN16931-R010 | A buyer electronic address (BT-49) is mandatory: the delivery endpoint on the network. |
| PEPPOL-EN16931-R020 | A seller electronic address (BT-34) is mandatory: the sender's network identity. |
| PEPPOL-EN16931-CL008 | Electronic address schemes must be EAS codes: 9930, 0204, 0088 pass, "EM" does not. |
| DE-R-001 | Domestic German invoices on Peppol need payment instructions (BG-16). |
| DE-R-002 | Domestic German invoices on Peppol need the seller contact group (BG-6). |
| DE-R-015 | Domestic German invoices on Peppol need a buyer reference (BT-10), mirroring BR-DE-15. |
Glossary
A short, plain-language reference for the standards and terms behind the identifiers and rules above. If a word in the docs is unfamiliar, it is probably explained here.
Standards and formats
| Term | Definition |
|---|---|
| EN 16931 | The European standard that defines the semantic data model of an electronic invoice: what fields exist and what they mean. Every format below is a way of expressing an EN 16931 invoice. |
| CII | Cross Industry Invoice, a UN/CEFACT XML syntax for invoices. It is the XML carried inside Factur-X and ZUGFeRD files. |
| UBL | Universal Business Language, the OASIS XML syntax for invoices. The other EN 16931 syntax, used widely on the Peppol network. |
| Factur-X | A Franco-German hybrid invoice: a PDF/A-3 document with an EN 16931 CII XML file embedded inside it. |
| ZUGFeRD | The German name for the same hybrid standard as Factur-X. ZUGFeRD 2.x and Factur-X are technically identical. |
| XRechnung | The German specification for invoicing public-sector buyers (B2G). A pure XML invoice, in either CII or UBL syntax, with extra German-specific rules. |
| Peppol BIS | The Peppol Business Interoperability Specification, a UBL-based profile used to exchange invoices over the Peppol network across borders. |
| PDF/A-3 | An ISO archival PDF format that allows other files to be embedded inside it. It is what lets a hybrid invoice carry its XML. |
Terms and concepts
| Term | Definition |
|---|---|
| BT (Business Term) | A single piece of invoice data. For example, BT-1 is the invoice number and BT-5 is the currency. |
| BG (Business Group) | A group of related Business Terms. For example, BG-4 groups all the seller fields together. |
| BR (Business Rule) | A validation rule from EN 16931. For example, BR-06 requires that an invoice contain the seller name. A failed BR is what produces a validation error. |
| CIUS | Core Invoice Usage Specification, a national or sector-specific tightening of EN 16931. XRechnung and Peppol BIS are both a CIUS. |
| Schematron | The rule language the EN 16931 business rules are written in. The validation endpoints run Schematron against your invoice. |
| Profile | A Factur-X / ZUGFeRD conformance level (MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED) that determines which fields an invoice is allowed to carry. |
| Hybrid invoice | A single PDF that is both human-readable (the visible page) and machine-readable (the embedded XML). Factur-X and ZUGFeRD are hybrid invoices. |
| Leitweg-ID | The routing identifier a German public-sector buyer issues. It is carried in the buyer reference (BT-10) and is required by XRechnung. |
| Finding | One entry in the errors or warnings array of an API response, describing a single validation issue. See Error Handling. |