BR-42: Grund eines Positionsnachlasses fehlt

Jeder Nachlass auf Positionsebene (BG-27) braucht einen Grund als Text (BT-139) oder Code (BT-140).

Regelwerk
EN 16931 (CEN)
Syntax
UBL und CII
Betroffene Felder
BG-27, BT-139, BT-140

Offizieller Regeltext

Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).

Regeltext aus den Validierungsartefakten zu EN 16931 in Version 1.3.16 (CEN/TC 434, veröffentlicht von ConnectingEurope), Lizenz EUPL 1.2; enthalten in der XRechnung-Validatorkonfiguration 2026-08-31.

Schweregrad

Ein Verstoß führt im Szenario „XRechnung“ des KoSIT-Validators zur Ablehnung der Rechnung.

Typische Ursachen

Positionsrabatte werden nur als Betrag übertragen.

So behebst du den Fehler

Grund und/oder Code (UNTDID 5189) am Positionsnachlass ergänzen.

Der Validator meldet denselben Sachverhalt zusätzlich als BR-CO-23.

Geprüftes Beispiel: falsch und richtig

Die Auszüge stammen aus vollständigen, synthetischen Rechnungen des E-Rechnungs-Testkorpus. Geänderte Zeilen sind hervorgehoben. Beide Dateien werden in den automatischen Tests mit dem KoSIT-Validator geprüft.

Bei den Beispielen meldet der Validator außer BR-42 auch: BR-CO-23.

Beispiel in UBL

Änderung gegenüber der gültigen Rechnung: Grund und Code des Positionsnachlasses (BT-139/BT-140) entfernt.

Falsch – ab Zeile 116 · markierte Zeilen fehlen hier
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
  <cbc:Amount currencyID="EUR">29.98</cbc:Amount>
Richtig – ab Zeile 116
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Aktionsrabatt</cbc:AllowanceChargeReason>
  <cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
  <cbc:Amount currencyID="EUR">29.98</cbc:Amount>

Prüfergebnis (KoSIT-Validator 1.6.3, Konfiguration 2026-08-31): falsche Datei abgelehnt, korrigierte Datei angenommen. Meldungen zur falschen Datei:

  • BR-42 Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140). Fundstelle: /Invoice[1]/InvoiceLine[1]/AllowanceCharge[1]
  • BR-CO-23 Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both. Fundstelle: /Invoice[1]/InvoiceLine[1]/AllowanceCharge[1]

Vollständige Dateien im Testkorpus: br-42-positionsnachlass-ohne-grund_ubl.xml (falsch) und positionsrabatt_ubl.xml (richtig).

Beispiel in CII

Änderung gegenüber der gültigen Rechnung: Grund und Code des Positionsnachlasses (BT-139/BT-140) entfernt.

Falsch – ab Zeile 50 · markierte Zeilen fehlen hier
  <ram:BasisAmount>299.80</ram:BasisAmount>
  <ram:ActualAmount>29.98</ram:ActualAmount>
</ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
Richtig – ab Zeile 50
  <ram:BasisAmount>299.80</ram:BasisAmount>
  <ram:ActualAmount>29.98</ram:ActualAmount>
  <ram:ReasonCode>95</ram:ReasonCode>
  <ram:Reason>Aktionsrabatt</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedTradeSettlementLineMonetarySummation>

Prüfergebnis (KoSIT-Validator 1.6.3, Konfiguration 2026-08-31): falsche Datei abgelehnt, korrigierte Datei angenommen. Meldungen zur falschen Datei:

  • BR-42 Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140). Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/IncludedSupplyChainTradeLineItem[1]/SpecifiedLineTradeSettlement[1]/SpecifiedTradeAllowanceCharge[1]/ChargeIndicator[1]
  • BR-CO-23 Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both. Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/IncludedSupplyChainTradeLineItem[1]/SpecifiedLineTradeSettlement[1]/SpecifiedTradeAllowanceCharge[1]/ChargeIndicator[1]

Vollständige Dateien im Testkorpus: br-42-positionsnachlass-ohne-grund_cii.xml (falsch) und positionsrabatt_cii.xml (richtig).

Testdateien zu BR-42

Technische Details: Kontext und Prüfausdruck aus dem Schematron

CII

Kontext:

//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = 'false']

Prüfausdruck:

(../ram:Reason) or (../ram:ReasonCode)

UBL

Kontext:

//cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = false()] | //cac:CreditNoteLine/cac:AllowanceCharge[cbc:ChargeIndicator = false()]

Prüfausdruck:

exists(cbc:AllowanceChargeReason) or exists(cbc:AllowanceChargeReasonCode)

Technische Formatprüfung nach XRechnung 3.0.2; keine steuerliche oder rechtliche Beratung.