Zum Inhalt springen

Ironfang Finance - Regelreferenz

PEPPOL-EN16931-R130: Für die Basismenge des Preises die Einheit der Positionsmenge verwenden

Hat cac:Price/cbc:BaseQuantity einen unitCode, muss es der Code der Positionsmenge sein. Rechnen Sie den Preis um, statt die Einheit umzubenennen.

Peppol BIS BillingFehler: Das Dokument ist ungültigPositionen und PreiseCodelisten

Auf dieser Seite

Die kurze Antwort

PEPPOL-EN16931-R130 schlägt fehl, wenn cac:Price/cbc:BaseQuantity einen anderen unitCode hat als die Menge der Position. Im aufgezeichneten Beispiel steht die Menge in C62 und die Basismenge in H87. Geben Sie der Basismenge die Einheit der Menge, und wenn der Preis in einer anderen Einheit angegeben wurde, drücken Sie Preis und Basismenge in der Einheit der Menge aus.

Jeder Code kann für sich gültig sein; was fehlschlägt, ist die Abweichung. C62 (eins) und H87 (Stück) stehen beide in der Einheitenliste, weshalb der Prüfschritt EN 16931 besteht.

Was die Regel prüft

Die Regel läuft für jedes cbc:BaseQuantity mit einem Attribut unitCode und vergleicht diesen Code mit dem unitCode der Menge in derselben Position: cbc:InvoicedQuantity in einer Rechnung, cbc:CreditedQuantity in einer Gutschrift.

Verglichen werden die beiden Zeichenketten unverändert, ohne Umrechnung von Einheiten und ohne Angleichung der Groß- und Kleinschreibung. Im Versuch schlug c62 gegenüber C62 hier und unter BR-CL-23 fehl, und unitCode=" C62 ", mit Leerzeichen um den Code, schlug nur hier fehl.

Drei Fälle werden übersprungen. Eine Basismenge ohne unitCode wird nicht geprüft; im Versuch ergab das Entfernen des Attributs aus der aufgezeichneten Basismenge ein Ergebnis ohne Befund. Eine Position ohne Mengenelement bleibt unberührt, sie meldet BR-22. Eine Position ohne cbc:BaseQuantity hat nichts zu vergleichen.

Eine Menge, die ohne unitCode vorhanden ist, zählt trotzdem als Menge, daher schlägt eine Basismenge mit Einheit gegen sie fehl. Deshalb meldet eine fehlende Positionseinheit diese Regel neben BR-23.

BegriffBedeutungUBL-Element
BT-150Code der Maßeinheit der Basismenge zum Artikelpreiscac:InvoiceLine/cac:Price/cbc:BaseQuantity/@unitCode
BT-130Code der Maßeinheit der in Rechnung gestellten Mengecac:InvoiceLine/cbc:InvoicedQuantity/@unitCode (cac:CreditNoteLine/cbc:CreditedQuantity/@unitCode in a credit note)
BT-149Basismenge zum Artikelpreiscac:InvoiceLine/cac:Price/cbc:BaseQuantity

Wie es in einer Integration dazu kommt

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

  • Der Preis stammt aus einer Preisliste, die pro Kilogramm, pro Meter oder pro Packung geführt wird, während die Menge in Gramm, Zentimetern oder Einzelstücken erfasst ist.
  • Zwei Mapping-Tabellen übersetzen Einheiten, eine für Auftrags- oder Lieferpositionen und eine für die Preisliste, und sie geben derselben lokalen Einheit unterschiedliche Codes, etwa C62 in der einen und H87 in der anderen.
  • Die Einheit der Basismenge ist in der Vorlage fest eingetragen, während die Positionseinheit vom Produkt kommt.
  • Die Positionseinheit wurde nach einem Befund von BR-CL-23 korrigiert, und die Basismenge behielt den alten Code.

So korrigieren Sie das Dokument

  1. Vergleichen Sie die beiden unitCode-Werte in der fehlerhaften Position und entscheiden Sie, in welcher Einheit die Menge tatsächlich gezählt wird. Die Einheit der Menge beschreibt, was geliefert wurde; behalten Sie sie daher bei, es sei denn, sie ist selbst falsch.
  2. Bedeuten beide Codes für Sie dasselbe, etwa C62 und H87 für Einzelstücke, wählen Sie einen und schreiben Sie ihn an beide Elemente. Sorgen Sie dafür, dass das Einheiten-Mapping für jede lokale Einheit genau einen Code liefert.
  3. Ist der Preis in einer anderen Einheit angegeben, drücken Sie die Basismenge in der Positionseinheit aus. Ein Preis von 50 pro Kilogramm bei einer Menge von 500 Gramm wird zu einem Preis von 50 für eine Basismenge von 1000 GRM. Im Versuch bestand diese Position mit einem Nettobetrag von 25.00 jeden Prüfschritt.
  4. Benennen Sie nicht nur die Einheit um. PEPPOL-EN16931-R120 ignoriert Einheiten und teilt den Preis als reine Zahl durch die Basismenge: Im Versuch schlug dieselbe Position mit dem Preis pro 1 KGM auch bei dieser Regel fehl, weil 500 x 50 nicht 25.00 ergibt, und GRM über eine Basismenge von 1 zu schreiben würde diese Lücke bestehen lassen.
  5. Den unitCode an cbc:BaseQuantity wegzulassen besteht ebenfalls, weil die Regel dann nichts zu vergleichen hat; denselben Code wie bei der Menge zu schreiben hält den Preis jedoch selbsterklärend.

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: Die Menge steht in C62, die Basismenge des Preises in H87

<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="GBP">12.5</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="H87">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>

Ausschnitt der korrigierten Rechnung: Beide Mengen stehen in C62

<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="GBP">12.5</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>

Nur der unitCode von cbc:BaseQuantity unterscheidet sich: H87 in der fehlerhaften Rechnung, C62 in der korrigierten, passend zu cbc:InvoicedQuantity. Das fehlerhafte Dokument meldet nur PEPPOL-EN16931-R130. H87 ist eine anerkannte Einheit, daher bleibt BR-CL-23 still, und die Positionsberechnung beachtet keine Einheiten, daher findet PEPPOL-EN16931-R120 weiterhin 2 x 12.5 = 25.00.

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. In einer Gutschrift wird mit cbc:CreditedQuantity verglichen; im Versuch meldete eine gutgeschriebene Menge in C62 gegenüber einer Basismenge in H87 nur diese Regel, wie bei der Rechnung.
  • Dies ist eine Regel aus Peppol BIS, gemeldet im Peppol-Prüfschritt. Der Prüfschritt EN 16931 meldet die Abweichung nicht: Im aufgezeichneten Beispiel besteht er.
  • Ein nicht anerkannter Code an einem der beiden Elemente ist ein eigener Befund, BR-CL-23, und beide Regeln können für dieselbe Basismenge zusammen gemeldet werden.

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-R130 (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.