BR-CL-20: Unbekannter Code für einen Zuschlag

Codes für Zuschlagsgründe (BT-105, BT-145) müssen aus der Liste UNCL 7161 stammen.

Regelwerk
EN 16931 (CEN)
Syntax
UBL und CII
Betroffene Felder
–

Offizieller Regeltext

Coded charge reasons MUST belong to the UNCL 7161 code list

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

Interne Kürzel für Versand- oder Verpackungskosten werden als Code übertragen.

So behebst du den Fehler

Einen Code aus UNCL 7161 verwenden, zum Beispiel FC (Fracht) oder PC (Verpackung), oder nur den Grund als Text angeben.

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.

Beispiel in UBL

Änderung gegenüber der gültigen Rechnung: Code des Belegzuschlags (BT-105) unbekannt.

Falsch – ab Zeile 107
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>ZZZZ</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Versandkosten</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="EUR">12.50</cbc:Amount>
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>

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

  • BR-CL-20 Coded charge reasons MUST belong to the UNCL 7161 code list Fundstelle: /Invoice[1]/AllowanceCharge[2]/AllowanceChargeReasonCode[1]

Vollständige Dateien im Testkorpus: br-cl-20-unbekannter-zuschlagsgrund_ubl.xml (falsch) und belegrabatt_ubl.xml (richtig).

Beispiel in CII

Änderung gegenüber der gültigen Rechnung: Code des Belegzuschlags (BT-105) unbekannt.

Falsch – ab Zeile 209
</ram:ChargeIndicator>
<ram:ActualAmount>12.50</ram:ActualAmount>
<ram:ReasonCode>ZZZZ</ram:ReasonCode>
<ram:Reason>Versandkosten</ram:Reason>
<ram:CategoryTradeTax>
Richtig – ab Zeile 209
</ram:ChargeIndicator>
<ram:ActualAmount>12.50</ram:ActualAmount>
<ram:ReasonCode>FC</ram:ReasonCode>
<ram:Reason>Versandkosten</ram:Reason>
<ram:CategoryTradeTax>

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

  • BR-CL-20 Coded charge reasons MUST belong to the UNCL 7161 code list Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/ApplicableHeaderTradeSettlement[1]/SpecifiedTradeAllowanceCharge[2]/ReasonCode[1]

Vollständige Dateien im Testkorpus: br-cl-20-unbekannter-zuschlagsgrund_cii.xml (falsch) und belegrabatt_cii.xml (richtig).

Testdateien zu BR-CL-20

Technische Details: Kontext und Prüfausdruck aus dem Schematron

CII

Kontext:

ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = true()]/ram:ReasonCode

Prüfausdruck:

((not(contains(normalize-space(.), ' ')) and contains(' AA AAA AAC AAD AAE AAF AAH AAI AAS AAT AAV AAY AAZ ABA ABB ABC ABD ABF ABK ABL ABN ABR ABS ABT ABU ACF ACG ACH ACI ACJ ACK ACL ACM ACS ADC ADE ADJ ADK ADL ADM ADN ADO ADP ADQ ADR ADT ADW ADY ADZ AEA AEB AEC AED AEF AEH AEI AEJ AEK AEL AEM AEN AEO AEP AES AET AEU AEV AEW AEX AEY AEZ AJ AU CA CAB CAD CAE CAF CAI CAJ CAK CAL CAM CAN CAO CAP CAQ CAR CAS CAT CAU CAV CAW CAX CAY CAZ CD CG CS CT DAB DAD DAC DAF DAG DAH DAI DAJ DAK DAL DAM DAN DAO DAP DAQ DL EG EP ER FAA FAB FAC FC FH FI GAA HAA HD HH IAA IAB ID IF IR IS KO L1 LA LAA LAB LF MAE MI ML NAA OA PA PAA PC PL PRV RAB RAC RAD RAF RE RF RH RV SA SAA SAD SAE SAI SG SH SM SU TAB TAC TT TV V1 V2 WH XAA YY ZZZ ', concat(' ', normalize-space(.), ' '))))

UBL

Kontext:

cac:AllowanceCharge[cbc:ChargeIndicator = true()]/cbc:AllowanceChargeReasonCode

Prüfausdruck:

((not(contains(normalize-space(.), ' ')) and contains(' AA AAA AAC AAD AAE AAF AAH AAI AAS AAT AAV AAY AAZ ABA ABB ABC ABD ABF ABK ABL ABN ABR ABS ABT ABU ACF ACG ACH ACI ACJ ACK ACL ACM ACS ADC ADE ADJ ADK ADL ADM ADN ADO ADP ADQ ADR ADT ADW ADY ADZ AEA AEB AEC AED AEF AEH AEI AEJ AEK AEL AEM AEN AEO AEP AES AET AEU AEV AEW AEX AEY AEZ AJ AU CA CAB CAD CAE CAF CAI CAJ CAK CAL CAM CAN CAO CAP CAQ CAR CAS CAT CAU CAV CAW CAX CAY CAZ CD CG CS CT DAB DAD DAC DAF DAG DAH DAI DAJ DAK DAL DAM DAN DAO DAP DAQ DL EG EP ER FAA FAB FAC FC FH FI GAA HAA HD HH IAA IAB ID IF IR IS KO L1 LA LAA LAB LF MAE MI ML NAA OA PA PAA PC PL PRV RAB RAC RAD RAF RE RF RH RV SA SAA SAD SAE SAI SG SH SM SU TAB TAC TT TV V1 V2 WH XAA YY ZZZ ', concat(' ', normalize-space(.), ' '))))

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