# BR-AE-01: Add exactly one reverse-charge VAT breakdown when anything is reverse charged

A document with a reverse-charge line, document allowance or document charge needs one VAT breakdown in category `AE`, even beside other categories.

- Layer: EN 16931
- Severity: fatal (the document is invalid)
- Topics: VAT
- Official definition: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-AE-01/
- Explanation last updated: 2026-09-28

## The short answer

`BR-AE-01` fails when category `AE` is used on a line, a document-level allowance or a document-level charge and the root `cac:TaxTotal` does not hold exactly one `cac:TaxSubtotal` in category `AE`. The recorded invoice has a Standard rated line and a reverse-charge line of 40.00 but only a Standard rated breakdown; add the `AE` breakdown with 40.00 taxable, 0.00 tax, a rate of 0 and the reverse-charge reason.

A breakdown that adds nothing to the VAT total is still required. Leaving it out also takes away the figure on which the buyer accounts for the VAT itself.

## What the rule checks

The rule looks for `AE` under the `VAT` scheme in any `cac:ClassifiedTaxCategory` or `cac:TaxCategory` of the document, then counts the `AE` breakdowns directly under the root `cac:TaxTotal`. When tried, a Standard rated invoice whose only reverse-charge item was a freight charge of 4.00 reported this rule alone while it had no `AE` breakdown.

Two `AE` breakdowns fail as well. When tried, the 40.00 split into breakdowns of 25.00 and 15.00 reported this rule and `BR-AE-08` for each half, and giving the second half the code `VATEX-EU-AE` instead of the text changed nothing.

The reverse-charge amount has to be in a breakdown of its own category. When tried, turning the `AE` breakdown into a second `S` breakdown at 0 reported this rule and `BR-S-08`.

A stray `AE` breakdown goes unnoticed, since its own category counts as reverse-charge content. When tried, an `AE` breakdown of 0.00 added to an invoice with only a Standard rated line passed every layer.

| Term | Meaning | UBL element |
|---|---|---|
| BG-23 | VAT breakdown | `cac:TaxTotal/cac:TaxSubtotal` |
| BT-118 | VAT category code | `cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID` |
| BT-151 | Invoiced item VAT category code | `cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in a credit note)` |
| BT-95 | Document level allowance VAT category code | `cac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:ID` |
| BT-102 | Document level charge VAT category code | `cac:AllowanceCharge[cbc:ChargeIndicator = true]/cac:TaxCategory/cbc:ID` |

## How an integration ends up here

Possible causes, from the shape of the rule rather than from measured usage:

- The breakdown is built only for categories that carry tax, so the reverse-charge amount, with no tax on it, is skipped.
- Reverse-charge lines are mixed with Standard rated lines on one invoice, and the export was written for one category per document.
- The breakdown is grouped by rate alone, so the reverse-charge amount at 0 is merged with other amounts at 0 or lost.
- A separate `AE` breakdown is produced for each reverse-charge line or reason.

## How to fix it

1. Add up the reverse-charge content: the `cbc:LineExtensionAmount` of lines in `AE`, plus `AE` document charges, minus `AE` document allowances. In the recorded example it is the 40.00 of line 2.
2. Emit a single `cac:TaxSubtotal` with that figure as `cbc:TaxableAmount`, a `cbc:TaxAmount` of `0.00`, and a `cac:TaxCategory` with `cbc:ID` of `AE`, `cbc:Percent` of `0` and the reason text `Reverse charge` or the code `VATEX-EU-AE`.
3. Place it in the same `cac:TaxTotal` as the other breakdowns. The VAT total does not change, 5.00 in the recorded example, because the new breakdown carries no tax.
4. Where `AE` breakdowns were split, merge them into one whose taxable amount is their sum.

## Before and after

These are fragments, not complete documents. The complete synthetic documents they come from are linked below.

Fragment of the failing invoice: a reverse-charge line of 40.00, and a VAT breakdown with only the Standard rated entry

```xml
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>

<!-- line 1 omitted from this fragment: Standard rated, 25.00 at 20 -->
<cac:InvoiceLine>
  <cbc:ID>2</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">40.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example installation work</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>AE</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <!-- tax scheme omitted from this fragment -->
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <!-- price omitted from this fragment -->
</cac:InvoiceLine>
```

Fragment of the corrected invoice: a reverse-charge breakdown of 40.00 beside the Standard rated one

```xml
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">40.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>AE</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <cbc:TaxExemptionReason>Reverse charge</cbc:TaxExemptionReason>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>
```

The corrected invoice has a second `cac:TaxSubtotal`, 40.00 taxable and 0.00 tax in category `AE` with the reason `Reverse charge`; the failing invoice has only the Standard rated breakdown of 25.00. The failing document reports only `BR-AE-01`. The missing breakdown carried no tax, so the VAT total of 5.00 still matches the breakdowns, and the totals of 65.00 without VAT and 70.00 with VAT are the same in both documents.

### What the validator reported

- The failing invoice reports **BR-AE-01**. The corrected document passes every layer with no findings.
  - [Download the failing XML](https://ironfang.com/finance/rule-examples/BR-AE-01-invalid.xml)
  - [Download the corrected XML](https://ironfang.com/finance/rule-examples/mixed-reverse-charge-valid.xml)

Recorded on phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, the engine behind the free validator, using synthetic data. A recorded result is regression evidence for these documents; it is not a certification.

## Where it applies

- Applies to UBL `Invoice` and `CreditNote`. The mixed credit note without its `AE` breakdown reported the same rule when tried.
- Reported by the EN 16931 layer as one fatal finding at the document root.
- Exempt and Zero rated content have the same exactly-one rule, `BR-E-01` and `BR-Z-01`, while `BR-S-01` lets Standard rated content have one breakdown per rate.
- Once the breakdown exists, `BR-AE-08` checks its taxable amount, `BR-AE-09` its zero tax and `BR-AE-10` its reason.

## Related rules

- [BR-AE-08 checks the taxable amount of the single reverse-charge breakdown](https://ironfang.com/docs/finance/rules/BR-AE-08.md)
- [BR-E-01 is the same exactly-one rule for the exempt breakdown](https://ironfang.com/docs/finance/rules/BR-E-01.md)
- [BR-AE-10 requires the reverse-charge reason in the breakdown this rule asks for](https://ironfang.com/docs/finance/rules/BR-AE-10.md)
- [BR-S-01 is the Standard rated breakdown rule, which allows one breakdown per rate](https://ironfang.com/docs/finance/rules/BR-S-01.md)

## Scope and source

Written for Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, as applied to UBL 2.1 Invoice and CreditNote documents. Other profiles, syntaxes and releases can define this identifier differently. Guidance version 2026-09-28.1: source checked 2026-09-28, explanation last updated 2026-09-28.

[The official definition of BR-AE-01](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-AE-01/) carries the normative wording and test. This page is our explanation of it, not a copy.

Guidance does not change the engine verdict. Fixing this finding does not mean the document passes every layer, and validation does not certify legal or tax compliance or transmit a document over Peppol.

## Links

- [This rule as a web page](https://ironfang.com/docs/finance/rules/BR-AE-01)
- [Free Peppol invoice validator](https://ironfang.com/tools/peppol-validator)
- [Rule index](https://ironfang.com/docs/finance/rules.md)
- [Ironfang Finance API docs](https://ironfang.com/docs/finance)
- The same rule is available to MCP clients as the tool `finance.rule.get` on https://mcp.ironfang.com/mcp
