Zum Inhalt springen

Ironfang Finance - Regelreferenz

PEPPOL-EN16931-R051: Den Code der Rechnungswährung in der currencyID jedes Betrags verwenden

Ein Betrag hat eine andere currencyID als cbc:DocumentCurrencyCode. Alle Beträge müssen in der Rechnungswährung stehen, außer der Umsatzsteuersumme in einer Buchungswährung.

Peppol BIS BillingFehler: Das Dokument ist ungültigKernfelder

Auf dieser Seite

Die kurze Antwort

PEPPOL-EN16931-R051 schlägt für jeden Betrag fehl, dessen currencyID nicht genau dem Wert von cbc:DocumentCurrencyCode entspricht. Die Fundstelle des Befunds ist der Betrag; ändern Sie seine currencyID auf die Rechnungswährung und stellen Sie sicher, dass die Zahl wirklich in dieser Währung angegeben ist.

Es gibt eine Ausnahme. Nennt cbc:TaxCurrencyCode eine Buchungswährung für die Umsatzsteuer, gehört die Umsatzsteuersumme in dieser Währung in ein zweites cac:TaxTotal ohne Aufschlüsselung, und dieser Betrag behält seine eigene Währung.

Was die Regel prüft

Die Regel besucht jedes Betragselement der in einer Rechnung verwendeten Arten, darunter cbc:PriceAmount und die Beträge von Nachlässen und Zuschlägen auf jeder Ebene, und vergleicht seine currencyID mit dem Text von cbc:DocumentCurrencyCode unter dem Wurzelelement. Der Vergleich ist exakt; Groß- und Kleinschreibung sowie Leerzeichen zählen.

Das cbc:TaxAmount eines cac:TaxTotal ohne cac:TaxSubtotal wird übersprungen; dorthin gehört die Umsatzsteuersumme in der Buchungswährung. Im Versuch war eine GBP-Rechnung mit cbc:TaxCurrencyCode gleich EUR und einer zweiten Steuersumme von 13.46 EUR fehlerfrei.

Die Ausnahme richtet sich nach der Form der Steuersumme, nicht nach der angegebenen Währung. Im Versuch meldete diese Regel eine zweite Steuersumme in EUR, die die Umsatzsteueraufschlüsselung wiederholte, für alle drei ihrer Beträge, zusammen mit PEPPOL-EN16931-R053 und mehreren Regeln zur Umsatzsteueraufschlüsselung.

Fehlt cbc:DocumentCurrencyCode oder ist es leer, gibt es nichts zum Abgleichen, und jeder Betrag im Dokument wird gemeldet. Den fehlenden Code selbst meldet BR-05.

Ein Code, der nicht in der Liste ISO 4217 steht, schlägt ebenfalls an dieser Regel fehl, da er keiner gültigen Dokumentwährung entsprechen kann; die Codelisten-Regeln BR-CL-03 und PEPPOL-EN16931-CL007 erscheinen dann zusätzlich.

BegriffBedeutungUBL-Element
BT-5Code für die Rechnungswährungcbc:DocumentCurrencyCode
-Währung eines Betrags (das Attribut currencyID)currencyID on each amount element, for example cac:InvoiceLine/cac:Price/cbc:PriceAmount/@currencyID
BT-6Code für die Umsatzsteuer-Buchungswährungcbc:TaxCurrencyCode
BT-111Gesamtbetrag der Umsatzsteuer in der Buchungswährung (ausgenommen)cac:TaxTotal/cbc:TaxAmount, in the cac:TaxTotal that has no cac:TaxSubtotal

Wie es in einer Integration dazu kommt

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

  • Preise stammen aus einer Preisliste in einer anderen Währung als die Rechnung, und das Preiselement übernimmt die Währung der Liste, während die Summen die Rechnungswährung verwenden.
  • Die Rechnung wird für den Käufer umgerechnet, und manche Beträge werden umgerechnet und umbenannt, andere nicht.
  • Die Dokumentwährung wird im Kopf je Kunde gesetzt, während die Attribute currencyID in der Vorlage fest eingetragen sind.
  • Umsatzsteuer in einer Landeswährung wird als vollständige Kopie der Aufschlüsselung übermittelt statt als einzelner Betrag in der Buchungswährung.

So korrigieren Sie das Dokument

  1. Legen Sie die Rechnungswährung fest und schreiben Sie sie in cbc:DocumentCurrencyCode.
  2. Geben Sie jeden Betrag in dieser Währung an. Stammt ein Preis aus einer Liste in einer anderen Währung, rechnen Sie ihn um, bevor die Position erzeugt wird; nur das Attribut zu ändern würde die falsche Zahl stehen lassen.
  3. Befüllen Sie jede currencyID an einer einzigen Stelle Ihres Mappings aus der Dokumentwährung.
  4. Muss die Umsatzsteuer zusätzlich in einer lokalen Buchungswährung angegeben werden, ergänzen Sie cbc:TaxCurrencyCode und ein zweites cac:TaxTotal, das nur ein cbc:TaxAmount in dieser Währung enthält, ohne cac:TaxSubtotal.

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: eine GBP-Rechnung mit dem Artikelpreis in EUR

<cbc:DocumentCurrencyCode>GBP</cbc:DocumentCurrencyCode>
<!-- parties, tax total and monetary totals omitted from this fragment -->

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <!-- item omitted from this fragment -->
  <cac:Price>
    <cbc:PriceAmount currencyID="EUR">12.5</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>

Ausschnitt der korrigierten Rechnung: Der Artikelpreis ist in GBP, der Rechnungswährung

<cac:Price>
  <cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
  <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>

Der einzige Unterschied ist die currencyID des Artikelpreises: EUR in der fehlerhaften Rechnung und GBP in der korrigierten, bei einer Rechnung mit dem Währungscode GBP. EUR ist ein gültiger Code nach ISO 4217, daher bleiben die Codelisten-Regeln still und der Prüfschritt EN 16931 besteht; diese Peppol-Regel bleibt der einzige Befund. Im aufgezeichneten Beispiel ist das Umbenennen die richtige Korrektur, weil der Preis von 12.5 immer in Pfund gemeint war. Ein Preis, der tatsächlich in Euro angegeben war, müsste zusätzlich umgerechnet werden.

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 gleichermaßen für UBL Invoice und CreditNote. Im Versuch meldete eine Gutschrift mit einem Preis in EUR in einem GBP-Dokument nur diese Regel.
  • Gemeldet wird sie im Peppol-Prüfschritt. Im aufgezeichneten Beispiel besteht der Prüfschritt EN 16931, weil keine seiner Regeln die Währung eines Artikelpreises mit der Dokumentwährung vergleicht.
  • Eine falsche Währung bei der Umsatzsteuersumme mit Aufschlüsselung betrifft auch EN 16931. Im Versuch brachte EUR dort zusätzlich BR-CO-15, die dann keine Umsatzsteuersumme in der Dokumentwährung findet.
  • Eine zweite Steuersumme in einer anderen Währung, übermittelt ohne cbc:TaxCurrencyCode, wird hier nicht gemeldet: Im Versuch meldete sie stattdessen PEPPOL-EN16931-R054.

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-24.

Die offizielle Definition von PEPPOL-EN16931-R051 (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.