# BR-E-01 Exempt VAT requires exactly one exempt VAT breakdown

An invoice that contains an invoice line (BG-25), a document level allowance (BG-20) or a document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Exempt from VAT" (E) shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT".

## Problem Description

> **ERROR**: EN 16931 VAT category rule

## Context and Significance

The VAT breakdown must show each VAT category used on lines, allowances and charges, so that the exempt base can be checked against the lines. In practice, the error occurs when software summarises exempt lines in an S breakdown at 0 % or creates one E breakdown per line.

## Solution

Add a single cac:TaxSubtotal (BG-23) with category E that sums all exempt lines, allowances and charges: taxable amount (BT-116), VAT amount 0.00 (BT-117), rate 0 (BT-119) and an exemption reason (BT-120 or BT-121). Merge several E breakdowns into one.

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

## Valid Examples

- Lines with category E and one BG-23 breakdown with BT-118 = E

## Invalid Examples

- Lines with category E, but the breakdown contains only an S category
- Two separate BG-23 breakdowns with BT-118 = E

## Code Examples

### Valid XML
```
<cac:TaxTotal>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>E</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <cbc:TaxExemptionReasonCode>VATEX-EU-132</cbc:TaxExemptionReasonCode>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>
```

### Invalid XML
```
<cac:TaxTotal>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">60.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>E</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <cbc:TaxExemptionReasonCode>VATEX-EU-132</cbc:TaxExemptionReasonCode>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">40.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>E</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <cbc:TaxExemptionReasonCode>VATEX-EU-132</cbc:TaxExemptionReasonCode>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>
```

## Affected Fields

- [BT-151 Invoiced item VAT category code](/resources/xrechnung/bt-151-invoice-line-vat-category-code)
- [BT-95 Document level allowance VAT category code](/resources/xrechnung/bt-95-document-level-allowance-vat-category-code)
- [BT-102 Document level charge VAT category code](/resources/xrechnung/bt-102-document-level-charge-vat-category-code)
- [BT-118 VAT category code](/resources/xrechnung/bt-118-vat-category-code)
- [BG-23 VAT breakdown](/resources/xrechnung/bt-116-vat-category-taxable-amount)

## Related Rules

- [BR-E-05](/resources/kosit-validator-errors/br-e-05-exempt-vat-rate-must-be-zero)
- [BR-E-08](/resources/kosit-validator-errors/br-e-08-exempt-taxable-amount-sum)
- [BR-E-10](/resources/kosit-validator-errors/br-e-10-exempt-breakdown-reason-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://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [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.
