PEPPOL-EN16931-R043PEPPOL

PEPPOL-EN16931-R043: ChargeIndicator muss wörtlich true oder false sein

Das Kennzeichen, das Nachlass von Zuschlag unterscheidet, enthält einen anderen Wert als die Literale true oder false. Häufigster Auslöser: die XML-Schema-Schreibweisen 1 und 0.

Regeltext im Prüfregelwerk

Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'

BG-20BG-21BG-27BG-28

Diese Regel prüft keinen Rechnungsinhalt, sondern eine Schreibweise: Das Ja/Nein-Kennzeichen an Nachlässen und Zuschlägen muss exakt als true oder false in der Datei stehen.

Was die Regel prüft

Jede Nachlass- oder Zuschlagsgruppe (BG = Business Group, die nummerierte Feldgruppe der Norm; BG-20/BG-21 auf Dokumentebene, BG-27/BG-28 auf Positionsebene) beginnt mit dem ChargeIndicator: false bedeutet Nachlass (Rabatt), true bedeutet Zuschlag (etwa Versandkosten). Das Feld ist technisch ein XML-Schema-Boolean, und der Datentyp würde neben true/false auch 1/0 erlauben. PEPPOL schränkt das ein: Nur die ausgeschriebenen Literale sind zulässig, und zwar exakt kleingeschrieben.

Warum sie in der Praxis fehlschlägt

Der mit Abstand häufigste Auslöser sind XML-Bibliotheken, die Boolean-Werte als 1 und 0 serialisieren. Gegen das XML-Schema validiert das fehlerfrei, erst die PEPPOL-Schematron-Prüfung schlägt an. Wer die Datei selbst generiert, sieht den Unterschied leicht als Kleinigkeit an, der Validator nicht.

Seltener: Großschreibung wie True oder FALSE aus Programmiersprachen, deren Boolean-Ausgabe großgeschrieben ist (etwa Python str(True)), oder Leerraum bzw. Zeilenumbruch innerhalb des Elements.

So behebst du den Fehler

Ersetze in jedem ChargeIndicator der Datei den Wert durch das wörtliche true bzw. false. Wenn du den Code selbst schreibst: Serialisier das Feld als String-Literal statt über die Standard-Boolean-Ausgabe deiner XML-Bibliothek, oder konfigurier die Bibliothek auf die kanonische Schreibweise. Kontrolliere dabei die Bedeutung gleich mit: false = Nachlass, true = Zuschlag. Ein vertauschter Indikator fällt hier nicht auf, verdreht aber sämtliche Summenprüfungen.

Belegschmied erzeugt die Indikatoren fest als Literale, dieser Fehler kann dort nicht entstehen.

XML-Beispiel: vorher und nachher

<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <!-- verletzt PEPPOL-EN16931-R043: "0" statt Literal "false" -->
    <udt:Indicator>0</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:ActualAmount>25.00</ram:ActualAmount>
  <ram:Reason>Rabatt</ram:Reason>
  <!-- … -->
</ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:ActualAmount>25.00</ram:ActualAmount>
  <ram:Reason>Rabatt</ram:Reason>
  <!-- … -->
</ram:SpecifiedTradeAllowanceCharge>

Rechnung selbst prüfen

Lade deine Datei hoch und sieh in Sekunden, welche Regeln sie besteht und welche nicht. Kostenlos, ohne Anmeldung, nichts wird gespeichert.

Regeln, die oft zusammen auftreten

← Alle Fehlermeldungen im Überblick