Auf dieser Seite
Die kurze Antwort
BR-28 schlägt fehl, wenn cac:Price/cac:AllowanceCharge/cbc:BaseAmount in einer Position unter null liegt. Dieses Element ist der Bruttopreis des Artikels, der Preis je Einheit vor dem Preisnachlass, und er kann nicht negativ sein. Korrigieren Sie das Vorzeichen in der Quelle, sodass der Bruttopreis positiv ist und der Nettopreis in cbc:PriceAmount ihm abzüglich des Nachlasses entspricht.
Im aufgezeichneten Beispiel stimmt der negative Bruttopreis auch nicht mehr mit dem Nettopreis überein, daher kommt PEPPOL-EN16931-R046 hinzu.
Was die Regel prüft
Für jede cac:InvoiceLine oder cac:CreditNoteLine liest die Regel das cbc:BaseAmount des cac:AllowanceCharge innerhalb von cac:Price, sofern es eines gibt, und verlangt, dass es null oder größer ist.
Ohne cac:AllowanceCharge auf Preisebene, oder ohne eines mit cbc:BaseAmount, ist kein Bruttopreis angegeben, und die Regel ist erfüllt. Im Versuch blieb nach dem Löschen des Bruttopreises aus der aufgezeichneten Position eine gültige Rechnung übrig.
Null wird von dieser Regel akzeptiert. Im Versuch wurde ein Bruttopreis von 0 nicht von BR-28 gemeldet; nur PEPPOL-EN16931-R046 beanstandete ihn, weil 0 minus 2.5 nicht den Nettopreis von 12.5 ergibt.
Die Vorzeichenprüfung steht für sich. Mit einem Bruttopreis von -15 und einem Nachlass von -27.5, der den Nettopreis bei 12.5 hält, wurde BR-28 im Versuch trotzdem gemeldet, und sonst nichts.
Der Nachlassbetrag, der Nettopreis und die Menge werden nicht gelesen. Ein negativer Nettopreis ist eine eigene Regel, BR-27.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BT-148 | Bruttopreis des Artikels | cac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:BaseAmount (cac:CreditNoteLine in a credit note) |
| BT-147 | Rabatt auf den Artikelpreis | cac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:Amount |
| BT-146 | Nettopreis des Artikels | cac:InvoiceLine/cac:Price/cbc:PriceAmount |
Wie es in einer Integration dazu kommt
Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:
- Eine Minderungs- oder Rücksendeposition wird erzeugt, indem jedes Preisfeld negiert wird, auch der Bruttopreis.
- Das Vorzeichen des Nettobetrags der Position wird bei der Abbildung einer Rücksendung auf die Preise je Einheit übertragen.
- Der Bruttopreis wird aus Nettopreis und Nachlass mit vertauschten Operanden berechnet, etwa als Nachlass minus Nettopreis.
- Ein Eintrag auf Preisebene wird für eine Minderung verwendet, die auf die Position oder das Dokument gehört.
So korrigieren Sie das Dokument
- Ermitteln Sie die Position anhand der Fundstelle des Befunds und lesen Sie
cbc:PriceAmountsowiecbc:Amountundcbc:BaseAmountinnerhalb voncac:Price/cac:AllowanceCharge. - Schreiben Sie den Bruttopreis als positiven Preis je Einheit vor Nachlass. Ist die Position eine Minderung oder Korrektur, drücken Sie das über eine negative
cbc:InvoicedQuantity(odercbc:CreditedQuantity) und einen negativen Nettobetrag der Position aus, nicht über die Preise. - Stellen Sie sicher, dass Nettopreis = Bruttopreis - Nachlass exakt gilt, da
PEPPOL-EN16931-R046dies ohne Toleranz prüft. - Hat die Quelle keinen verlässlichen Bruttopreis, lassen Sie das gesamte
cac:AllowanceChargeauf Preisebene weg und übermitteln Sie nur den Nettopreis.
Die aufgezeichnete Position hat einen Nettopreis von 12.5 und einen Preisnachlass von 2.5.
Fehlerhaft: Bruttopreis -15 - Nachlass 2.5 = -17.5, übermittelter Nettopreis 12.5, daher schlagen BR-28 und PEPPOL-EN16931-R046 beide fehl Korrigiert: Bruttopreis 15 - Nachlass 2.5 = 12.5, also der übermittelte Nettopreis
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: Der Bruttopreis ist -15
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="GBP">2.5</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">-15</cbc:BaseAmount>
</cac:AllowanceCharge>
</cac:Price>Ausschnitt der korrigierten Rechnung: Der Bruttopreis ist 15, und 15 minus 2.5 ergibt den Nettopreis
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="GBP">2.5</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">15</cbc:BaseAmount>
</cac:AllowanceCharge>
</cac:Price>Der Bruttopreis in cbc:BaseAmount ist -15 in der fehlerhaften Rechnung und 15 in der korrigierten; sonst ändert sich nichts. Das fehlerhafte Dokument meldet außerdem PEPPOL-EN16931-R046 beim Preisnachlass, weil -15 minus 2.5 den Wert -17.5 ergibt, während der Nettopreis 12.5 ist. Mit korrigiertem Vorzeichen ergibt 15 minus 2.5 den Wert 12.5, und beide Befunde verschwinden.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet BR-28 und PEPPOL-EN16931-R046. 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 für
cac:InvoiceLineundcac:CreditNoteLine. Eine Gutschriftsposition mit demselben Bruttopreis von -15 meldete im VersuchBR-28undPEPPOL-EN16931-R046. - Wird vom Prüfschritt EN 16931 gemeldet; der Begleitbefund,
PEPPOL-EN16931-R046, stammt aus dem Peppol-Prüfschritt. - Der Bruttopreis fließt in keine Summe ein. Der Nettobetrag der Position wird aus dem Nettopreis berechnet, daher störte der negative Wert nichts außer dem Preis selbst.
Verwandte Regeln
- BR-27 ist die entsprechende Regel für einen negativen Nettopreis
- PEPPOL-EN16931-R046 prüft den Nettopreis gegen diesen Bruttopreis und den Nachlass
- PEPPOL-EN16931-R044 verlangt, dass dasselbe Element auf Preisebene ein Nachlass ist
- 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-24.
Die offizielle Definition von BR-28 (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.

