BG-11Seller tax representative partyBT-31Seller VAT identifierBT-32Seller tax registration identifierBT-95Document level allowance VAT category codeBT-102Document level charge VAT category codeBT-151Invoiced item VAT category code
Official rule text
[BR-DE-16] If the tax codes S, Z, E, AE, K, G, L or M are used in an invoice, at least one of the elements "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) or "SELLER TAX REPRESENTATIVE PARTY" (BG-11) must be transmitted.
Official text (German): Wenn in einer Rechnung die Steuercodes S, Z, E, AE, K, G, L oder M verwendet werden, muss mindestens eines der Elemente "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) oder "SELLER TAX REPRESENTATIVE PARTY" (BG-11) übermittelt werden.
Why this error occurs
When any VAT category S, Z, E, AE, K, G, L or M is used on a line, a document allowance or a charge, XRechnung requires at least one of: seller VAT identifier (BT-31), seller tax registration identifier (BT-32) or a seller tax representative party (BG-11). The receiving authority needs a tax identity to verify the invoice and deduct input tax. In UBL the rule looks at cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID and cac:TaxRepresentativeParty; in CII at ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID and ram:SellerTaxRepresentativeTradeParty. It typically fails for small businesses without VAT ID whose tax number was never mapped.
How to fix it
Preferred: add the VAT ID (BT-31) in UBL as cac:PartyTaxScheme with cbc:CompanyID and cac:TaxScheme/cbc:ID = VAT, in CII as ram:SpecifiedTaxRegistration/ram:ID schemeID="VA". If the seller has no VAT ID, give the national tax number (BT-32): UBL cac:PartyTaxScheme with cac:TaxScheme/cbc:ID = FC, CII ram:SpecifiedTaxRegistration/ram:ID schemeID="FC". Both may be present as two separate cac:PartyTaxScheme blocks. Category O (not subject to VAT) alone does not trigger this rule.
Example (valid)
<cac:PartyTaxScheme>
<cbc:CompanyID>DE123456789</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyTaxScheme>
<cbc:CompanyID>21/123/45678</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>FC</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
What the validator checks
Checked element (context):
UBL
/ubl:Invoice | /cn:CreditNoteTest (XPath):
(not( ($BT-95-UBL-Inv = $supportedVATCodes or $BT-95-UBL-CN = $supportedVATCodes) or ($BT-102 = $supportedVATCodes) or ($BT-151 = $supportedVATCodes) ) or (cac:TaxRepresentativeParty, $BT-31orBT-32Path))CII
/rsm:CrossIndustryInvoiceTest (XPath):
not((rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax = 'VAT' and rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M'))) or ((rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[normalize-space(@schemeID)='VA' or normalize-space(@schemeID)='FC'][boolean(normalize-space(.))], rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty))
Check your invoice
Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.
Same check via API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRelated rules
BR-DE-1Payment instructions (BG-16) are missingBR-DE-2Seller contact (BG-6) is missingBR-DE-3Seller city (BT-37) is missingBR-DE-4The element "Seller post code" must be transmittedBR-DE-5Seller contact point (BT-41) is missingBR-DE-6Seller contact telephone number (BT-42) is missingBR-DE-7Seller contact email address (BT-43) is missingBR-DE-8The element "Buyer city" must be transmitted
Frequently asked questions
What does BR-DE-16 mean?
BR-DE-16 is a xrechnung rule: If the tax codes S, Z, E, AE, K, G, L or M are used in an invoice, at least one of the elements "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) or "SELLER TAX REPRESENTATIVE PARTY" (BG-11) must be transmitted.
Will my invoice be rejected because of BR-DE-16?
Yes. BR-DE-16 is flagged "fatal"; validators (KoSIT, Peppol access points, the German ZRE/OZG-RE portals) reject the invoice until it is fixed.
Which formats does BR-DE-16 apply to?
XRechnung in UBL or CII syntax, including ZUGFeRD / Factur-X PDFs with the XRECHNUNG profile. Invoices to German public authorities (federal, state and municipal) must pass it. Syntax: UBL and CII.
Source: XRechnung 3.0.2, schematron 2.6.0 (KoSIT, September 2026). Catalogue generated from the official schematron on 2026-10-14.