# BR-CO-21 La remise au niveau du document exige un motif ou un code de motif

Chaque remise au niveau du document (BG-20) doit contenir un motif de remise (BT-97) ou un code de motif de remise (BT-98), ou les deux.

## Description du problème

> **ERREUR**: Règle de calcul et de cohérence EN 16931 (BR-CO)

## Contexte et importance

Cette règle de la norme EN 16931 exige que chaque remise au niveau du document soit motivée, par un texte ou un code, afin que l’acheteur comprenne la déduction et la comptabilise correctement. Cas typique : une remise globale saisie dans l’ERP comme simple montant ou pourcentage, sans libellé ni code.

## Solution

Pour chaque remise au niveau du document, renseignez le motif (BT-97) et/ou le code de motif (BT-98) de la liste UNCL 5189 : cbc:AllowanceChargeReason / cbc:AllowanceChargeReasonCode en UBL, ram:Reason / ram:ReasonCode dans ram:SpecifiedTradeAllowanceCharge en CII.

- [Valider le XML](/fr/xrechnung-validator?source=resource&rule=BR-CO-21)
- [Convertir la facture](/fr/pdf-to-xrechnung?source=resource&rule=BR-CO-21)

## Exemples valides

- Remise au niveau du document avec BT-98 = 95 et BT-97 = « Remise sur volume »

## Exemples invalides

- Montant de remise 10,00 sans BT-97 ni BT-98

## Exemples de code

### XML valide
```
<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>
```

### XML invalide
```
<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>
```

## Champs concernés

- [BG-20 Remises au niveau du document](/resources/xrechnung/bt-92-document-level-allowance-amount)
- [BT-97 Motif de remise au niveau du document](/resources/xrechnung/bt-97-document-level-allowance-reason)
- [BT-98 Code du motif de remise au niveau du document](/resources/xrechnung/bt-98-document-level-allowance-reason-code)

## Règles associées

- [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)

## Outils de validation

- [Validateur KoSIT officiel](https://github.com/itplr-kosit/validator): Exécutez le validateur officiel du KoSIT avec la configuration XRechnung pour contrôler les règles EN 16931 et XRechnung.
- [Convertir un PDF en XRechnung](/pdf-to-xrechnung): Repérez les erreurs de validation pendant la conversion et vérifiez chaque correction.

## Ressources associées

- [Spécification officielle](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [Suite de tests](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Toutes les erreurs de validation](/resources/kosit-validator-errors): Vue d’ensemble des règles de validation EN 16931, XRechnung et Peppol expliquées ici.
