# BR-Z-02: Add the seller VAT identifier when lines are Zero rated

Zero rating still needs an identified seller: a document with a Zero rated line must carry a seller tax identifier or a tax representative VAT identifier.

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

## The short answer

`BR-Z-02` fails when a line's `cac:ClassifiedTaxCategory` has `cbc:ID` of `Z` under the `VAT` scheme and the document has neither a seller tax identifier, under any scheme, nor a tax representative VAT identifier. Add the seller's VAT number, `GB123456789` in the recorded example, in `cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID` with the `VAT` tax scheme.

A Zero rated supply is a taxable supply charged at 0. No tax is due on the invoice, but the seller's VAT registration still belongs on it.

## What the rule checks

A single Zero rated line, in `cac:InvoiceLine` or `cac:CreditNoteLine`, triggers the rule. The document then needs either a `cbc:CompanyID` in any seller `cac:PartyTaxScheme`, or a tax representative `cbc:CompanyID` under the `VAT` scheme.

Both routes worked when tried on the Zero rated invoice: a seller `cac:PartyTaxScheme` under scheme `TAX` in place of `VAT`, and no seller identifier but a tax representative with `GB987654321` under `VAT`, each passed every layer.

One missing identifier is reported once for each kind of content that needs it. When tried, the rich example invoice without its seller `cac:PartyTaxScheme` reported `BR-S-02`, `BR-S-03`, `BR-S-04` and this rule together; putting the identifier back clears all four.

The seller legal registration identifier is no substitute, although it does keep `BR-CO-26` quiet. With `12345678` removed from `cac:PartyLegalEntity` as well, the failing invoice reported `BR-CO-26` next to this rule.

| Term | Meaning | UBL element |
|---|---|---|
| BT-151 | Invoiced item VAT category code | `cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in a credit note)` |
| 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:

- The seller party is filled in from tax settings that were only set up for Standard rated sales, so a document with nothing but Zero rated lines goes out without a VAT number.
- The export skips `cac:PartyTaxScheme` when the VAT total is 0.00, on the mistaken view that no VAT identification is needed where no VAT is charged.
- A seller trading through a tax representative sends the representative without its `cac:PartyTaxScheme`.
- The VAT number is written into the legal entity or party identification elements, where it does not count.

## How to fix it

1. Take the seller's VAT registration number, prefix included, from the seller's company record.
2. Write it into the seller party as `cac:PartyTaxScheme/cbc:CompanyID` with `cac:TaxScheme/cbc:ID` of `VAT`, after `cac:PostalAddress` and before `cac:PartyLegalEntity`.
3. Emit the seller `cac:PartyTaxScheme` whenever the seller has a VAT number, whatever the VAT total of the document.
4. If the seller is not VAT registered, category `Z` is the value to question. Agree the right treatment with whoever owns the tax setup; not subject to VAT (`O`) is a different category with rules of its own.

## 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 line, and a seller party with no PartyTaxScheme

```xml
<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:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <!-- quantity and line amount omitted from this fragment -->
  <cac:Item>
    <cbc:Name>Example service</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>
```

Fragment of the corrected invoice: the seller is identified for VAT although the invoice carries no VAT

```xml
<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 has the seller `cac:PartyTaxScheme` with `GB123456789` under the `VAT` scheme, and the failing one has no `cac:PartyTaxScheme` in the seller party; nothing else differs. The failing document reports only `BR-Z-02`, because its single line is Zero rated and nothing in it is Standard rated.

### What the validator reported

- The failing invoice reports **BR-Z-02**. The corrected document passes every layer with no findings.
  - [Download the failing XML](https://ironfang.com/finance/rule-examples/BR-Z-02-invalid.xml)
  - [Download the corrected XML](https://ironfang.com/finance/rule-examples/zero-rated-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`. A Zero rated credit note without the seller identifier reported this rule alone when tried.
- Reported by the EN 16931 layer as a fatal finding at the document root, once however many lines are Zero rated.
- Zero rated document-level allowances and charges have their own versions, `BR-Z-03` and `BR-Z-04`. Standard rated lines have `BR-S-02`.

## Related rules

- [BR-S-02 requires the same seller identifier for Standard rated lines](https://ironfang.com/docs/finance/rules/BR-S-02.md)
- [BR-Z-03 applies the requirement to Zero rated document-level allowances](https://ironfang.com/docs/finance/rules/BR-Z-03.md)
- [BR-Z-04 applies the requirement to Zero rated document-level charges](https://ironfang.com/docs/finance/rules/BR-Z-04.md)
- [BR-CO-26 is reported too when the seller legal registration identifier is also missing](https://ironfang.com/docs/finance/rules/BR-CO-26.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-02](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-Z-02/) 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-02)
- [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
