Zum Inhalt springen

Ironfang Finance - Regelreferenz

PEPPOL-EN16931-CL007: Jedes currencyID eines Betrags genau als Code der Peppol-Währungsliste schreiben

Peppol vergleicht das currencyID jedes Betrags zeichengenau mit seiner Liste nach ISO 4217. Ein Code mit Leerzeichen am Ende scheitert hier, obwohl EN 16931 ihn annimmt.

Peppol BIS BillingFehler: Das Dokument ist ungültigCodelisten

Auf dieser Seite

Die kurze Antwort

PEPPOL-EN16931-CL007 schlägt fehl, wenn das currencyID eines Betrags nicht genau einer der Codes auf der Peppol-Währungsliste ist. Vor dem Vergleich wird nichts gekürzt und nichts in Großbuchstaben umgewandelt, daher muss das Attribut den bloßen dreistelligen Code enthalten, etwa GBP, und sonst nichts.

Im aufgezeichneten Beispiel ist der fällige Zahlungsbetrag mit GBP und einem folgenden Leerzeichen gekennzeichnet. EN 16931 entfernt die Randleerzeichen vor der eigenen Prüfung, BR-CL-03, und nimmt den Wert an. Peppol tut das nicht, und PEPPOL-EN16931-R051 meldet das Attribut ebenfalls, weil es nicht mehr der Rechnungswährung entspricht.

Was die Regel prüft

Die Regel liest dieselben dreizehn Betragselemente wie BR-CL-03: cbc:Amount, cbc:BaseAmount, cbc:PriceAmount, cbc:TaxAmount, cbc:TaxableAmount, cbc:LineExtensionAmount und die Summen in cac:LegalMonetaryTotal. Jeder Betrag mit fehlerhaftem Attribut ist ein eigener Befund.

Welche Regel ein Wert auslöst, hängt davon ab, was an ihm falsch ist. Ein Wert, der auf keiner der beiden Listen steht, etwa UKP oder gbp, wird von dieser Regel und von BR-CL-03 gemeldet, und von PEPPOL-EN16931-R051 ebenfalls, wenn er vom Code der Rechnungswährung abweicht. Ein gültiger Code mit einem Leerzeichen davor oder danach besteht BR-CL-03 und scheitert nur im Peppol-Prüfschritt: Im Versuch wurden ein Leerzeichen am Anfang und eines am Ende jeweils von dieser Regel und von PEPPOL-EN16931-R051 gemeldet.

Die beiden Listen unterscheiden sich in einer Währung. Die Peppol-Liste enthält STN, den aktuellen Code für den Dobra von Sao Tome und Principe, und nicht den zurückgezogenen Code STD; bei der Liste von EN 16931 ist es umgekehrt. Im Versuch bestand eine Rechnung ganz in STD die Prüfung nach EN 16931 und löste diese Regel an jedem Betrag aus, während eine Rechnung ganz in STN den Peppol-Prüfschritt bestand und an BR-CL-03 und BR-CL-04 scheiterte.

Der Gesamtbetrag der Umsatzsteuer in der Buchungswährung ist eingeschlossen, obwohl PEPPOL-EN16931-R051 ihn auslässt. Im Versuch mit EUR als Buchungswährung wurde EUR mit folgendem Leerzeichen an diesem Betrag von dieser Regel sowie von BR-53 und PEPPOL-EN16931-R055 gemeldet, die diesen Betrag über seinen Währungscode suchen.

BegriffBedeutungUBL-Element
-Währung eines Betrags (das Attribut currencyID)currencyID on each amount element, for example cac:LegalMonetaryTotal/cbc:PayableAmount/@currencyID
BT-5Code für die Rechnungswährungcbc:DocumentCurrencyCode

Wie es in einer Integration dazu kommt

Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:

  • Die Währung stammt aus einem Feld fester Breite oder einer Datenbankspalte vom Typ CHAR und behält ihre Auffüllung.
  • Eine Vorlage schreibt das Attribut als currencyID="{currency} " oder fügt Zeichenketten mit einem Trennzeichen zusammen, sodass ein Leerzeichen im Wert bleibt.
  • Die Codes stammen aus einer alten Referenztabelle, die noch zurückgezogene Währungen wie STD führt.
  • Jeder Betrag wird aus einer eigenen Quelle befüllt, und nur eine davon, etwa die Zahlungssumme, liefert den ungekürzten Wert.

So korrigieren Sie das Dokument

  1. Finden Sie über die Position im Befund den Betrag und die Stelle in Ihrer Abbildung, die sein currencyID befüllt.
  2. Entfernen Sie Leerzeichen um den Währungscode einmal, dort, wo er in Ihr System gelangt, und befüllen Sie jedes currencyID und cbc:DocumentCurrencyCode aus diesem einen Wert.
  3. Prüfen Sie den Code gegen die aktuelle Liste nach ISO 4217. Ein Code, der in beiden Prüfschritten gültig ist, etwa GBP oder EUR, beseitigt diese Regel und BR-CL-03 zugleich.
  4. Für den Dobra von Sao Tome und Principe gibt es im festgelegten Release keinen Code, den beide Prüfschritte annehmen: STN scheitert an EN 16931 und STD an Peppol, sodass eine Rechnung in dieser Währung erst bestehen kann, wenn die Listen übereinstimmen.

Korrigierte Rechnung prüfen

Vorher und nachher

Dies sind Ausschnitte, keine vollständigen Dokumente. Die vollständigen synthetischen Dokumente, aus denen sie stammen, sind unten verlinkt.

Ausschnitt der fehlerhaften Rechnung: Der fällige Betrag ist mit GBP und einem Leerzeichen am Ende gekennzeichnet

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
  <!-- allowance, charge, prepaid and rounding totals omitted from this fragment -->
  <cbc:PayableAmount currencyID="GBP ">30.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Ausschnitt der korrigierten Rechnung: Jeder Betrag trägt den bloßen Code GBP

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
  <!-- allowance, charge, prepaid and rounding totals omitted from this fragment -->
  <cbc:PayableAmount currencyID="GBP">30.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Nur das currencyID von cbc:PayableAmount unterscheidet sich: GBP mit Leerzeichen am Ende in der fehlerhaften Rechnung, schlichtes GBP in der korrigierten. Zwei Peppol-Befunde teilen sich diese Position: diese Regel, weil der aufgefüllte Wert nicht auf der Liste steht, und PEPPOL-EN16931-R051, weil er nicht der Rechnungswährung entspricht. Der Prüfschritt EN 16931 besteht, da BR-CL-03 den Wert zuerst kürzt.

Was der Validator gemeldet hat

Aufgezeichnet mit phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, der Engine hinter dem kostenlosen Validator, mit synthetischen Daten. Ein aufgezeichnetes Ergebnis ist ein Regressionsnachweis für diese Dokumente, keine Zertifizierung.

Wo die Regel gilt

  • Gilt für UBL Invoice und CreditNote. Im Versuch meldete eine Gutschrift mit demselben aufgefüllten fälligen Betrag dieselben beiden Regeln.
  • Wird im Peppol-Prüfschritt gemeldet. Abgesehen von STD, STN und Leerraum um einen Code nehmen diese Regel und BR-CL-03 im festgelegten Release dieselben Werte an und lehnen dieselben ab.
  • Sie liest nie cbc:DocumentCurrencyCode oder cbc:TaxCurrencyCode selbst; diese prüfen BR-CL-04 und BR-CL-05. Im Versuch mit STD als Buchungswährung nahm BR-CL-05 das Codeelement an, und diese Regel meldete nur den Umsatzsteuerbetrag, der STD trug.

Umfang und Quelle

Geschrieben für Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, angewendet auf Invoice- und CreditNote-Dokumente in UBL 2.1. Andere Profile, Syntaxen und Releases können diese Kennung anders definieren. Version des Hinweiskatalogs 2026-09-28.1: Quelle geprüft am 2026-09-28, Erklärung zuletzt aktualisiert am 2026-09-28.

Die offizielle Definition von PEPPOL-EN16931-CL007 (auf Englisch) enthält den normativen Wortlaut und den Test. Diese Seite ist unsere Erklärung dazu, keine Kopie.

Die Erklärung ändert das Urteil der Engine nicht. Dass Sie diesen Befund beheben, heißt nicht, dass das Dokument jeden Prüfschritt besteht. Die Validierung bescheinigt keine rechtliche oder steuerliche Konformität und überträgt kein Dokument über Peppol.