Fehler-Codes

BR-DE-18: Skontoangabe in den Zahlungsbedingungen (BT-20) hat das falsche Muster

Schweregrad: fatal · Syntax: CII, UBL

Offizielle Meldung

Skonto Zeilen in {name()} muessen diesem regulärem Ausdruck entsprechen: {$XR-SKONTO-REGEX}. Die Informationen zur Gewährung von Skonto müssen wie folgt im Element "Payment terms" (BT-20) übermittelt werden: Anzugeben ist im ersten Segment "SKONTO", im zweiten "TAGE=n", im dritten "PROZENT=n". Prozentzahlen sind ohne Vorzeichen sowie mit Punkt getrennt von zwei Nachkommastellen anzugeben. Liegt dem zu berechnenden Betrag nicht BT-115, "fälliger Betrag" zugrunde, sondern nur ein Teil des fälligen Betrags der Rechnung, ist der Grundwert zur Berechnung von Skonto als viertes Segment "BASISBETRAG=n" gemäß dem semantischen Datentypen Amount anzugeben. Jeder Eintrag beginnt mit einer #, die Segmente sind mit einer # getrennt und eine Zeile schließt mit einer # ab. Am Ende einer vollständigen Skontoangabe muss ein XML-konformer Zeilenumbruch folgen. Alle Angaben zur Gewährung von Skonto müssen in Großbuchstaben gemacht werden. Zusätzliches Whitespace (Leerzeichen, Tabulatoren oder Zeilenumbrüche) ist nicht zulässig. Andere Zeichen oder Texte als in den oberen Vorgaben genannt sind nicht zulässig.

Was bedeutet das?

Skontozeilen in Payment terms (BT-20) müssen dem Ausdruck XR-SKONTO-REGEX der XRechnung-Schematron entsprechen: (^|\r?\n)#(SKONTO)#TAGE=([0-9]+#PROZENT=[0-9]+\.[0-9]{2})(#BASISBETRAG=-?[0-9]+\.[0-9]{2})?#$. Die Meldung verlangt die Segmente SKONTO, TAGE=n und PROZENT=n mit zwei Nachkommastellen und Punkt, optional BASISBETRAG=n, alles in Großbuchstaben, ohne zusätzliches Whitespace, jede Zeile mit # begonnen und beendet, danach ein XML-Zeilenumbruch. Im kompilierten Stylesheet werden der Dokumentname und der Ausdruck per xsl:value-of eingesetzt; die statische Meldung allein zeigt diese beiden Stellen nicht.

Typische Ursache

Skonto steht als normaler Satz („2 % innerhalb 14 Tagen“) statt im vorgeschriebenen Muster.

So beheben Sie es

Schreiben Sie eine Zeile im Muster und schließen Sie sie mit einem Zeilenumbruch ab.

UBL

<cbc:Note>#SKONTO#TAGE=14#PROZENT=2.00#
</cbc:Note>

CII

<ram:Description>#SKONTO#TAGE=14#PROZENT=2.00#
</ram:Description>

Business Term

Payment terms (BT-20), BT-115

Verwandte Regeln

Kontext und Prüfbedingung

UBL /ubl:Invoice | /cn:CreditNote

CII /rsm:CrossIndustryInvoice

UBL

every $line in cac:PaymentTerms/cbc:Note[1]/tokenize(. , '(\r?\n)')[starts-with( normalize-space(.) , '#')] satisfies matches ( normalize-space ($line), $XR-SKONTO-REGEX) and matches( cac:PaymentTerms/cbc:Note[1]/tokenize(. , '#.+#')[last()], '^\s*\n' )

CII

every $line in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[1]/tokenize(. , '(\r?\n)')[starts-with( normalize-space(.) , '#')] satisfies matches ( normalize-space ($line), $XR-SKONTO-REGEX ) and matches( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[1]/tokenize(. , '#.+#')[last()], '^\s*\n' )

Datei jetzt kostenlos prüfen

curl -F "file=@rechnung.xml" https://checkxrechnung.com/v1/validate

Fragen

Was prüft BR-DE-18 genau?

Skontozeilen in Payment terms (BT-20) müssen dem Ausdruck XR-SKONTO-REGEX der XRechnung-Schematron entsprechen: (^|\r?\n)#(SKONTO)#TAGE=([0-9]+#PROZENT=[0-9]+\.[0-9]{2})(#BASISBETRAG=-?[0-9]+\.[0-9]{2})?#$. Die Meldung verlangt die Segmente SKONTO, TAGE=n und PROZENT=n mit zwei Nachkommastellen und Punkt, optional BASISBETRAG=n, alles in Großbuchstaben, ohne zusätzliches Whitespace, jede Zeile mit # begonnen und beendet, danach ein XML-Zeilenumbruch. Im kompilierten Stylesheet werden der Dokumentname und der Ausdruck per xsl:value-of eingesetzt; die statische Meldung allein zeigt diese beiden Stellen nicht.

Wie behebe ich BR-DE-18?

Schreiben Sie eine Zeile im Muster und schließen Sie sie mit einem Zeilenumbruch ab.

Heißt eine bestandene Prüfung von BR-DE-18, dass ein Portal die Rechnung annimmt?

Nein. Die Seite hilft Ihnen, diese eine Schematron-Aussage zu verstehen. Ein Bestehen hier ist keine Aussage über Steuerrecht, Portalannahme oder Bank-Overlays.