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.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BT-149 | Basismenge zum Artikelpreis | cac: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
- Klären Sie, wofür der Preis in
cbc:PriceAmountgilt: für eine Einheit oder für ein Los von Einheiten. - Schreiben Sie für einen Preis pro einzelner Einheit eine Basismenge von 1, oder geben Sie
cbc:BaseQuantitygar nicht aus. Schreiben Sie für einen Preis pro Los die Losgröße. - 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.
- Prüfen Sie danach die Positionsberechnung erneut.
PEPPOL-EN16931-R120teilt den Preis durch die Basismenge, daher ändert ein Wechsel von 0 auf einen anderen Wert als 1 den erwarteten Nettobetrag der Position.
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
- Die fehlerhafte Rechnung meldet PEPPOL-EN16931-R121. 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 Positionen in UBL
InvoiceundCreditNote. 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:BaseQuantitybesteht 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:BaseQuantityerreicht diese Regel nie. Der XSD-Prüfschritt weist das Dokument ab, und die Prüfschritte EN 16931 und Peppol werden übersprungen.
Verwandte Regeln
- PEPPOL-EN16931-R120 verwendet die Basismenge bei der Berechnung des Nettobetrags der Position
- PEPPOL-EN16931-R046 prüft den Nettopreis gegen den Bruttopreis und den Preisnachlass
- BR-27 weist einen negativen Nettopreis ab
- 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-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.

