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; funktioniert ebenfalls. 6) In CII gilt dieselbe Syntax in ram:SpecifiedTradePaymentTerms/ram:Description. 7) Prüfen Sie erneut.
<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 öffnenHä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