# BR-CO-21 Korting op documentniveau vereist een reden of redencode

Elke korting op documentniveau (BG-20) moet een reden voor de korting (BT-97) of een redencode (BT-98) bevatten, of beide.

## Probleembeschrijving

> **FOUT**: Reken- en consistentieregel van EN 16931 (BR-CO)

## Context en betekenis

Elke korting op documentniveau (UBL: cac:AllowanceCharge met cbc:ChargeIndicator = false) heeft een reden in tekst of een redencode nodig, zodat de koper ziet waarvoor de korting geldt en die juist kan boeken. De fout ontstaat vaak wanneer het ERP alleen een kortingsbedrag of -percentage exporteert, zonder omschrijving.

## Oplossing

Voeg voor elke korting op documentniveau een reden (BT-97) en/of een redencode (BT-98) uit UNCL 5189 toe: cbc:AllowanceChargeReason / cbc:AllowanceChargeReasonCode in UBL, ram:Reason / ram:ReasonCode in ram:SpecifiedTradeAllowanceCharge in CII.

- [XML valideren](/nl/xrechnung-validator?source=resource&rule=BR-CO-21)
- [Factuur converteren](/nl/pdf-to-xrechnung?source=resource&rule=BR-CO-21)

## Geldige voorbeelden

- Korting op documentniveau met BT-98 = 95 en BT-97 = "Volumekorting"

## Ongeldige voorbeelden

- Kortingsbedrag 10,00 zonder BT-97 en zonder BT-98

## Codevoorbeelden

### Geldig XML
```
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Volume discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="EUR">10.00</cbc:Amount>
  <cac:TaxCategory>
    <cbc:ID>S</cbc:ID>
    <cbc:Percent>19</cbc:Percent>
    <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>
```

### Ongeldig XML
```
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:Amount currencyID="EUR">10.00</cbc:Amount>
  <cac:TaxCategory>
    <cbc:ID>S</cbc:ID>
    <cbc:Percent>19</cbc:Percent>
    <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
  </cac:TaxCategory>
</cac:AllowanceCharge>
```

## Betrokken velden

- [BG-20 Kortingen op documentniveau](/resources/xrechnung/bt-92-document-level-allowance-amount)
- [BT-97 Reden korting op documentniveau](/resources/xrechnung/bt-97-document-level-allowance-reason)
- [BT-98 Redencode korting op documentniveau](/resources/xrechnung/bt-98-document-level-allowance-reason-code)

## Gerelateerde regels

- [BR-CO-05](/resources/kosit-validator-errors/br-co-05-allowance-reason-code-match)
- [BR-CO-22](/resources/kosit-validator-errors/br-co-22-document-charge-reason-required)
- [BR-CO-23](/resources/kosit-validator-errors/br-co-23-line-allowance-reason-required)

## Validatietools

- [Officiële KoSIT-validator](https://github.com/itplr-kosit/validator): Draai de officiële KoSIT-validator met de XRechnung-configuratie om EN 16931- en XRechnung-regels te controleren.
- [PDF naar XRechnung converteren](/pdf-to-xrechnung): Vind validatiefouten tijdens de conversie en controleer elke correctie.

## Gerelateerde bronnen

- [Officiële specificatie](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [Testsuite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Alle validatiefouten](/resources/kosit-validator-errors): Overzicht van de hier uitgelegde validatieregels uit EN 16931, XRechnung en Peppol.
