# BR-CO-23 Positionsnachlass benötigt Grund oder Grundcode

Jeder Positionsnachlass (BG-27) muss einen Positionsnachlassgrund (BT-139) oder einen Code des Positionsnachlassgrunds (BT-140) enthalten, oder beides.

## Problembeschreibung

> **FEHLER**: EN-16931-Rechen- und Konsistenzregel (BR-CO)

## Kontext und Bedeutung

Diese Regel ist das Gegenstück zu BR-CO-21 auf Positionsebene: Jeder Positionsnachlass (UBL: cac:InvoiceLine/cac:AllowanceCharge mit cbc:ChargeIndicator = false) braucht einen Grund oder Grundcode. Für den Artikelpreisnachlass (cac:Price/cac:AllowanceCharge, BT-147) gilt sie nicht; dieser braucht keinen Grund. Der Fehler entsteht oft, wenn ein prozentualer Positionsrabatt ohne Beschreibung exportiert wird.

## Lösung

Ergänzen Sie für jeden Positionsnachlass einen Grund (BT-139) und/oder einen Grundcode (BT-140): cbc:AllowanceChargeReason / cbc:AllowanceChargeReasonCode in cac:InvoiceLine/cac:AllowanceCharge in UBL, ram:Reason / ram:ReasonCode in ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge in CII.

- [XML validieren](/de/xrechnung-validator?source=resource&rule=BR-CO-23)
- [Rechnung konvertieren](/de/pdf-to-xrechnung?source=resource&rule=BR-CO-23)

## Gültige Beispiele

- Positionsnachlass mit BT-140 = 95 und BT-139 = "Musterrabatt"

## Ungültige Beispiele

- Positionsnachlassbetrag 2,00 ohne BT-139 und ohne BT-140

## Code-Beispiele

### Gültiges XML
```
<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>
```

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

## Betroffene Felder

- [BG-27 Positionsnachlässe](/resources/xrechnung/bt-136-invoice-line-allowance-amount)
- [BT-139 Grund des Positionsnachlasses](/resources/xrechnung/bt-139-invoice-line-allowance-reason)
- [BT-140 Code des Positionsnachlassgrunds](/resources/xrechnung/bt-140-invoice-line-allowance-reason-code)

## Verwandte Regeln

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

## Validierungstools

- [Offizieller KoSIT Validator](https://github.com/itplr-kosit/validator): Führen Sie den offiziellen KoSIT-Validator mit der XRechnung-Konfiguration aus, um EN-16931- und XRechnung-Regeln zu prüfen.
- [PDF zu XRechnung konvertieren](/pdf-to-xrechnung): Validierungsfehler beim Konvertieren erkennen, prüfen und gezielt beheben.

## Verwandte Ressourcen

- [Offizielle Spezifikation](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [Testsuite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Alle Validierungsfehler](/resources/kosit-validator-errors): Übersicht der hier erklärten Validierungsregeln aus EN 16931, XRechnung und Peppol.
