# BR-IC-03 Intra-community allowance needs seller and buyer VAT identifiers

An invoice with a document level allowance (BG-20) whose document level allowance VAT category code (BT-95) is "Intra-community supply" shall contain the Seller VAT identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).

## Problem Description

> **ERROR**: EN 16931 VAT category rule

## Context and Significance

A document level allowance with category K reduces the taxable base of the intra-community supply, so the same requirements apply as for K lines: the VAT identifier of the seller (or tax representative) and of the buyer. A tax number (BT-32) or legal registration number (BT-47) is not enough. In practice, the error occurs when a document level discount on a cross-border invoice is exported with category K while the buyer’s VAT identifier is missing.

## Solution

When a document level allowance uses category K, ensure the seller VAT identifier (BT-31, or BT-63) and the buyer VAT identifier (BT-48) are both present.

- [Validate XML](/en/xrechnung-validator?source=resource&rule=BR-IC-03)
- [Convert invoice](/en/pdf-to-xrechnung?source=resource&rule=BR-IC-03)

## Valid Examples

- Category K document allowance with BT-31 = DE123456789 and BT-48 = NL123456789B01

## Invalid Examples

- Category K document allowance with the buyer VAT identifier (BT-48) missing

## Code Examples

### Valid XML
```
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:Amount currencyID="EUR">50.00</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>
<cac:AccountingSupplierParty>
  <cac:Party>
    <cac:PartyTaxScheme>
      <cbc:CompanyID>DE123456789</cbc:CompanyID>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:PartyTaxScheme>
  </cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
  <cac:Party>
    <cac:PartyTaxScheme>
      <cbc:CompanyID>NL123456789B01</cbc:CompanyID>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:PartyTaxScheme>
  </cac:Party>
</cac:AccountingCustomerParty>
```

### Invalid XML
```
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:Amount currencyID="EUR">50.00</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>
<cac:AccountingSupplierParty>
  <cac:Party>
    <cac:PartyTaxScheme>
      <cbc:CompanyID>DE123456789</cbc:CompanyID>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:PartyTaxScheme>
  </cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty><cac:Party></cac:Party></cac:AccountingCustomerParty>
```

## Affected Fields

- [BT-95 Document level allowance VAT category code](/resources/xrechnung/bt-95-document-level-allowance-vat-category-code)
- [BT-31 Seller VAT identifier](/resources/xrechnung/bt-31-seller-vat-identifier)
- [BT-48 Buyer VAT identifier](/resources/xrechnung/bt-48-buyer-vat-identifier)

## Related Rules

- [BR-IC-02](/resources/kosit-validator-errors/br-ic-02-line-seller-buyer-vat-id-required)
- [BR-IC-04](/resources/kosit-validator-errors/br-ic-04-charge-seller-buyer-vat-id-required)
- [BR-IC-06](/resources/kosit-validator-errors/br-ic-06-allowance-zero-vat-rate)

## Validation Tools

- [Official KoSIT Validator](https://github.com/itplr-kosit/validator): Run the official KoSIT validator with the XRechnung configuration to check EN 16931 and XRechnung rules.
- [Convert PDF to XRechnung](/pdf-to-xrechnung): Find validation errors during conversion and review each correction.

## Related Resources

- [Official Specification](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [Test Suite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [All validation errors](/resources/kosit-validator-errors): Overview of the EN 16931, XRechnung and Peppol validation rules explained here.
