Skip to content

Ironfang Finance - Rule reference

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.

EN 16931Fatal: the document is invalidVATAllowances and charges

On this page

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.

TermMeaningUBL element
BT-95Document level allowance VAT category codecac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:ID
BT-96Document level allowance VAT ratecac: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.

Validate your corrected invoice

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

<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

<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

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.

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 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.