Zum Inhalt springen

Ironfang Finance - Regelreferenz

PEPPOL-EN16931-R121: Eine Basismenge des Preises größer als null angeben oder sie weglassen

Gibt ein Positionspreis eine Basismenge an, muss sie größer als null sein. Null und negative Werte schlagen fehl; das Element wegzulassen ist zulässig.

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

Auf dieser Seite

Die kurze Antwort

PEPPOL-EN16931-R121 schlägt fehl, wenn cac:Price/cbc:BaseQuantity in einer Position 0 oder negativ ist. Die Basismenge ist die Anzahl der Einheiten, für die der Preis gilt: Schreiben Sie 1 für einen Preis pro einzelner Einheit, die tatsächliche Anzahl für einen Preis pro 100 oder pro 1000, oder lassen Sie das Element weg.

Was die Regel prüft

Die Regel läuft für jede cac:InvoiceLine und cac:CreditNoteLine. Hat der Positionspreis kein cbc:BaseQuantity, ist sie erfüllt. Hat er eines, muss der Wert echt größer als null sein.

Jede positive Dezimalzahl wird akzeptiert, auch Werte unter 1: Eine Basismenge von 0.5 mit entsprechend angepasstem Preis besteht.

Der Vergleich ist numerisch, daher schlägt 0.00 genauso fehl wie 0.

BegriffBedeutungUBL-Element
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:

  • Die Basismenge ist ein nicht gesetztes numerisches Feld, das als 0 serialisiert wird.
  • Das Quellsystem hat eine Spalte für die Preiseinheit, die bei gewöhnlichen Artikeln leer ist, und ein leerer Wert wird in 0 umgewandelt, statt das Element wegzulassen.
  • Eine Retouren- oder Korrekturposition kehrt das Vorzeichen jeder Menge in der Position um, auch das der Basismenge des Preises.
  • Das Feld wurde aus etwas Fremdem gemappt, etwa einem Lagerbestand oder einer Packungsanzahl, der bei diesem Artikel zufällig null ist.

So korrigieren Sie das Dokument

  1. Klären Sie, wofür der Preis in cbc:PriceAmount gilt: für eine Einheit oder für ein Los von Einheiten.
  2. Schreiben Sie für einen Preis pro einzelner Einheit eine Basismenge von 1, oder geben Sie cbc:BaseQuantity gar nicht aus. Schreiben Sie für einen Preis pro Los die Losgröße.
  3. Halten Sie die Basismenge auch in negativen Positionen positiv. Das Vorzeichen einer Position gehört an die berechnete oder gutgeschriebene Menge, nicht an die Basismenge.
  4. Prüfen Sie danach die Positionsberechnung erneut. PEPPOL-EN16931-R120 teilt den Preis durch die Basismenge, daher ändert ein Wechsel von 0 auf einen anderen Wert als 1 den erwarteten Nettobetrag der Position.

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 Rechnungsposition: eine Basismenge des Preises von 0

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

Ausschnitt der korrigierten Rechnungsposition: Der Preis gilt für 1 Einheit

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

Nur cbc:BaseQuantity unterscheidet sich: 0 im fehlerhaften Dokument, 1 im korrigierten. Das fehlerhafte Dokument meldet nur PEPPOL-EN16931-R121. Die Regel zur Positionsberechnung PEPPOL-EN16931-R120 schlägt nicht zusätzlich an, weil sie eine Basismenge von 0 als 1 liest und 2 x 12.5 dem Nettobetrag der Position von 25.00 entspricht.

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 Positionen in UBL Invoice und CreditNote. Eine Basismenge von 0 in einer Gutschriftposition meldet nur diese Regel, genau wie in einer Rechnung.
  • Ein negativer Wert unterscheidet sich in seinen Nebenwirkungen von null. Mit -1 in der aufgezeichneten Position meldet der Validator bei beiden Dokumenttypen zusätzlich PEPPOL-EN16931-R120, weil diese Regel eine negative Basismenge sehr wohl verwendet und der erwartete Positionsbetrag zu -25.00 wird.
  • Ohne cbc:BaseQuantity besteht das Dokument diese Regel und jeden anderen Prüfschritt, im Rechnungs- wie im Gutschriftbeispiel; die Positionsberechnung behandelt den Preis dann als Preis pro 1 Einheit.
  • Ein nicht numerisches oder leeres cbc:BaseQuantity erreicht diese Regel nie. Der XSD-Prüfschritt weist das Dokument ab, und die Prüfschritte EN 16931 und Peppol werden übersprungen.

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 PEPPOL-EN16931-R121 (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.