# BR-CO-23 La remise de ligne exige un motif ou un code de motif

Chaque remise de ligne de facture (BG-27) doit contenir un motif de remise de ligne (BT-139) ou un code de motif de remise de ligne (BT-140), 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 est l’équivalent de BR-CO-21 au niveau de la ligne : chaque remise de ligne (UBL : cac:InvoiceLine/cac:AllowanceCharge avec cbc:ChargeIndicator = false) exige un motif ou un code de motif. Elle ne s’applique pas au rabais sur le prix de l’article (cac:Price/cac:AllowanceCharge, BT-147), qui n’exige aucun motif. Cas typique : une remise de ligne en pourcentage exportée sans libellé.

## Solution

Pour chaque remise sur ligne de facture, renseignez le motif (BT-139) et/ou le code de motif (BT-140) : cbc:AllowanceChargeReason / cbc:AllowanceChargeReasonCode dans cac:InvoiceLine/cac:AllowanceCharge en UBL, ram:Reason / ram:ReasonCode dans ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge en CII.

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

## Exemples valides

- Remise de ligne avec BT-140 = 95 et BT-139 = « Remise sur échantillons »

## Exemples invalides

- Montant de remise de ligne 2,00 sans BT-139 ni BT-140

## Exemples de code

### XML valide
```
<cac:InvoiceLine>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
    <cbc:AllowanceChargeReason>Sample discount</cbc:AllowanceChargeReason>
    <cbc:Amount currencyID="EUR">2.00</cbc:Amount>
  </cac:AllowanceCharge>
</cac:InvoiceLine>
```

### XML invalide
```
<cac:InvoiceLine>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">2.00</cbc:Amount>
  </cac:AllowanceCharge>
</cac:InvoiceLine>
```

## Champs concernés

- [BG-27 Remises de ligne de facture](/resources/xrechnung/bt-136-invoice-line-allowance-amount)
- [BT-139 Motif de remise de ligne](/resources/xrechnung/bt-139-invoice-line-allowance-reason)
- [BT-140 Code du motif de remise de ligne](/resources/xrechnung/bt-140-invoice-line-allowance-reason-code)

## Règles associées

- [BR-CO-07](/resources/kosit-validator-errors/br-co-07-line-allowance-reason-code-match)
- [BR-CO-21](/resources/kosit-validator-errors/br-co-21-document-allowance-reason-required)
- [BR-CO-24](/resources/kosit-validator-errors/br-co-24-line-charge-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.
