# BR-IC-06: Change the VAT rate on an intra-community discount to 0

A document-level allowance in category `K` must state a VAT rate of 0; a discount on an intra-community supply does not carry the seller's domestic 20.

- 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-IC-06/
- Explanation last updated: 2026-09-28

## The short answer

`BR-IC-06` fails when an allowance, `cbc:ChargeIndicator` of `false`, has tax category `K` and a `cbc:Percent` other than 0. The full pallet discount of 1.25 in the recorded example carries 20, the seller's domestic rate; change it to `0`.

Everything else about the discount is already right: it takes the `K` taxable amount from 25.00 down to 23.75, and the amount due with it.

## What the rule checks

Every `cac:TaxCategory` with `cbc:ID` of `K` and scheme `VAT` inside an allowance is tested, at document level or inside a line, and each failure is located at that `cac:TaxCategory`. When tried, a `K` allowance at 20 inside the line was reported under this rule, beside the warning `UBL-CR-558`.

An allowance without `cbc:Percent` is reported too. When tried, removing the rate from the pallet discount gave this rule as the only finding.

Charges are outside it: a `K` freight charge at 19 was reported by `BR-IC-07` when tried, not by this rule.

The discount still counts at the wrong rate. With 20 on it, the `K` taxable amount of 23.75 passed `BR-IC-08`, so this rule is the recorded example's only finding.

| 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:

- Document discounts are raised under one tax code that holds the seller's Standard rate, and only the category follows the customer.
- One discount spans Standard rated and intra-community items, and the rate of the first is used for both.
- The allowance was entered by hand in an invoicing screen that defaults the rate to 20.

## How to fix it

1. Check that the discount reduces intra-community items only. If so, keep category `K`.
2. Set `cbc:Percent` in the allowance's `cac:TaxCategory` to `0`, between `cbc:ID` and `cac:TaxScheme`.
3. If one discount covers both domestic and intra-community items, split it into one allowance per category, each with its own rate, so that each breakdown receives its share.
4. Change the default on the discount tax code so that a `K` allowance is always created at 0.

## Before and after

These are fragments, not complete documents. The complete synthetic documents they come from are linked below.

Fragment of the failing invoice: the K pallet discount at 20

```xml
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Full pallet discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="GBP">1.25</cbc:Amount>
  <cac:TaxCategory>
    <cbc:ID>K</cbc:ID>
    <cbc:Percent>20</cbc:Percent>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>
```

Fragment of the corrected invoice: the K pallet discount at 0

```xml
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Full pallet discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="GBP">1.25</cbc:Amount>
  <cac:TaxCategory>
    <cbc:ID>K</cbc:ID>
    <cbc:Percent>0</cbc:Percent>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>
```

The failing invoice gives the full pallet discount a rate of `20` and the corrected invoice gives it `0`; nothing else changes. `BR-IC-06` is the only finding in the failing document.

### What the validator reported

- The failing invoice reports **BR-IC-06**. The corrected document passes every layer with no findings.
  - [Download the failing XML](https://ironfang.com/finance/rule-examples/BR-IC-06-invalid.xml)
  - [Download the corrected XML](https://ironfang.com/finance/rule-examples/intra-community-discount-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`. Converted to a credit note, the failing invoice reported the same rule at the first `cac:AllowanceCharge` when tried.
- Reported by the EN 16931 layer, once for each `K` allowance whose rate is not zero.
- A `K` allowance also requires both VAT identifiers under `BR-IC-03`. Reverse-charge allowances have the same zero-rate requirement under `BR-AE-06`.

## Related rules

- [BR-IC-05 is the zero-rate rule for the K lines the discount reduces](https://ironfang.com/docs/finance/rules/BR-IC-05.md)
- [BR-IC-07 applies the same rate of 0 to a K document charge](https://ironfang.com/docs/finance/rules/BR-IC-07.md)
- [BR-AE-06 is the reverse-charge counterpart for document allowances](https://ironfang.com/docs/finance/rules/BR-AE-06.md)
- [BR-IC-03 requires the seller and buyer VAT identifiers whenever a K allowance is present](https://ironfang.com/docs/finance/rules/BR-IC-03.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-IC-06](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-IC-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-IC-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
