Counterfoil rule note

BR-AE-01

Quoted from a public specification. This page is not a validator, and it is not tax, legal, or accounting advice.

Country
EU
Syntax
UBL
Severity
fatal
Last verified
2026-10-17

Official statement

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 "Reverse charge" shall contain in the VAT Breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge".

Source: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-AE-01/

Peppol BIS Billing 3.0, May 2026 release, EN 16931 model bound to UBL

Severity note: fatal, from the Flag column of the Peppol BIS Billing 3.0 UBL rules index retrieved 2026-10-17.

Plain-language reading

If a line, a document allowance, or a document charge uses the VAT category "Reverse charge", the VAT breakdown must contain exactly one VAT category code equal to VAT reverse charge. The published UBL test compares that code to AE.

What to change

Add one VAT breakdown (BG-23) with category code AE, and do not add a second AE breakdown.

Illustration

Illustration of the condition in the official statement. Not an example published by the source.

Fails the stated condition. A line, allowance, or charge uses VAT category code AE, and the VAT breakdown has no AE category or has two.

Passes the stated condition. One of those uses AE, and the VAT breakdown has exactly one AE category.

Published context and test

Copied from the source. Not reimplemented on this page.

/ubl:Invoice | /cn:CreditNote
((exists(//cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'AE']) or exists(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'AE'])) and (count(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'AE']) = 1)) or (not(//cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'AE']) and not(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'AE']))

All rule notes · JSON · Markdown · llms.txt · Invoice page · Privacy