Auf dieser Seite
Die kurze Antwort
BR-CL-04 schlägt fehl, wenn der Wert von cbc:DocumentCurrencyCode nicht auf der alphabetischen Codeliste nach ISO 4217 steht, die mit den Validierungsartefakten ausgeliefert wird. Senden Sie den dreibuchstabigen Code der Währung, in der die Rechnung tatsächlich ausgestellt ist, in Großbuchstaben: GBP, nicht gbp, 826, Pound sterling oder ein Währungssymbol.
Derselbe falsche Wert wird meist in jedes Attribut currencyID kopiert; rechnen Sie also damit, dass diese Regel zusammen mit einem Befund je Betrag von den Regeln kommt, die diese Attribute prüfen.
Was die Regel prüft
Die Regel vergleicht den Elementtext mit einer festen Liste alphabetischer Codes nach ISO 4217. Der Vergleich ist exakt und beachtet die Groß- und Kleinschreibung: gbp und Gbp scheitern beide. Ebenso der numerische ISO-Code, ein Ländercode wie GB, ein Währungsname und ein Symbol.
Die Liste ist der Stand, der mit den festgelegten Artefakten von EN 16931 veröffentlicht wurde, nicht die vollständige Historie von ISO 4217. Zurückgezogene Codes stehen nicht darauf; HRK und BGN werden beide abgelehnt. Ein System, das für eine inzwischen ersetzte Währung noch einen alten Code führt, muss seine Referenzdaten aktualisieren.
Leerraum um den Code lässt diese Regel nicht scheitern, hilft dem Dokument aber auch nicht. Die Beträge werden der Dokumentwährung durch exakten Vergleich zugeordnet, daher wird ein aufgefüllter Code, der hier besteht, trotzdem von BR-CO-15 und von der Peppol-Regel PEPPOL-EN16931-R051 für jeden Betrag gemeldet. Entfernen Sie den Leerraum.
Fehlend oder leer: cbc:DocumentCurrencyCode ist im UBL-Schema optional, daher besteht ein Dokument ohne das Element den XSD-Prüfschritt. Diese Regel hat dann nichts zu prüfen und bleibt still; die fehlende Währung meldet stattdessen BR-05. Ein vorhandenes, aber leeres Element meldet BR-05, BR-CL-04 und PEPPOL-EN16931-R008 zusammen.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| 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:
- Das Quellsystem speichert einen Anzeigewert, einen Namen oder ein Symbol, und das Mapping reicht ihn durch, ohne ihn in einen Code zu übersetzen.
- Codes werden in Kleinbuchstaben gespeichert oder normalisiert.
- Das Buchhaltungspaket verwendet numerische ISO-Codes oder eigene interne Währungsschlüssel.
- Die Währungstabelle stammt aus der Zeit vor einer Währungsumstellung und enthält noch einen zurückgezogenen Code.
- Ein Füllwert wie
ZZZwird geschrieben, wenn die Währung im Quelldokument null ist. - Ein Ländercode wird verwendet, wo ein Währungscode erwartet wird, weil beide aus demselben Kundendatensatz stammen.
So korrigieren Sie das Dokument
- Stellen Sie fest, in welcher Währung die Rechnungsbeträge tatsächlich sind. Das ist eine Tatsache des Geschäftsvorfalls; wählen Sie keinen anderen gültigen Code, nur weil er die Prüfung besteht.
- Übersetzen Sie sie in den alphabetischen Code nach ISO 4217, in Großbuchstaben und ohne Leerraum am Rand, und schreiben Sie ihn in
cbc:DocumentCurrencyCode. - Schreiben Sie denselben Code in das Attribut
currencyIDjedes Betrags in Dokumentwährung. Die einzige Ausnahme ist das zweitecac:TaxTotal, das den Umsatzsteuergesamtbetrag in der Buchungswährung angibt, wenncbc:TaxCurrencyCodeverwendet wird. - Prüfen Sie Währungscodes dort, wo sie in Ihr System gelangen, gegen die aktuelle Liste nach ISO 4217, damit ein unbekannter Wert erkannt wird, bevor eine Rechnung darauf aufbaut.
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: ZZZ als Dokumentwährung und an jedem Betrag
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>ZZZ</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>
<!-- parties and tax total omitted from this fragment -->
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="ZZZ">25.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="ZZZ">25.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="ZZZ">30.00</cbc:TaxInclusiveAmount>
<!-- allowance, charge, prepaid and rounding totals omitted; they carry the same currencyID -->
<cbc:PayableAmount currencyID="ZZZ">30.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>Ausschnitt der korrigierten Rechnung: durchgehend GBP
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>GBP</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>
<!-- parties and tax total omitted from this fragment -->
<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; they carry the same currencyID -->
<cbc:PayableAmount currencyID="GBP">30.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>Die fehlerhafte Rechnung hat ZZZ in cbc:DocumentCurrencyCode und in der currencyID aller dreizehn Beträge, in der Steuersumme, den Gesamtbeträgen und der Position; die korrigierte hat an jeder Stelle GBP. BR-CL-04 wird einmal gemeldet, für das Element. Das fehlerhafte Dokument meldet außerdem BR-CL-03 und PEPPOL-EN16931-CL007 je dreizehnmal: Das sind die Codelistenprüfungen von EN 16931 und Peppol für das Attribut currencyID, und jede greift an jedem Betrag. Wäre nur das Element falsch gewesen und hätten die Attribute noch GBP gelautet, enthielte der Bericht stattdessen BR-CL-04 mit BR-CO-15 und je einem PEPPOL-EN16931-R051 pro Betrag, weil die Beträge dann nicht mehr zur Dokumentwährung passten.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet BR-CL-03, BR-CL-04 und
PEPPOL-EN16931-CL007. 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 gleichermaßen für UBL
InvoiceundCreditNote; das Element heißt in beiden gleich, und die aufgezeichnete Gutschrift mitZZZmeldet dieselben drei Regeln. - Die Regel liest nur
cbc:DocumentCurrencyCode.cbc:TaxCurrencyCode, die Buchungswährung der Umsatzsteuer, hat eine eigene Codelistenregel,BR-CL-05. - Das Element braucht keine Attribute. Eine hinzugefügte
listIDergibt die WarnungUBL-CR-657und sonst nichts.
Verwandte Regeln
- BR-CO-15 schlägt fehl, wenn kein Umsatzsteuergesamtbetrag in der Dokumentwährung angegeben ist, was ein geänderter oder aufgefüllter Währungscode verursacht
- BR-CL-23 ist die entsprechende Codelistenprüfung für Mengeneinheiten
- BR-CL-01 prüft den Dokumenttypcode gegen seine eigene Codeliste
- Alle Regeln der Referenz ansehen
- Hintergrund (auf Englisch): Understanding EN 16931 validation errors
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-24.1: Quelle geprüft am 2026-09-24, Erklärung zuletzt aktualisiert am 2026-09-20.
Die offizielle Definition von BR-CL-04 (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.

