Account
English

BR-DE-16: Seller VAT ID, tax number or tax representative is missing

XRechnung rule · Error · UBL / CII

StandardXRechnung 3.0.2 (KoSIT, German CIUS of EN 16931)SeverityError: the invoice is rejectedSyntaxUBL, CIIBusiness terms
  • BG-11 Seller tax representative party
  • BT-31 Seller VAT identifier
  • BT-32 Seller tax registration identifier
  • BT-95 Document level allowance VAT category code
  • BT-102 Document level charge VAT category code
  • BT-151 Invoiced item VAT category code
Applies toXRechnung 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.

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:CreditNote

Test (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:CrossIndustryInvoice

Test (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.

Check your invoice →

Same check via API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Related rules

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.