Skip to content

Ironfang Finance - Rule reference

BR-Z-04: Add a seller VAT identifier when a document charge is Zero rated

A document-level charge in VAT category Z, such as delivery, calls for a seller tax identifier or a tax representative with a VAT number.

EN 16931Fatal: the document is invalidVATParties and addressesAllowances and charges

On this page

The short answer

BR-Z-04 fails when a charge has a cac:TaxCategory with cbc:ID of Z under the VAT scheme and neither a seller tax identifier, under any scheme, nor a tax representative VAT identifier is given. Give the seller party its cac:PartyTaxScheme with the VAT number, as the corrected invoice does with GB123456789.

The delivery charge in the recorded example is zero rated like the line it accompanies. The rule asks for the seller's tax registration to be visible wherever that treatment is used.

What the rule checks

A cac:AllowanceCharge with cbc:ChargeIndicator of true and a Zero rated cac:TaxCategory under the VAT scheme brings the seller identification into question; the amount and rate of the charge play no part.

The seller's scheme is not examined: when tried, the delivery invoice with its seller cac:PartyTaxScheme under TAX instead of VAT passed every layer. A tax representative with GB987654321 under VAT, in place of any seller identifier, also made the failing invoice valid.

Charges inside a line are included when they carry a category. When tried, a Zero rated line charge in an invoice without a seller identifier reported this rule and BR-Z-02, and the warning UBL-CR-558.

TermMeaningUBL element
BT-102Document level charge VAT category codecac:AllowanceCharge[cbc:ChargeIndicator = true]/cac:TaxCategory/cbc:ID
BT-31Seller VAT identifiercac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID (tax scheme VAT)
BT-32Seller tax registration identifiercac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID (a tax scheme other than VAT)
BT-63Seller tax representative VAT identifiercac:TaxRepresentativeParty/cac:PartyTaxScheme/cbc:CompanyID

How an integration ends up here

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

  • Delivery is added at dispatch by a logistics system that copies the Zero rated category from the goods but has no access to the seller's VAT details.
  • The seller's VAT number is left off Zero rated documents because they carry no VAT to report.
  • The seller is represented for VAT, and cac:TaxRepresentativeParty is sent without its tax scheme.
  • Several legal entities share one export, and the one raising this document has no VAT number configured.

How to fix it

  1. Read the seller's VAT number, with its country prefix, from the seller record.
  2. Add it to the seller party as cac:PartyTaxScheme/cbc:CompanyID under the VAT tax scheme, in the UBL position after cac:PostalAddress and before cac:PartyLegalEntity.
  3. Where a tax representative handles the VAT, send its number in cac:TaxRepresentativeParty/cac:PartyTaxScheme/cbc:CompanyID with the VAT scheme.
  4. With the identifier in place, check the charge itself: BR-Z-07 requires its rate to be 0, and BR-Z-08 requires the Zero rated taxable amount to include it.

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: a Zero rated delivery charge, and a seller party with no PartyTaxScheme

<cac:AccountingSupplierParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0088">7300010000001</cbc:EndpointID>
    <!-- postal address omitted from this fragment -->
    <cac:PartyLegalEntity>
      <cbc:RegistrationName>Example Supplier Ltd</cbc:RegistrationName>
      <cbc:CompanyID>12345678</cbc:CompanyID>
    </cac:PartyLegalEntity>
  </cac:Party>
</cac:AccountingSupplierParty>

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>DL</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Delivery</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="GBP">4.00</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>

Fragment of the corrected invoice: the seller party with its VAT identifier

<cac:AccountingSupplierParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0088">7300010000001</cbc:EndpointID>
    <!-- postal address omitted from this fragment -->
    <cac:PartyTaxScheme>
      <cbc:CompanyID>GB123456789</cbc:CompanyID>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:PartyTaxScheme>
    <cac:PartyLegalEntity>
      <cbc:RegistrationName>Example Supplier Ltd</cbc:RegistrationName>
      <cbc:CompanyID>12345678</cbc:CompanyID>
    </cac:PartyLegalEntity>
  </cac:Party>
</cac:AccountingSupplierParty>

The corrected invoice carries the seller cac:PartyTaxScheme with GB123456789 under the VAT scheme, absent from the failing invoice; nothing else differs. The failing document also reports BR-Z-02, since its line is Zero rated too. The delivery charge of 4.00 and the Zero rated breakdown of 29.00 are unchanged.

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 version of the recorded example reported BR-Z-02 and BR-Z-04 when tried.
  • Reported by the EN 16931 layer as a fatal finding on the document root.
  • Zero rated allowances are covered by BR-Z-03 and Standard rated charges by BR-S-04; the same seller identifier answers each.

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