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.
| Term | Meaning | UBL element |
|---|---|---|
| BT-102 | Document level charge VAT category code | cac:AllowanceCharge[cbc:ChargeIndicator = true]/cac:TaxCategory/cbc:ID |
| BT-31 | Seller VAT identifier | cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID (tax scheme VAT) |
| BT-32 | Seller tax registration identifier | cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID (a tax scheme other than VAT) |
| BT-63 | Seller tax representative VAT identifier | cac: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:TaxRepresentativePartyis 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
- Read the seller's VAT number, with its country prefix, from the seller record.
- Add it to the seller party as
cac:PartyTaxScheme/cbc:CompanyIDunder theVATtax scheme, in the UBL position aftercac:PostalAddressand beforecac:PartyLegalEntity. - Where a tax representative handles the VAT, send its number in
cac:TaxRepresentativeParty/cac:PartyTaxScheme/cbc:CompanyIDwith theVATscheme. - With the identifier in place, check the charge itself:
BR-Z-07requires its rate to be 0, andBR-Z-08requires 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
- The failing invoice reports BR-Z-02 and BR-Z-04. The corrected document passes every layer with no findings.Download the failing XMLDownload the corrected 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
InvoiceandCreditNote. The credit note version of the recorded example reportedBR-Z-02andBR-Z-04when tried. - Reported by the EN 16931 layer as a fatal finding on the document root.
- Zero rated allowances are covered by
BR-Z-03and Standard rated charges byBR-S-04; the same seller identifier answers each.
Related rules
- BR-Z-02 reports the missing identifier for the Zero rated lines as well
- BR-Z-07 requires the Zero rated charge to carry a rate of 0
- BR-S-04 is the Standard rated version for document-level charges
- BR-Z-08 adds Zero rated charges to the Zero rated taxable amount
- Browse every rule in the reference
- Background: Understanding EN 16931 validation errors
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.

