Startseite › Wissen › BR-DE-18
BR-DE-18: Skonto-Angabe im falschen Format
Skonto wird in XRechnung nicht in eigenen Feldern, sondern in den Zahlungsbedingungen (BT-20) in einem fest vorgegebenen Format übermittelt. Jede Zeile, die mit # beginnt, muss exakt diesem Muster folgen: #SKONTO#TAGE=n#PROZENT=n.nn#, optional mit BASISBETRAG=n.nn#, und nach der Skontoangabe muss ein Zeilenumbruch folgen.
Originaltext der Regel
Skonto Zeilen in müssen diesem regulärem Ausdruck entsprechen: . 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.
Technische Prüfung (Schematron/XPath)
| Regelwerk | Kontext | Test |
|---|---|---|
| XRechnung, UBL | /ubl:Invoice | /cn:CreditNote | 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' ) |
| XRechnung, CII | /rsm:CrossIndustryInvoice | 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' ) |
Aus der offiziellen XRechnung 3.0.2 (KoSIT-Konfiguration 2026-08-31).
Typische Ursachen
- Prozentsatz ohne zwei Nachkommastellen (
PROZENT=2stattPROZENT=2.00) oder mit Komma. - Kleinschreibung (
#skonto#) oder Leerzeichen innerhalb der Angabe. - Der abschließende Zeilenumbruch fehlt, weil die Software Zeilenumbrüche aus Textfeldern entfernt.
- Freitext beginnt zufällig mit
#– auch diese Zeile wird gegen das Muster geprüft.
So beheben Sie den Fehler
- Format exakt einhalten: Großbuchstaben, Punkt als Dezimaltrennzeichen, zwei Nachkommastellen beim Prozentsatz.
- Jede Skontozeile mit
#abschließen und danach einen Zeilenumbruch setzen. - Mehrere Skontostufen jeweils in eine eigene Zeile schreiben; Freitext darf in weiteren Zeilen ohne führendes
#stehen.
Das vollständige Prüfmuster aus der KoSIT-Konfiguration lautet: (^|\r?\n)#(SKONTO)#TAGE=([0-9]+#PROZENT=[0-9]+\.[0-9]{2})(#BASISBETRAG=-?[0-9]+\.[0-9]{2})?#$
Beispiel: vorher und nachher
Fehlerhaft
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>#SKONTO#TAGE=7#PROZENT=2#</cbc:Note>
</cac:PaymentTerms>
<cac:TaxTotal>Korrigiert
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>#SKONTO#TAGE=7#PROZENT=2.00#
</cbc:Note>
</cac:PaymentTerms>
<cac:TaxTotal>Ausschnitt aus einer vollständigen XRechnung 3.0 (UBL). Ergebnis mit dem KoSIT-Validator: Die fehlerhafte Variante erzeugt BR-DE-18 und wird abgelehnt; die korrigierte Variante wird akzeptiert.
Häufige Fragen
Wie gebe ich zwei Skontostufen an?
Zwei Zeilen untereinander, z. B. #SKONTO#TAGE=7#PROZENT=3.00# und #SKONTO#TAGE=14#PROZENT=2.00#, jeweils mit Zeilenumbruch.
Wofür ist BASISBETRAG?
Nur wenn sich das Skonto nicht auf den gesamten fälligen Betrag (BT-115) bezieht, sondern auf einen Teil davon.
Hintergrund: XRechnung vs. ZUGFeRD: Welches Format passt?
Verwandte Themen
Keine Steuer- oder Rechtsberatung: Diese Seite erklärt technische Prüfregeln und dient der Orientierung. Verbindlich sind Gesetz, BMF-Schreiben und das offizielle KoSIT-Regelwerk. Bei steuerlichen Fragen wenden Sie sich an Ihre Steuerberatung. Stand: 2026-10-06, geprüft mit XRechnung 3.0.2 (KoSIT-Konfiguration 2026-08-31).