# BR-Z-06: Set the VAT rate of a Zero rated document allowance to 0

A document-level allowance in VAT category `Z` must carry a rate of exactly 0. A positive rate, such as the standard 20, or a missing rate fails.

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

## The short answer

`BR-Z-06` fails on each allowance whose `cac:TaxCategory` has `cbc:ID` of `Z` under the `VAT` scheme and a `cbc:Percent` that is not 0. If the discount reduces Zero rated supplies, set its rate to `0`; the volume discount in the recorded example had been given the standard rate of 20.

A rate above zero says the discount reduces taxed supplies. If that is so, the allowance belongs in the category of those supplies, not in `Z`.

## What the rule checks

Each Zero rated `cac:TaxCategory` under the `VAT` scheme inside an allowance is checked, whether the allowance is at document level or inside a line. When tried, a Zero rated line allowance at 20 reported this rule at the line's `cac:AllowanceCharge`, plus the warning `UBL-CR-558`.

The discount rate is compared with zero as a decimal number. When tried, `0.00` passed, and `5` failed just as the recorded `20` does.

A missing rate fails as well. With `cbc:Percent` removed from the volume discount, the invoice reported this rule and nothing else when tried.

The wrong rate does not disturb the Zero rated taxable amount. `BR-Z-08` deducts every Zero rated allowance whatever its rate, which is why the recorded example reports this rule alone.

| Term | Meaning | UBL element |
|---|---|---|
| BT-95 | Document level allowance VAT category code | `cac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:ID` |
| BT-96 | Document level allowance VAT rate | `cac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:Percent` |

## How an integration ends up here

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

- The rate for document-level allowances is taken from a default tax setting, the standard 20, instead of from the category of the discounted supplies.
- The discount was first created as Standard rated and moved to `Z` later, with only the category updated.
- The rate is looked up per item, and a document-level discount has no item, so the export falls back to a country default or leaves the element out.
- A discount spanning Standard rated and Zero rated goods is written as one allowance with the category of one group and the rate of the other.

## How to fix it

1. Confirm which supplies the allowance reduces. If they are Zero rated, the allowance is Zero rated too.
2. Set `cbc:Percent` in the allowance's `cac:TaxCategory` to `0`, keeping `cbc:ID` of `Z` and the `VAT` scheme.
3. If it reduces taxed supplies instead, change the category to theirs, such as `S` with its rate, move the amount to that breakdown, and recalculate the Zero rated taxable amount without it.
4. If the discount covers both kinds of supply, split it into one allowance per category and rate.

## Before and after

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

Fragment of the failing invoice: the Zero rated volume discount at 20

```xml
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Volume discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="GBP">2.50</cbc:Amount>
  <cac:TaxCategory>
    <cbc:ID>Z</cbc:ID>
    <cbc:Percent>20</cbc:Percent>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>
```

Fragment of the corrected invoice: the Zero rated volume discount at 0

```xml
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Volume discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="GBP">2.50</cbc:Amount>
  <cac:TaxCategory>
    <cbc:ID>Z</cbc:ID>
    <cbc:Percent>0</cbc:Percent>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>
```

Only the `cbc:Percent` of the volume discount differs: `20` in the failing invoice, `0` in the corrected one. The failing document reports only `BR-Z-06`. The Zero rated breakdown of 22.50 is right in both, because the Zero rated taxable amount deducts every Zero rated allowance without looking at its rate.

### What the validator reported

- The failing invoice reports **BR-Z-06**. The corrected document passes every layer with no findings.
  - [Download the failing XML](https://ironfang.com/finance/rule-examples/BR-Z-06-invalid.xml)
  - [Download the corrected XML](https://ironfang.com/finance/rule-examples/zero-rated-allowance-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 credit note form of the recorded example reported this rule alone when tried.
- Reported by the EN 16931 layer as a fatal finding at the allowance's `cac:TaxCategory`, one per allowance.
- Charges have the same requirement under `BR-Z-07`, and Zero rated lines under `BR-Z-05`. A Standard rated allowance needs the opposite, a rate above zero, under `BR-S-06`.

## Related rules

- [BR-Z-07 requires a rate of 0 on Zero rated document-level charges](https://ironfang.com/docs/finance/rules/BR-Z-07.md)
- [BR-Z-05 requires a rate of 0 on Zero rated lines](https://ironfang.com/docs/finance/rules/BR-Z-05.md)
- [BR-S-06 requires a Standard rated allowance to have a rate above zero](https://ironfang.com/docs/finance/rules/BR-S-06.md)
- [BR-Z-08 deducts Zero rated allowances from the Zero rated taxable amount](https://ironfang.com/docs/finance/rules/BR-Z-08.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-Z-06](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-Z-06/) 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-Z-06)
- [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
