Find out why your e-invoice was rejected.
Upload a UBL or CII invoice — or a Factur-X / ZUGFeRD PDF, or a ZIP of up to
200 invoices — and get the rule that failed, what it means in plain English, and how to fix
it. Free, no account, nothing stored.
12 fatal errors, 2 warnings
UBL syntax · XRechnung 3.0.2 (Germany)
VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.
WhyIn a VAT breakdown group the VAT category tax amount (BT-117) does not equal the taxable amount (BT-116) multiplied by the rate (BT-119), rounded to 2 decimals.
How to fixSet BT-117 = round(BT-116 x BT-119 / 100, 2) per breakdown group. Round the product itself with half-up rounding - summing per-line VAT amounts drifts by a cent or two. BT-119 is a percentage (21, not 0.21). Note the EN core rule tolerates a deviation of up to 1.00 in the invoice currency, so if this fires your figure is off by more than a rounding cent - look for a wrong rate or a taxable amount that excludes an allowance. National profiles (XRechnung, Peppol BIS, KSeF) routinely tighten this to the exact cent.
24 <cbc:TaxAmount currencyID="EUR">66.66</cbc:TaxAmount>
25 <cac:TaxSubtotal>
26 <cbc:TaxableAmount currencyID="EUR">333.30</cbc:TaxableAmount>
line 25 · /Invoice/TaxTotal/TaxSubtotal
The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).
WhyIn the VAT breakdown group for standard rated VAT (category S), the VAT category tax amount (BT-117) does not equal the taxable amount (BT-116) times the rate (BT-119).
How to fixSet BT-117 = round(BT-116 x BT-119 / 100, 2) for the S group. This rule usually fires together with BR-CO-17 - fix the arithmetic once and both clear. If BT-116 itself is wrong, fix that first (see BR-S-08), because BT-117 is derived from it.
27 <cbc:TaxAmount currencyID="EUR">66.66</cbc:TaxAmount>
28 <cac:TaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>22</cbc:Percent><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory>
29 </cac:TaxSubtotal>
line 28 · /Invoice/TaxTotal/TaxSubtotal/TaxCategory
Business process MUST be provided.
WhyThe business process identifier (BT-23) is missing. Peppol routes on it, so an invoice without it cannot be delivered even though it is valid EN 16931.
How to fixAdd BT-23 (UBL cbc:ProfileID) with the value urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 for a normal invoice-only process. This is the field most often missing when a working EN 16931 file first meets Peppol.
3 xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
4 xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
5 <cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
line 4 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]
Seller electronic address MUST be provided
WhyThe seller electronic address (BT-34) is missing.
How to fixAdd BT-34 with its EAS schemeID under AccountingSupplierParty/Party/cbc:EndpointID. It is your own Peppol address.
10 <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
11 <cac:AccountingSupplierParty><cac:Party>
12 <cac:PostalAddress><cac:Country><cbc:IdentificationCode>SI</cbc:IdentificationCode></cac:Country></cac:PostalAddress>
line 11 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}AccountingSupplierParty[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}Party[1]
Buyer electronic address MUST be provided
WhyThe buyer electronic address (BT-49) is missing. This is the Peppol routing address; without it the invoice cannot be delivered.
How to fixAdd BT-49 with its schemeID from the EAS code list - UBL AccountingCustomerParty/Party/cbc:EndpointID schemeID="0208". The buyer tells you this value; you cannot invent it.
15 </cac:Party></cac:AccountingSupplierParty>
16 <cac:AccountingCustomerParty><cac:Party>
17 <cac:PostalAddress><cac:Country><cbc:IdentificationCode>DE</cbc:IdentificationCode></cac:Country></cac:PostalAddress>
line 16 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}AccountingCustomerParty[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}Party[1]
Invoice line net amount MUST equal (Invoiced quantity * (Item net price/item price base quantity) + Sum of invoice line charge amount - sum of invoice line allowance amount
WhyThe invoice line net amount (BT-131) does not equal quantity x (net price / base quantity), plus line charges, minus line allowances.
How to fixRecompute BT-131 = round(BT-129 x BT-146 / BT-149, 2) + line charges - line allowances, with BT-149 (base quantity) treated as 1 when absent. Peppol enforces this arithmetic per line; plain EN 16931 does not, which is why an invoice can pass one and fail the other.
36 </cac:LegalMonetaryTotal>
37 <cac:InvoiceLine>
38 <cbc:ID>1</cbc:ID>
line 37 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}InvoiceLine[1]
Das Element "Buyer reference" (BT-10) muss übermittelt werden.
WhyThe Buyer reference (BT-10) is missing. In Germany this carries the Leitweg-ID, the routing identifier of the public authority you are invoicing - without it the invoice cannot be delivered.
How to fixAdd BT-10 (UBL cbc:BuyerReference). For a public-sector buyer this must be the Leitweg-ID they gave you, in the form 991-12345-67. It is not a free-text order reference: if you invent one, the invoice is technically valid and still undeliverable. Ask the authority for it.
3 xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
4 xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
5 <cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
line 4 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]
Das Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen.
WhyThe specification identifier (BT-24) is not an XRechnung customisation ID, so the receiver will not apply the XRechnung rule set.
How to fixSet BT-24 to urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0 (add #conformant#...:extension:xrechnung_3.0 only if you use the extension). Copy it exactly.
3 xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
4 xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
5 <cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
line 4 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]
Eine Rechnung sollte zur Angabe des Liefer-/Leistungsdatums entweder BT-72 "Actual delivery date", BG-14 "Invoicing period" oder in jeder Rechnungsposition BG-26 "Invoice line period" enthalten.
WhyThe invoice states no delivery or performance date in any of the accepted places.
How to fixGive one of: the actual delivery date BT-72, an invoicing period BG-14, or the period stated in the payment terms text. German invoices must show when the supply happened, not only when the invoice was written.
3 xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
4 xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
5 <cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
line 4 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]
Die Gruppe "SELLER CONTACT" (BG-6) muss übermittelt werden.
WhyXRechnung requires the seller contact group (BG-6); it is missing.
How to fixAdd BG-6 with all three of: contact point BT-41 (a name or department), telephone BT-42 and e-mail BT-43. UBL: AccountingSupplierParty/Party/cac:Contact with cbc:Name, cbc:Telephone and cbc:ElectronicMail. All three are mandatory in Germany even though EN 16931 makes them optional.
10 <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
11 <cac:AccountingSupplierParty><cac:Party>
12 <cac:PostalAddress><cac:Country><cbc:IdentificationCode>SI</cbc:IdentificationCode></cac:Country></cac:PostalAddress>
line 11 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}AccountingSupplierParty[1]
Das Element "Seller city" (BT-37) muss übermittelt werden.
WhyThe seller city (BT-37) is missing. EN 16931 allows a country-only address; XRechnung does not.
How to fixAdd the city to the seller's postal address (UBL cbc:CityName).
11 <cac:AccountingSupplierParty><cac:Party>
12 <cac:PostalAddress><cac:Country><cbc:IdentificationCode>SI</cbc:IdentificationCode></cac:Country></cac:PostalAddress>
13 <cac:PartyTaxScheme><cbc:CompanyID>SI12345679</cbc:CompanyID><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:PartyTaxScheme>
line 12 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}AccountingSupplierParty[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}Party[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}PostalAddress[1]
Das Element "Seller post code" (BT-38) muss übermittelt werden.
WhyThe seller post code (BT-38) is missing.
How to fixAdd the post code to the seller's postal address (UBL cbc:PostalZone).
11 <cac:AccountingSupplierParty><cac:Party>
12 <cac:PostalAddress><cac:Country><cbc:IdentificationCode>SI</cbc:IdentificationCode></cac:Country></cac:PostalAddress>
13 <cac:PartyTaxScheme><cbc:CompanyID>SI12345679</cbc:CompanyID><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:PartyTaxScheme>
line 12 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}AccountingSupplierParty[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}Party[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}PostalAddress[1]
Das Element "Buyer city" (BT-52) muss übermittelt werden.
WhyThe buyer city (BT-52) is missing.
How to fixAdd the city to the buyer's postal address (UBL cbc:CityName).
16 <cac:AccountingCustomerParty><cac:Party>
17 <cac:PostalAddress><cac:Country><cbc:IdentificationCode>DE</cbc:IdentificationCode></cac:Country></cac:PostalAddress>
18 <cac:PartyLegalEntity><cbc:RegistrationName>Kunde GmbH</cbc:RegistrationName></cac:PartyLegalEntity>
line 17 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}AccountingCustomerParty[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}Party[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}PostalAddress[1]
Das Element "Buyer post code" (BT-53) muss übermittelt werden.
WhyThe buyer post code (BT-53) is missing.
How to fixAdd the post code to the buyer's postal address (UBL cbc:PostalZone).
16 <cac:AccountingCustomerParty><cac:Party>
17 <cac:PostalAddress><cac:Country><cbc:IdentificationCode>DE</cbc:IdentificationCode></cac:Country></cac:PostalAddress>
18 <cac:PartyLegalEntity><cbc:RegistrationName>Kunde GmbH</cbc:RegistrationName></cac:PartyLegalEntity>
line 17 · /Q{urn:oasis:names:specification:ubl:schema:xsd:Invoice-2}Invoice[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}AccountingCustomerParty[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}Party[1]/Q{urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2}PostalAddress[1]
1,722 rules explained
Every EN 16931 and Peppol BIS rule has
its own reference page with the cause and the fix.
Hybrid PDFs, wrapper included
Factur-X and ZUGFeRD PDFs are
unpacked and the XML checked — plus the container itself: /AF, /AFRelationship and the XMP
profile declaration, which almost nothing else looks at.
Profiles that actually reject you
An invoice can be valid EN 16931
and still bounce off Peppol or XRechnung. The Peppol check adds the national rules for
DE, DK, GR, IS, IT, NL, NO and SE automatically, from the seller's country.
Checked against the official corpus
Passes
1,142 of 1,142 assertions in CEN's own EN 16931 test suite — the same corpus the
standard is validated with.