BR-38: Grund eines Belegzuschlags fehlt

Jeder Zuschlag auf Belegebene (BG-21) braucht einen Grund als Text (BT-104) oder Code (BT-105).

Regelwerk
EN 16931 (CEN)
Syntax
UBL und CII
Betroffene Felder
BG-21, BT-104, BT-105

Offizieller Regeltext

Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).

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

Der Zuschlag wird nur als Betrag exportiert.

So behebst du den Fehler

Einen Grund wie „Versandkosten“ angeben und/oder einen Code aus UNTDID 7161 (etwa FC für Fracht).

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

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-38 auch: BR-CO-22.

Beispiel in UBL

Änderung gegenüber der gültigen Rechnung: Grund und Code des Belegzuschlags (BT-104/BT-105) entfernt.

Falsch – ab Zeile 107 · markierte Zeilen fehlen hier
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:Amount currencyID="EUR">12.50</cbc:Amount>
  <cac:TaxCategory>
Richtig – ab Zeile 107
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>FC</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Versandkosten</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="EUR">12.50</cbc:Amount>
  <cac:TaxCategory>

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

  • BR-38 Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105). Fundstelle: /Invoice[1]/AllowanceCharge[2]
  • BR-CO-22 Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both. Fundstelle: /Invoice[1]/AllowanceCharge[2]

Vollständige Dateien im Testkorpus: br-38-zuschlag-ohne-grund_ubl.xml (falsch) und belegrabatt_ubl.xml (richtig).

Beispiel in CII

Änderung gegenüber der gültigen Rechnung: Grund und Code des Belegzuschlags (BT-104/BT-105) entfernt.

Falsch – ab Zeile 209 · markierte Zeilen fehlen hier
</ram:ChargeIndicator>
<ram:ActualAmount>12.50</ram:ActualAmount>
<ram:CategoryTradeTax>
  <ram:TypeCode>VAT</ram:TypeCode>
Richtig – ab Zeile 209
</ram:ChargeIndicator>
<ram:ActualAmount>12.50</ram:ActualAmount>
<ram:ReasonCode>FC</ram:ReasonCode>
<ram:Reason>Versandkosten</ram:Reason>
<ram:CategoryTradeTax>
  <ram:TypeCode>VAT</ram:TypeCode>

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

  • BR-38 Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105). Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/ApplicableHeaderTradeSettlement[1]/SpecifiedTradeAllowanceCharge[2]/ChargeIndicator[1]
  • BR-CO-22 Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both. Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/ApplicableHeaderTradeSettlement[1]/SpecifiedTradeAllowanceCharge[2]/ChargeIndicator[1]

Vollständige Dateien im Testkorpus: br-38-zuschlag-ohne-grund_cii.xml (falsch) und belegrabatt_cii.xml (richtig).

Testdateien zu BR-38

Technische Details: Kontext und Prüfausdruck aus dem Schematron

CII

Kontext:

//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator='true']

Prüfausdruck:

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

UBL

Kontext:

/ubl:Invoice/cac:AllowanceCharge[cbc:ChargeIndicator = true()] | /cn:CreditNote/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.