Skip to content

BR-Z-05: Set the VAT rate of a Zero rated line to 0

A line in VAT category Z must have a VAT rate of exactly 0. Any other rate on the line, or no rate element at all, fails.

EN 16931Fatal: the document is invalidVATLines and prices

The short answer

BR-Z-05 fails on each line whose cac:Item/cac:ClassifiedTaxCategory has cbc:ID of Z and a cbc:Percent other than 0. If the item is zero rated, set cbc:Percent to 0. If a positive rate really applies, as the 5 in the recorded example might suggest, the item is not zero rated and the category is the value to change.

The category and the rate contradict each other, and only the tax code in the source system says which one is right. Fix that one rather than whichever is easier to edit.

What the rule checks

Each item tax category with cbc:ID of Z under the VAT scheme is checked, in cac:InvoiceLine or cac:CreditNoteLine, and a failure is reported at that cac:ClassifiedTaxCategory.

The rate is compared with zero as a number, so 0 and 0.00 both pass. Any other value fails, whether positive or negative.

An absent rate is not read as zero. When tried, a Zero rated line with its cbc:Percent removed reported this rule.

Document-level allowances and charges have separate rules. When tried, a Zero rated document charge at 5 was reported as BR-Z-07, and a Zero rated document allowance at 5 as BR-Z-06.

TermMeaningUBL element
BT-151Invoiced item VAT category codecac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in a credit note)
BT-152Invoiced item VAT ratecac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent in a credit note)

How an integration ends up here

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

  • The line rate comes from the product record while the category comes from a separate tax code table, and the two disagree for this item.
  • An item moved between a reduced rate and zero rating, and only one of the two fields was updated.
  • The category is chosen from a zero-rated flag on the item, but the rate is copied from a country default.
  • An empty rate is serialised by omitting cbc:Percent instead of writing 0.

How to fix it

  1. Look up the item's tax code in the source system to establish whether the supply is zero rated.
  2. If it is, set cbc:Percent in the line's cac:ClassifiedTaxCategory to 0. Nothing else has to move, because the line already sits in the Zero rated breakdown.
  3. If VAT is due at a positive rate, reduced or not, change the line category to S with that rate. Move its net amount out of the Zero rated breakdown into a Standard rated breakdown for that rate, calculate the tax, and update the VAT total, the total with VAT and the amount due.
  4. Make the export take category and rate from the same tax code, so they cannot drift apart again.

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: line 2 is in category Z with a rate of 5

<cac:InvoiceLine>
  <cbc:ID>2</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">10.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example zero-rated item</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>Z</cbc:ID>
      <cbc:Percent>5</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <!-- price omitted from this fragment -->
</cac:InvoiceLine>

Fragment of the corrected invoice: the Zero rated line at 0

<cac:InvoiceLine>
  <cbc:ID>2</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">10.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example zero-rated item</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>Z</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <!-- price omitted from this fragment -->
</cac:InvoiceLine>

Only the cbc:Percent of line 2 differs: 5 in the failing invoice, 0 in the corrected one. The failing document reports only BR-Z-05. Its Zero rated breakdown of 10.00 still matches, because the Zero rated taxable amount rule, BR-Z-08, totals every line in category Z without grouping them by 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. A Zero rated cac:CreditNoteLine at 5 reported the same rule when tried.
  • Reported by the EN 16931 layer as a fatal finding for each offending line.
  • Reverse-charge lines carry the same requirement under BR-AE-05. Standard rated lines need the opposite, a rate above zero, under BR-S-05.
  • The Zero rated breakdown has rules of its own: BR-Z-01 requires exactly one, and BR-Z-10 forbids an exemption reason in it.

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-24.1: source checked 2026-09-24, explanation last updated 2026-09-24.

The official definition of BR-Z-05 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.