← All Error Rules
error Class A

BR-DE-14 VAT Category Code

What this rule checks

BR-DE-14 validates that the VAT category code in field BT-151 (Invoiced item VAT category code) contains a valid value from the UNTDID 5305 code list (Duty/tax/fee category code). The code is specified in the XML as cbc:ID within cac:ClassifiedTaxCategory at line item level.

Every invoice line must declare which VAT treatment applies to it — e.g., standard rate, reduced rate, tax exempt, or reverse charge.

Why this rule exists

Correct VAT classification of every invoice line is mandatory under German tax law:

  • Tax compliance: The German VAT Act (UStG) requires every invoice to state the applicable tax rate and tax category (Section 14(4) UStG).
  • Automated posting: Accounting systems use the category code to automatically assign line items to the correct tax accounts and tax indicators.
  • Consistency checks: The category code at line level (BT-151) must match the VAT breakdown at document level (BG-23). Inconsistencies trigger additional validation errors.
  • Input tax deduction: Incorrect category codes can prevent the recipient from correctly determining their input tax deduction entitlement.

What triggers a failure

The rule fails when:

  • cbc:ID within cac:ClassifiedTaxCategory contains an invalid value (e.g., X, N, R, or other codes not defined in UNTDID 5305)
  • cbc:ID is missing or empty
  • A code that is defined in UNTDID 5305 but not permitted in the XRechnung context is used

Failing XML example

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">5</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Consulting services</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <!-- ERROR: "X" is not a valid UNTDID 5305 code -->
      <cbc:ID>X</cbc:ID>
      <cbc:Percent>19</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
</cac:InvoiceLine>

The code X is not defined in the UNTDID 5305 code list and will be rejected by validation.

The fix

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">5</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Consulting services</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <!-- CORRECT: "S" = Standard rate -->
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>19</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
</cac:InvoiceLine>

Use a valid UNTDID 5305 code and ensure that cbc:Percent matches the chosen category.

Edge cases and common mistakes

Valid category codes for Germany

CodeMeaningTypical rateUse case
SStandard rate19% or 7%Domestic supplies of goods and services
AAReduced rate7%Food, books, local transport
ZZero rated0%Certain export supplies
EExemptExempt supplies (e.g., medical services)
AEReverse chargeReverse charge mechanism (Section 13b UStG)
KIntra-community supply0%Supplies to businesses in other EU member states
GExport0%Supplies to third countries
ONot subject to VATSupplies outside the scope of VAT
LIGIC (Canary Islands)variesSpecial cases
MIPSI (Ceuta/Melilla)variesSpecial cases

Further important notes

  • Tax rate must match the code: For S, cbc:Percent must be either 19 or 7 (for Germany). For E, AE, K, or G, no percentage should be specified or it must be 0.
  • Consistency with BG-23: The category code used at line level must correspond to a matching entry in the VAT breakdown (BG-23, cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory). Otherwise, additional rules such as BR-CO-18 will be violated.
  • S with 7%: The reduced VAT rate in Germany is often represented not with AA but with S and Percent=7. Check your recipient’s requirements, as both variants occur in practice.
  • Reverse charge (AE): Use this code for supplies under Section 13b UStG. The invoice text must include the note “Steuerschuldnerschaft des Leistungsempfängers” (reverse charge: VAT liability transfers to the recipient).
  • Document level vs. line level: BR-DE-14 checks the code at line level (BT-151). The code at document level in BG-23 (BT-118) is checked by other rules but must be consistent.
  • TaxScheme/ID must always be VAT: Within cac:ClassifiedTaxCategory, cac:TaxScheme/cbc:ID must always have the value VAT.