BR-CL-08: Unbekannter Betreffcode in einer Notiz

Der Betreffcode einer Rechnungsnotiz (BT-21) muss aus der Liste UNCL 4451 stammen.

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

Offizieller Regeltext

CII: Subject Code MUST be coded using a restriction of UNTDID 4451.

UBL: Invoiced note subject code shall be coded using UNCL4451

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

Eigene Kürzel werden als Betreffcode verwendet; in UBL steht der Code als „#Code#“ am Anfang des Notiztextes.

So behebst du den Fehler

Einen gültigen Code wie AAI (allgemeine Information) oder REG (regulatorische Angaben) verwenden oder den Betreffcode weglassen.

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: Rechnungshinweis mit unbekanntem Betreffcode (BT-21).

Falsch – ab Zeile 8
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:Note>TESTDATEN: synthetische Rechnung aus dem E-Rechnungs-Testkorpus (Claw Labs). Keine echte Forderung, keine echten Firmen oder Personen.</cbc:Note>
<cbc:Note>#XYZ#Testhinweis mit falschem Code</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>TEST-REF-2026-0815</cbc:BuyerReference>
Richtig – ab Zeile 8 · ohne die markierte Zeile
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:Note>TESTDATEN: synthetische Rechnung aus dem E-Rechnungs-Testkorpus (Claw Labs). Keine echte Forderung, keine echten Firmen oder Personen.</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>TEST-REF-2026-0815</cbc:BuyerReference>

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

  • BR-CL-08 Invoiced note subject code shall be coded using UNCL4451 Fundstelle: /Invoice[1]/Note[2]

Vollständige Dateien im Testkorpus: br-cl-08-unbekannter-hinweiscode_ubl.xml (falsch) und standard_ubl.xml (richtig).

Beispiel in CII

Änderung gegenüber der gültigen Rechnung: Rechnungshinweis mit unbekanntem Betreffcode (BT-21).

Falsch – ab Zeile 17
  <ram:IncludedNote>
    <ram:Content>TESTDATEN: synthetische Rechnung aus dem E-Rechnungs-Testkorpus (Claw Labs). Keine echte Forderung, keine echten Firmen oder Personen.</ram:Content>
  </ram:IncludedNote>
  <ram:IncludedNote>
    <ram:Content>Testhinweis mit falschem Code</ram:Content>
    <ram:SubjectCode>XYZ</ram:SubjectCode>
  </ram:IncludedNote>
</rsm:ExchangedDocument>
Richtig – ab Zeile 17 · ohne die markierten Zeilen
  <ram:IncludedNote>
    <ram:Content>TESTDATEN: synthetische Rechnung aus dem E-Rechnungs-Testkorpus (Claw Labs). Keine echte Forderung, keine echten Firmen oder Personen.</ram:Content>
  </ram:IncludedNote>
</rsm:ExchangedDocument>

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

  • BR-CL-08 Subject Code MUST be coded using a restriction of UNTDID 4451. Fundstelle: /CrossIndustryInvoice[1]/ExchangedDocument[1]/IncludedNote[2]/SubjectCode[1]

Vollständige Dateien im Testkorpus: br-cl-08-unbekannter-hinweiscode_cii.xml (falsch) und standard_cii.xml (richtig).

Testdateien zu BR-CL-08

Technische Details: Kontext und Prüfausdruck aus dem Schematron

CII

Kontext:

ram:SubjectCode

Prüfausdruck:

((not(contains(normalize-space(.), ' ')) and contains(' AAA AAB AAC AAD AAE AAF AAG AAI AAJ AAK AAL AAM AAN AAO AAP AAQ AAR AAS AAT AAU AAV AAW AAX AAY AAZ ABA ABB ABC ABD ABE ABF ABG ABH ABI ABJ ABK ABL ABM ABN ABO ABP ABQ ABR ABS ABT ABU ABV ABW ABX ABZ ACA ACB ACC ACD ACE ACF ACG ACH ACI ACJ ACK ACL ACM ACN ACO ACP ACQ ACR ACS ACT ACU ACV ACW ACX ACY ACZ ADA ADB ADC ADD ADE ADF ADG ADH ADI ADJ ADK ADL ADM ADN ADO ADP ADQ ADR ADS ADT ADU ADV ADW ADX ADY ADZ AEA AEB AEC AED AEE AEF AEG AEH AEI AEJ AEK AEL AEM AEN AEO AEP AEQ AER AES AET AEU AEV AEW AEX AEY AEZ AFA AFB AFC AFD AFE AFF AFG AFH AFI AFJ AFK AFL AFM AFN AFO AFP AFQ AFR AFS AFT AFU AFV AFW AFX AFY AFZ AGA AGB AGC AGD AGE AGF AGG AGH AGI AGJ AGK AGL AGM AGN AGO AGP AGQ AGR AGS AGT AGU AGV AGW AGX AGY AGZ AHA AHB AHC AHD AHE AHF AHG AHH AHI AHJ AHK AHL AHM AHN AHO AHP AHQ AHR AHS AHT AHU AHV AHW AHX AHY AHZ AIA AIB AIC AID AIE AIF AIG AIH AII AIJ AIK AIL AIM AIN AIO AIP AIQ AIR AIS AIT AIU AIV AIW AIX AIY AIZ AJA AJB ALC ALD ALE ALF ALG ALH ALI ALJ ALK ALL ALM ALN ALO ALP ALQ ARR ARS AUT AUU AUV AUW AUX AUY AUZ AVA AVB AVC AVD AVE AVF BAG BAH BAI BAJ BAK BAL BAM BAN BAO BAP BAQ BAR BAS BAT BAU BAV BAW BAX BAY BAZ BBA BBB BLC BLD BLE BLF BLG BLH BLI BLJ BLK BLL BLM BLN BLO BLP BLQ BLR BLS BLT BLU BLV BLW BLX BLY BLZ BMA BMB BMC BMD BME BMF BMG BMH CCI CCJ CCK CCL CCM CCN CCO CEX CHG CIP CLP CLR COI CUR CUS DAR DCL DEL DIN DOC DUT EUR FBC GBL GEN GS7 HAN HAZ ICN IIN IMI IND INS INV IRP ITR ITS LAN LIN LOI MCO MDH MKS ORI OSI PAC PAI PAY PKG PKT PMD PMT PRD PRF PRI PUR QIN QQD QUT RAH REG RET REV RQR SAF SIC SIN SLR SPA SPG SPH SPP SPT SRN SSR SUR TCA TDT TRA TRR TXD WHI ZZZ ', concat(' ', normalize-space(.), ' '))))

UBL

Kontext:

/ubl:Invoice/cbc:Note | /cn:CreditNote/cbc:Note

Prüfausdruck:

(contains(.,'#') and string-length(substring-before(substring-after(.,'#'),'#'))=3 and ( ( contains(' AAA AAB AAC AAD AAE AAF AAG AAI AAJ AAK AAL AAM AAN AAO AAP AAQ AAR AAS AAT AAU AAV AAW AAX AAY AAZ ABA ABB ABC ABD ABE ABF ABG ABH ABI ABJ ABK ABL ABM ABN ABO ABP ABQ ABR ABS ABT ABU ABV ABW ABX ABZ ACA ACB ACC ACD ACE ACF ACG ACH ACI ACJ ACK ACL ACM ACN ACO ACP ACQ ACR ACS ACT ACU ACV ACW ACX ACY ACZ ADA ADB ADC ADD ADE ADF ADG ADH ADI ADJ ADK ADL ADM ADN ADO ADP ADQ ADR ADS ADT ADU ADV ADW ADX ADY ADZ AEA AEB AEC AED AEE AEF AEG AEH AEI AEJ AEK AEL AEM AEN AEO AEP AEQ AER AES AET AEU AEV AEW AEX AEY AEZ AFA AFB AFC AFD AFE AFF AFG AFH AFI AFJ AFK AFL AFM AFN AFO AFP AFQ AFR AFS AFT AFU AFV AFW AFX AFY AFZ AGA AGB AGC AGD AGE AGF AGG AGH AGI AGJ AGK AGL AGM AGN AGO AGP AGQ AGR AGS AGT AGU AGV AGW AGX AGY AGZ AHA AHB AHC AHD AHE AHF AHG AHH AHI AHJ AHK AHL AHM AHN AHO AHP AHQ AHR AHS AHT AHU AHV AHW AHX AHY AHZ AIA AIB AIC AID AIE AIF AIG AIH AII AIJ AIK AIL AIM AIN AIO AIP AIQ AIR AIS AIT AIU AIV AIW AIX AIY AIZ AJA AJB ALC ALD ALE ALF ALG ALH ALI ALJ ALK ALL ALM ALN ALO ALP ALQ ARR ARS AUT AUU AUV AUW AUX AUY AUZ AVA AVB AVC AVD AVE AVF BAG BAH BAI BAJ BAK BAL BAM BAN BAO BAP BAQ BAR BAS BLC BLD BLE BLF BLG BLH BLI BLJ BLK BLL BLM BLN BLO BLP BLQ BLR BLS BLT BLU BLV BLW BLX BLY BLZ BMA BMB BMC BMD BME CCI CEX CHG CIP CLP CLR COI CUR CUS DAR DCL DEL DIN DOC DUT EUR FBC GBL GEN GS7 HAN HAZ ICN IIN IMI IND INS INV IRP ITR ITS LAN LIN LOI MCO MDH MKS ORI OSI PAC PAI PAY PKG PKT PMD PMT PRD PRF PRI PUR QIN QQD QUT RAH REG RET REV RQR SAF SIC SIN SLR SPA SPG SPH SPP SPT SRN SSR SUR TCA TDT TRA TRR TXD WHI ZZZ ',substring-before(substring-after(.,'#'),'#') ) ) )) or not(contains(.,'#')) or not(string-length(substring-before(substring-after(.,'#'),'#'))=3)

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