BR-Z-01: An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or…
Peppol BIS Billing 3.0.21 · UBL
Original rule text
[BR-Z-01]-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 "Zero rated" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated".
((exists(//cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'Z']) or exists(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'Z'])) and (count(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'Z']) = 1)) or (not(//cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'Z']) and not(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'Z']))BR-Z-01 is a fatal rule in the business layer of Peppol BIS Billing 3.0.21 · UBL. An invoice that breaks it is rejected. It refers to BG-25, BG-20, BG-21, BT-151, BT-95, BT-102, BG-23, BT-118.
What this rule requires
For both UBL and CII, the rule requires that if any invoice line, document-level allowance, or document-level charge carries a zero-rated VAT category code (code 'Z'), then the VAT breakdown must contain exactly one zero-rated category. In UBL, the condition checks for Z in cac:TaxCategory or cac:ClassifiedTaxCategory under cac:TaxScheme with ID VAT, and then counts cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory with the same cbc:ID equal to Z; it must be exactly 1 when any such line/allowance/charge exists. Notably, in UBL, a zero-rated breakdown is permitted even if no line/allowance/charge has Z, because the test only enforces the count when a Z exists on those elements. In CII, the rule is stricter: the test passes only if there are no Z categories anywhere (header ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax, line ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax, or ram:CategoryTradeTax) or if there is exactly one header Z category and at least one line or category Z category exists. Thus, CII additionally requires that if the breakdown has a Z, then a line/allowance/charge must also have Z.
How to fix
For UBL: If any line, allowance, or charge uses VAT category code Z, ensure the VAT breakdown (cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory) contains exactly one cac:TaxCategory with cbc:ID equal to Z (and cac:TaxScheme/cbc:ID equal to VAT). If there are multiple such breakdown entries, reduce them to one; if none, add one. If no line/allowance/charge uses Z, no breakdown entry with Z is required, but having one is not prohibited by this rule. For CII: Ensure that either there are no CategoryCode='Z' entries anywhere (header, line, or category trade tax), or that the header breakdown (ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax) has exactly one CategoryCode='Z' entry and at least one line (ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax) or allowance/charge (ram:CategoryTradeTax) also has CategoryCode='Z'. In CII, a header Z without any line/category Z fails, so either remove the header Z or add a corresponding line/category Z.
Guidance on this rule. The original text above is authoritative.
Where to go next
No published Peppol BIS Billing UBL release comparison lists a change to BR-Z-01.
Validate an invoice against these rules · All release changes