Zurück zum Compliance Hub
Kritisch

BR-DE-18

Skonto in den Zahlungsbedingungen (BT-20) falsch formatiert

Was dieser Fehler bedeutet

Die EN 16931 hat kein strukturiertes Feld für Skonto. XRechnung legt deshalb ein maschinenlesbares Zeilenformat innerhalb der Zahlungsbedingungen (BT-20) fest: #SKONTO#TAGE=n#PROZENT=n.nn# mit optionalem Segment #BASISBETRAG=n.nn#. BR-DE-18 prüft jede Zeile, die mit „#“ beginnt, in der ersten cac:PaymentTerms/cbc:Note (CII: die erste ram:SpecifiedTradePaymentTerms/ram:Description). Jede dieser Zeilen muss dem Format genau entsprechen, und nach der letzten Skonto-Zeile muss ein Zeilenumbruch folgen. Normale Textzeilen werden ignoriert. Die Regel ist fatal.

Warum dieser Fehler auftritt

Das Schematron normalisiert jede Zeile, die mit „#“ beginnt, und prüft sie gegen den regulären Ausdruck (^|\r?\n)#(SKONTO)#TAGE=([0-9]+#PROZENT=[0-9]+\.[0-9]{2})(#BASISBETRAG=-?[0-9]+\.[0-9]{2})?#$. Eine zweite Bedingung verlangt, dass der Text nach dem letzten #...#-Segment mit einem Zeilenumbruch beginnt. Die typischen Fehler: ein Prozentsatz ohne zwei Nachkommastellen (PROZENT=2) oder mit Komma (PROZENT=2,00); Schlüsselwörter in Kleinbuchstaben (#skonto#); ein Leerzeichen innerhalb der Zeile; ein fehlendes abschließendes „#“; das Prozentzeichen (PROZENT=2.00%); und sehr häufig kein Zeilenumbruch nach der letzten Skonto-Zeile, weil die Note direkt mit „#“ endet. Rechnungssoftware, die Skonto als Fließtext schreibt („2 % Skonto bei Zahlung innerhalb von 14 Tagen“), löst BR-DE-18 nicht aus, der Empfänger kann diesen Skonto aber nicht automatisch verarbeiten.

Wie Sie ihn beheben

Schreiben Sie jede Skonto-Stufe in eine eigene Zeile als #SKONTO#TAGE=14#PROZENT=2.00# und schließen Sie sie mit einem Zeilenumbruch ab. Verwenden Sie Großbuchstaben, ganze Tage, einen Punkt als Dezimaltrenner und genau zwei Nachkommastellen beim Prozentsatz. Ergänzen Sie #BASISBETRAG=1500.00 vor dem abschließenden # nur, wenn der Skonto nicht vom fälligen Betrag (BT-115) berechnet wird.

Schritt für Schritt

1) Schreiben Sie alle Zahlungsbedingungen in die erste cac:PaymentTerms/cbc:Note; ein zweites PaymentTerms-Element wird nicht geprüft und vom Empfänger leicht übersehen. 2) Führen Sie Freitext in eigenen Zeilen, die nicht mit „#“ beginnen. 3) Schreiben Sie jede Stufe als #SKONTO#TAGE=<Tage>#PROZENT=<Prozent mit zwei Nachkommastellen>#, etwa #SKONTO#TAGE=14#PROZENT=2.00#. 4) Ergänzen Sie #BASISBETRAG=<Betrag>.00 vor dem letzten „#“ nur, wenn die Skonto-Basis von BT-115 abweicht, etwa weil einzelne Positionen nicht skontierfähig sind. 5) Schließen Sie jede Skonto-Zeile, auch die letzte, mit einem Zeilenumbruch ab. Im XML genügt ein echter Zeilenumbruch im Element; &#10; funktioniert ebenfalls. 6) In CII gilt dieselbe Syntax in ram:SpecifiedTradePaymentTerms/ram:Description. 7) Prüfen Sie erneut.

XML-Beispiel
<cac:PaymentTerms>
  <cbc:Note>Zahlbar innerhalb von 30 Tagen netto.
#SKONTO#TAGE=10#PROZENT=3.00#
#SKONTO#TAGE=20#PROZENT=1.50#BASISBETRAG=1500.00#
</cbc:Note>
</cac:PaymentTerms>

Automatisch beheben

Laden Sie Ihre Rechnung in unsere Smart-Repair-Engine hoch. Sie prüft die Datei gegen das vollständige KoSIT-Regelwerk, auch auf BR-DE-18, und korrigiert unterstützte Felder mit einem GoBD-Prüfpfad.

Smart Repair öffnen

Häufig gestellte Fragen

Meine Skonto-Zeile sieht richtig aus. Warum kommt BR-DE-18 trotzdem?

Meist fehlt der Zeilenumbruch nach dem letzten „#“, oder der Prozentsatz hat keine zwei Nachkommastellen (2 statt 2.00). Ein Komma als Dezimaltrenner oder ein Leerzeichen führt zum selben Fehler.

Kann ich zwei Skonto-Stufen anbieten?

Ja. Schreiben Sie je Stufe eine Zeile, etwa 3.00 % innerhalb von 10 Tagen und 1.50 % innerhalb von 20 Tagen, jeweils mit „#“ und Zeilenumbruch am Ende.

Ist Skonto als normaler Text erlaubt?

Normale Textzeilen prüft BR-DE-18 nicht, die Datei bleibt also gültig. Öffentliche Auftraggeber verarbeiten Skonto aber meist nur im strukturierten #SKONTO#-Format. Nutzen Sie es, wenn der Skonto verlässlich berücksichtigt werden soll.

Verwandte Fehler

Andere häufig auftretende Validierungsfehler