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.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| - | Währung eines Betrags (das Attribut currencyID) | currencyID on each amount element, for example cac:LegalMonetaryTotal/cbc:PayableAmount/@currencyID |
| BT-5 | Code für die Rechnungswährung | cbc: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
CHARund 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
STDfü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
- Finden Sie über die Position im Befund den Betrag und die Stelle in Ihrer Abbildung, die sein
currencyIDbefüllt. - Entfernen Sie Leerzeichen um den Währungscode einmal, dort, wo er in Ihr System gelangt, und befüllen Sie jedes
currencyIDundcbc:DocumentCurrencyCodeaus diesem einen Wert. - Prüfen Sie den Code gegen die aktuelle Liste nach ISO 4217. Ein Code, der in beiden Prüfschritten gültig ist, etwa
GBPoderEUR, beseitigt diese Regel undBR-CL-03zugleich. - Für den Dobra von Sao Tome und Principe gibt es im festgelegten Release keinen Code, den beide Prüfschritte annehmen:
STNscheitert an EN 16931 undSTDan Peppol, sodass eine Rechnung in dieser Währung erst bestehen kann, wenn die Listen übereinstimmen.
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
- Die fehlerhafte Rechnung meldet PEPPOL-EN16931-CL007 und PEPPOL-EN16931-R051. Das korrigierte Dokument besteht jeden Prüfschritt ohne Befunde.Fehlerhaftes XML herunterladenKorrigiertes XML herunterladen
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
InvoiceundCreditNote. Im Versuch meldete eine Gutschrift mit demselben aufgefüllten fälligen Betrag dieselben beiden Regeln. - Wird im Peppol-Prüfschritt gemeldet. Abgesehen von
STD,STNund Leerraum um einen Code nehmen diese Regel undBR-CL-03im festgelegten Release dieselben Werte an und lehnen dieselben ab. - Sie liest nie
cbc:DocumentCurrencyCodeodercbc:TaxCurrencyCodeselbst; diese prüfenBR-CL-04undBR-CL-05. Im Versuch mitSTDals Buchungswährung nahmBR-CL-05das Codeelement an, und diese Regel meldete nur den Umsatzsteuerbetrag, derSTDtrug.
Verwandte Regeln
- BR-CL-03 prüft dieselben Attribute im Prüfschritt EN 16931, nachdem es die Randleerzeichen entfernt hat
- PEPPOL-EN16931-R051 meldet einen Betrag, dessen currencyID vom Code der Rechnungswährung abweicht
- PEPPOL-EN16931-CL006 ist die Peppol-Prüfung der Codeliste für den Code des Abrechnungsdatums der Umsatzsteuer
- PEPPOL-EN16931-P0112 ist eine weitere Peppol-Prüfung, die einen vom Prüfschritt EN 16931 angenommenen Code ablehnt, dort den Code für den Rechnungstyp
- Alle Regeln der Referenz ansehen
- Hintergrund (auf Englisch): How Peppol invoice validation actually works
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.

