BR-44: Grund eines Positionszuschlags fehlt
Jeder Zuschlag auf Positionsebene (BG-28) braucht einen Grund als Text (BT-144) oder Code (BT-145).
- Regelwerk
- EN 16931 (CEN)
- Syntax
- UBL und CII
- Betroffene Felder
- BG-28, BT-144, BT-145
Offizieller Regeltext
CII: Each Invoice line charge (BG-28) shall have an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145).
UBL: Each Invoice line charge shall have an Invoice line charge reason or an invoice line allowance reason code.
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
- UBL-Rechnung: Fehler
- UBL-Gutschrift: Fehler
- CII: Fehler
Ein Verstoß führt im Szenario „XRechnung“ des KoSIT-Validators zur Ablehnung der Rechnung.
Typische Ursachen
Positionszuschläge werden nur als Betrag übertragen.
So behebst du den Fehler
Grund und/oder Code (UNTDID 7161) am Positionszuschlag ergänzen.
Der Validator meldet denselben Sachverhalt zusätzlich als BR-CO-24.
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-44 auch: BR-CO-24.
Beispiel in UBL
Änderung gegenüber der gültigen Rechnung: Grund und Code des Positionszuschlags (BT-144/BT-145) entfernt.
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">4.00</cbc:Amount>
</cac:AllowanceCharge><cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>PC</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Sonderverpackung</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">4.00</cbc:Amount>
</cac:AllowanceCharge>Prüfergebnis (KoSIT-Validator 1.6.3, Konfiguration 2026-08-31): falsche Datei abgelehnt, korrigierte Datei angenommen. Meldungen zur falschen Datei:
Vollständige Dateien im Testkorpus: br-44-positionszuschlag-ohne-grund_ubl.xml (falsch) und positionsrabatt_ubl.xml (richtig).
Beispiel in CII
Änderung gegenüber der gültigen Rechnung: Grund und Code des Positionszuschlags (BT-144/BT-145) entfernt.
</ram:ChargeIndicator>
<ram:ActualAmount>4.00</ram:ActualAmount>
</ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedTradeSettlementLineMonetarySummation> </ram:ChargeIndicator>
<ram:ActualAmount>4.00</ram:ActualAmount>
<ram:ReasonCode>PC</ram:ReasonCode>
<ram:Reason>Sonderverpackung</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:
Vollständige Dateien im Testkorpus: br-44-positionszuschlag-ohne-grund_cii.xml (falsch) und positionsrabatt_cii.xml (richtig).
Testdateien zu BR-44
- br-44-positionszuschlag-ohne-grund_ubl.xml – Grund und Code des Positionszuschlags (BT-144/BT-145) entfernt
- br-44-positionszuschlag-ohne-grund_cii.xml – Grund und Code des Positionszuschlags (BT-144/BT-145) entfernt
Technische Details: Kontext und Prüfausdruck aus dem Schematron
CII
Kontext:
//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = 'true']
Prüfausdruck:
(../ram:Reason) or (../ram:ReasonCode)
UBL
Kontext:
//cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = true()] | //cac:CreditNoteLine/cac:AllowanceCharge[cbc:ChargeIndicator = true()]
Prüfausdruck:
exists(cbc:AllowanceChargeReason) or exists(cbc:AllowanceChargeReasonCode)
Technische Formatprüfung nach XRechnung 3.0.2; keine steuerliche oder rechtliche Beratung.