XRechnung (nationale Regeln)

BR-DE-18: Skonto-Angabe (BT-20) im falschen Format

Skonto steht in den Zahlungsbedingungen in einer festen Syntax: #SKONTO#TAGE=14#PROZENT=2.00#.

Steckbrief

Regel
BR-DE-18
Schweregrad
Fehler – die Rechnung ist ungültig
Regelwerk
XRechnung 3.0 (KoSIT)
Betroffene Felder
BT-20
Syntax
CII & UBL

Rechnung jetzt prüfen

PDF oder XML hochladen – kostenlos, ohne Anmeldung, gegen die offiziellen Regelwerke.

Zum Online-Validator

Offizieller Wortlaut

[BR-DE-18] … 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. …

Quelle: offizielle Schematron der KoSIT für XRechnung 3.0.

Was die Regel verlangt

Die XRechnung kennt kein eigenes Feld für Skonto. Damit es trotzdem maschinell auswertbar ist, steht es in den Zahlungsbedingungen (Payment terms, BT-20) in einer festen Syntax:

#SKONTO#TAGE=14#PROZENT=2.00#

  • Jede Skonto-Zeile beginnt und endet mit #; die Segmente heißen SKONTO, TAGE= und PROZENT= – in Großbuchstaben.
  • Prozente immer mit Punkt und genau zwei Nachkommastellen: 2.00, nicht 2 oder 2,00.
  • Gilt das Skonto nur für einen Teil des Betrags, folgt #BASISBETRAG=300.00#.
  • Nach der letzten Skonto-Zeile muss ein Zeilenumbruch folgen. Mehrere Stufen stehen in eigenen Zeilen.
  • Keine Leerzeichen innerhalb der Angabe. Freitext ist erlaubt, aber nur in eigenen Zeilen, die nicht mit # beginnen.

Typische Ursachen

  • Komma statt Punkt (PROZENT=2,00) oder fehlende Nachkommastellen (PROZENT=2) – oft durch Formatierung mit deutscher Kultur.
  • Der abschließende Zeilenumbruch fehlt, weil die Software den Text trimmt.
  • Kleinbuchstaben oder Leerzeichen, etwa #Skonto# oder #SKONTO# TAGE=14.
  • Skonto und Freitext stehen in derselben Zeile.

Ein reiner Freitext wie „2 % Skonto bei Zahlung innerhalb von 14 Tagen“ löst BR-DE-18 nicht aus, ist aber für den Empfänger nicht automatisch auswertbar.

So sieht es im XML aus

✗ CII – falsch (Komma, kein Zeilenumbruch)
<ram:SpecifiedTradePaymentTerms>
    <ram:Description>#SKONTO#TAGE=14#PROZENT=2,00#</ram:Description>
</ram:SpecifiedTradePaymentTerms>
✓ CII – korrekt
<ram:SpecifiedTradePaymentTerms>
    <ram:Description>#SKONTO#TAGE=14#PROZENT=2.00#
Zahlbar innerhalb von 30 Tagen ohne Abzug.</ram:Description>
    <ram:DueDateDateTime>
        <udt:DateTimeString format="102">20261120</udt:DateTimeString>
    </ram:DueDateDateTime>
</ram:SpecifiedTradePaymentTerms>

In UBL steht derselbe Text in cac:PaymentTerms/cbc:Note.

Lösung in C#

Im Facturexa Creator übergeben Sie den Text der Zahlungsbedingungen unverändert. Formatieren Sie Prozente mit CultureInfo.InvariantCulture und dem Format "0.00", nicht mit der Kultur des Rechners.

C#
// Jede Skonto-Zeile endet mit einem Zeilenumbruch, auch die letzte.
rechnung.AddSpecifiedTradePaymentTerms(
    "#SKONTO#TAGE=7#PROZENT=3.00#\n" +
    "#SKONTO#TAGE=14#PROZENT=2.00#\n" +
    "Zahlbar innerhalb von 30 Tagen ohne Abzug.",
    dueDate: rechnung.InvoiceDate.Value.AddDays(30));

Verwandte Regeln

Alle erklärten Prüfregeln