# BR-DE-14 VAT category rate must be provided

In XRechnung, every VAT breakdown group (BG-23 / VAT BREAKDOWN) must contain the VAT category rate (BT-119) expressed as a percentage. While the base European standard EN 16931 allows the percentage to be omitted in specific non-taxable or exempt scenarios (such as reverse charge AE or exempt E), the German XRechnung profile strictly enforces the presence of BT-119 (e.g. 0.00 for zero/exempt/reverse charge, or 19.00 / 7.00 for standard / reduced rates) so that automated tax calculation engines can calculate and verify tax amounts deterministically.

## Problem Description

> **ERROR**: German XRechnung rule (KoSIT, BR-DE) · XRechnung 3.0

## Context and Significance

Without BT-119, validator engines cannot execute the arithmetic consistency formula TaxAmount = round(TaxableAmount * Percent / 100). The presence of BT-119 is mandatory across all VAT breakdowns in XRechnung.

## Solution

In your ERP tax determination configuration, ensure the tax percentage is exported in all VAT breakdown subtotals. For reverse charge (code AE), export transactions (code G), zero-rated supplies (code Z), and tax-exempt sales (code E), explicitly output a rate of 0.00 in BT-119. In UBL 2.1 syntax, populate <cbc:Percent> inside <cac:TaxTotal><cac:TaxSubtotal><cac:TaxCategory>. In UN/CEFACT CII syntax, populate <ram:RateApplicablePercent> inside <ram:ApplicableHeaderTradeSettlement><ram:ApplicableTradeTax>.

- [Validate XML](/en/xrechnung-validator?source=resource&rule=BR-DE-14)
- [Convert invoice](/en/pdf-to-xrechnung?source=resource&rule=BR-DE-14)

## Valid Examples

- Standard rate VAT breakdown with BT-118 = "S", BT-119 = 19.00, BT-116 = 100.00, BT-117 = 19.00
- Reverse charge VAT breakdown with BT-118 = "AE", BT-119 = 0.00, BT-116 = 500.00, BT-117 = 0.00

## Invalid Examples

- TaxSubtotal element specifies category S and taxable amount but omits the cbc:Percent element
- Reverse charge breakdown (category AE) exported without rate percentage element under the assumption that zero rate is implicit

## Code Examples

### Valid XML
```
<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>
  <cac:TaxCategory>
    <cbc:ID>S</cbc:ID>
    <cbc:Percent>19.00</cbc:Percent>
    <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
  </cac:TaxCategory>
</cac:TaxSubtotal>
```

### Invalid XML
```
<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>
  <cac:TaxCategory>
    <cbc:ID>S</cbc:ID>
    <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
  </cac:TaxCategory>
</cac:TaxSubtotal>
```

## Affected Fields

- [BT-119 VAT category rate](/resources/xrechnung/bt-119-vat-category-rate)
- [BG-23 VAT breakdown](/resources/xrechnung/bt-116-vat-category-taxable-amount)
- [BT-118 VAT category code](/resources/xrechnung/bt-118-vat-category-code)
- [BT-116 VAT category taxable amount](/resources/xrechnung/bt-116-vat-category-taxable-amount)

## Related Rules

- [BR-48](/resources/kosit-validator-errors/br-48-vat-breakdown-category-rate-required)

## Validation Tools

- [Official KoSIT Validator](https://github.com/itplr-kosit/validator): Run the official KoSIT validator with the XRechnung configuration to check EN 16931 and XRechnung rules.
- [Convert PDF to XRechnung](/pdf-to-xrechnung): Find validation errors during conversion and review each correction.

## Related Resources

- [Official Specification](https://xeinkauf.de/xrechnung/)
- [Test Suite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [All validation errors](/resources/kosit-validator-errors): Overview of the EN 16931, XRechnung and Peppol validation rules explained here.
