BR-DE-16Wenn 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.

Official rule text

With tax category codes S, Z, E, AE, K, G, L or M the seller must be identifiable for tax: a VAT ID, a tax number or BG-11. Those are the VAT identifier (BT-31), the tax registration identifier (BT-32) and the tax representative (BG-11) — any one of the three will do.

Severity
Error
Applies to
CII, UBL
Rule set
v2026-08-31
Checked on

Written and checked against the official KoSIT rule set by Dmytro Yalanskyi, NormAPI.

Why does BR-DE-16 happen?

Small businesses under § 19 UStG use category E and often have no VAT identifier. The tax number is frequently missing too, because the previous invoice layout never captured it. The UBL expression below shows variables rather than values: supportedVATCodes is the eight codes S, Z, E, AE, K, G, L and M, and BT-31orBT-32Path is cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID with content in it. The two syntaxes also differ here: in UBL any identifier under PartyTaxScheme counts, while CII accepts only a registration whose schemeID is VA or FC.

What the validator checks

The expression the official KoSIT rule set evaluates — not paraphrased, but read from the Schematron file it ships. UBL and CII address different document trees, so the same rule reads differently in each.

UBL
(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))

Variables in it

$BT-95-UBL-Inv
cac:AllowanceCharge/cac:TaxCategory/cbc:ID[ancestor::cac:AllowanceCharge/cbc:ChargeIndicator = 'false' and following-sibling::cac:TaxScheme/cbc:ID = 'VAT']
$supportedVATCodes
('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')
$BT-95-UBL-CN
cac:AllowanceCharge/cac:TaxCategory/cbc:ID[ancestor::cac:AllowanceCharge/cbc:ChargeIndicator = 'false']
$BT-102
cac:AllowanceCharge/cac:TaxCategory/cbc:ID[ancestor::cac:AllowanceCharge/cbc:ChargeIndicator = 'true']
$BT-151
(cac:InvoiceLine | cac:CreditNoteLine)/cac:Item/cac:ClassifiedTaxCategory/cbc:ID
$BT-31orBT-32Path
cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID[boolean(normalize-space(.))]
CII
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))

Source: rule set v2026-08-31

How do you fix BR-DE-16?

Supply at least one of the three. Without a VAT identifier, BT-32 (tax registration number) is the usual choice — in UBL as cac:PartyTaxScheme/cbc:CompanyID with cac:TaxScheme/cbc:ID set to FC, in CII as ram:SpecifiedTaxRegistration/ram:ID with schemeID FC.

In the XML

A UBL fragment. The CII path is named above — same change, different element names.

Fails
<cac:Party>
  <cac:PartyLegalEntity>
    <cbc:RegistrationName>Muster GmbH</cbc:RegistrationName>
  </cac:PartyLegalEntity>
</cac:Party>
Fixed
<cac:Party>
  <cac:PartyTaxScheme>
    <cbc:CompanyID>12/345/67890</cbc:CompanyID>
    <cac:TaxScheme><cbc:ID>FC</cbc:ID></cac:TaxScheme>
  </cac:PartyTaxScheme>
  <cac:PartyLegalEntity>
    <cbc:RegistrationName>Muster GmbH</cbc:RegistrationName>
  </cac:PartyLegalEntity>
</cac:Party>

Related rules

NormAPI provides technical validation, not tax or legal advice.