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:IDwithincac:ClassifiedTaxCategorycontains an invalid value (e.g.,X,N,R, or other codes not defined in UNTDID 5305)cbc:IDis 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
| Code | Meaning | Typical rate | Use case |
|---|---|---|---|
S | Standard rate | 19% or 7% | Domestic supplies of goods and services |
AA | Reduced rate | 7% | Food, books, local transport |
Z | Zero rated | 0% | Certain export supplies |
E | Exempt | — | Exempt supplies (e.g., medical services) |
AE | Reverse charge | — | Reverse charge mechanism (Section 13b UStG) |
K | Intra-community supply | 0% | Supplies to businesses in other EU member states |
G | Export | 0% | Supplies to third countries |
O | Not subject to VAT | — | Supplies outside the scope of VAT |
L | IGIC (Canary Islands) | varies | Special cases |
M | IPSI (Ceuta/Melilla) | varies | Special cases |
Further important notes
- Tax rate must match the code: For
S,cbc:Percentmust be either19or7(for Germany). ForE,AE,K, orG, no percentage should be specified or it must be0. - 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. Swith 7%: The reduced VAT rate in Germany is often represented not withAAbut withSandPercent=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/IDmust always beVAT: Withincac:ClassifiedTaxCategory,cac:TaxScheme/cbc:IDmust always have the valueVAT.