# BR-G-06: Give an export allowance a VAT rate of 0

A document-level allowance in category `G` must state a VAT rate, and that rate must be 0. An allowance with no rate fails too.

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

## The short answer

`BR-G-06` fails when a `cac:AllowanceCharge` with `cbc:ChargeIndicator` of `false` has a `cac:TaxCategory` of `G` whose `cbc:Percent` is missing or not zero. The recorded volume discount of 2.50 names category `G` but gives no rate at all; add `<cbc:Percent>0</cbc:Percent>` after the category code.

The discount reduces the export taxable amount, so it is zero rated like the export lines it discounts.

## What the rule checks

The rule runs on every allowance `cac:TaxCategory` with `cbc:ID` of `G` under the `VAT` scheme, reads its `cbc:Percent` as a decimal, and places the finding on that `cac:TaxCategory`.

An absent rate counts as not zero. Leaving out `cbc:Percent`, as the failing invoice does, reported this rule and nothing else.

A positive rate fails the same way. When tried, the discount at `20` reported only this rule; the `G` breakdown was unaffected because its taxable amount is built from amounts, not rates.

Charges are outside this rule: a `cac:AllowanceCharge` with `cbc:ChargeIndicator` of `true` in `G` is checked by `BR-G-07`.

| Term | Meaning | UBL element |
|---|---|---|
| BT-95 | Document level allowance VAT category code | `cac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:ID` |
| BT-96 | Document level allowance VAT rate | `cac: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 allowance tax category is written with the category code only, because the mapping treats the rate as optional when no tax is due.
- The discount takes the rate of the seller's default tax code, 20, while its category is copied from the export lines.
- Allowances come from a promotions module that writes `cbc:Percent` only when it is greater than zero.

## How to fix it

1. In each root-level allowance with category `G`, write `cbc:Percent` with the value `0` directly after `cbc:ID` and before `cac:TaxScheme`.
2. Where the rate comes from a tax code, make sure the export code yields 0 rather than nothing.
3. If the discount belongs to a Standard rated part of the invoice, give it `S` and that rate instead, and move its amount to the Standard rated breakdown.

## 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 discount of 2.50 in category G with no rate

```xml
<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>G</cbc:ID>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>
```

Fragment of the corrected invoice: the same discount at a rate of 0

```xml
<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>G</cbc:ID>
    <cbc:Percent>0</cbc:Percent>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>
```

The corrected invoice has `<cbc:Percent>0</cbc:Percent>` in the tax category of the discount of 2.50; the failing invoice has no rate there and is otherwise the same. The failing document reports only `BR-G-06`.

### What the validator reported

- The failing invoice reports **BR-G-06**. The corrected document passes every layer with no findings.
  - [Download the failing XML](https://ironfang.com/finance/rule-examples/BR-G-06-invalid.xml)
  - [Download the corrected XML](https://ironfang.com/finance/rule-examples/export-allowance-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`. The failing invoice turned into a credit note reported the same finding at the same allowance when tried.
- Reported by the EN 16931 layer as a fatal finding.
- A document with a `G` allowance also needs a seller VAT identifier (`BR-G-03`), and the allowance must be subtracted in the export taxable amount (`BR-G-08`).

## Related rules

- [BR-G-07 is the rate check for a document-level charge in G](https://ironfang.com/docs/finance/rules/BR-G-07.md)
- [BR-G-03 requires a seller VAT identifier on documents with a G allowance](https://ironfang.com/docs/finance/rules/BR-G-03.md)
- [BR-G-08 subtracts the G allowance from the export taxable amount](https://ironfang.com/docs/finance/rules/BR-G-08.md)
- [BR-G-05 requires a rate of 0 on export lines](https://ironfang.com/docs/finance/rules/BR-G-05.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-G-06](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-G-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.

## Links

- [This rule as a web page](https://ironfang.com/docs/finance/rules/BR-G-06)
- [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
