Auf dieser Seite
Die kurze Antwort
BR-26 schlägt fehl, wenn eine Position kein cac:Price/cbc:PriceAmount hat. Ergänzen Sie nach cac:Item einen Block cac:Price mit dem Nettopreis je Einheit in cbc:PriceAmount, dazu eine cbc:BaseQuantity, wenn der Preis für mehr als eine Einheit angegeben ist.
Der Preis ist der Nettobetrag für eine Einheit oder für die Basismenge, nach einem etwaigen Preisnachlass. Er ist nicht die Positionssumme: Die aufgezeichnete Position mit 2 Einheiten im Wert von 25.00 hat einen Preis von 12.5.
Was die Regel prüft
Die Regel läuft für jede cac:InvoiceLine oder cac:CreditNoteLine und ist erfüllt, wenn die Position ein cac:Price mit einem cbc:PriceAmount hat. Der Betrag wird hier nicht beurteilt; ein Preis von 0 besteht.
In der Praxis bedeutet dieser Befund, dass der gesamte Block cac:Price fehlt. Das UBL-Schema erlaubt einer Position, cac:Price wegzulassen, doch sobald cac:Price vorhanden ist, muss es ein numerisches cbc:PriceAmount enthalten. Im Versuch wurden ein cac:Price nur mit einer Basismenge, ein leeres cac:Price und ein leeres cbc:PriceAmount alle am XSD-Prüfschritt abgewiesen, sodass keiner dieser Fälle diese Regel erreichte.
Zwei weitere Regeln schlagen bei derselben Position fehl, wann immer der Preis fehlt. BR-27 vergleicht den Preis mit null, und ein Preis, der nicht existiert, besteht diesen Vergleich nicht. PEPPOL-EN16931-R120 behandelt einen fehlenden Preis als 0 und erwartet daher als Positionsbetrag nur die Zuschläge der Position abzüglich der Nachlässe der Position.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BT-146 | Nettopreis des Artikels | cac:InvoiceLine/cac:Price/cbc:PriceAmount (cac:CreditNoteLine/cac:Price/cbc:PriceAmount in a credit note) |
| BG-29 | Preiseinzelheiten | cac:InvoiceLine/cac:Price |
| 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:
- Positionen für eine Pauschale oder eine einmalige Gebühr werden nur als Betrag geführt, und der Export schreibt keinen Preis, weil die Quelle für sie keinen Preis je Einheit hat.
- Der Preisblock wird nur ausgegeben, wenn ein Preislisteneintrag existiert, und diese Position wurde von Hand bepreist.
- Die Abbildung wurde allein gegen das UBL-Schema geschrieben, in dem
cac:Priceoptional ist, daher wurde es nie ergänzt. - Der Preis wird aus der Bestellposition übernommen, und Positionen, die erst bei der Rechnungsstellung hinzukommen, haben keine Bestellposition, aus der er stammen könnte.
So korrigieren Sie das Dokument
- Ermitteln Sie die Position anhand der Fundstelle des Befunds.
- Nehmen Sie den Nettopreis je Einheit aus der Quellposition: den Preis je Einheit nach einem etwaigen Nachlass auf Preisebene. Hat die Quelle nur eine Menge und einen Betrag, teilen Sie den Betrag vor Nachlässen und Zuschlägen der Position durch die Menge und behalten Sie so viele Nachkommastellen, dass Menge x Preis bis auf 0.02 wieder diesen Betrag ergibt.
- Schreiben Sie
cac:Pricein der Position nachcac:Item, mitcbc:PriceAmountin der Dokumentwährung und, bei einem Preis für mehrere Einheiten,cbc:BaseQuantitymit demselbenunitCodewie die Positionsmenge. - Halten Sie den Preis bei null oder positiv. Eine Minderungs- oder Korrekturposition erhält eine negative Menge und einen positiven Preis, sonst schlägt stattdessen
BR-27fehl.
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: Position 1 endet nach dem Artikel, ohne Preis
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<!-- tax category omitted from this fragment -->
</cac:Item>
</cac:InvoiceLine>Ausschnitt der korrigierten Rechnung: Auf den Artikel folgt ein Preis von 12.5 je 1 C62
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<!-- tax category omitted from this fragment -->
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>Die korrigierte Rechnung hat einen Block cac:Price mit einem cbc:PriceAmount von 12.5 und einer cbc:BaseQuantity von 1; die fehlerhafte Rechnung hat in Position 1 überhaupt keinen Preis. Das fehlerhafte Dokument meldet außerdem BR-27, weil die Prüfung, dass der Preis nicht negativ ist, keinen Wert zum Vergleichen hat und fehlschlägt, und PEPPOL-EN16931-R120, weil die Position bei einem als 0 gezählten Preis 0.00 ergeben müsste, nicht 25.00. Die Wiederherstellung des Preises behebt alle drei Befunde.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet BR-26, BR-27 und PEPPOL-EN16931-R120. 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:InvoiceLinein einer UBLInvoiceundcac:CreditNoteLinein einerCreditNote, wocac:Pricedieselbe Struktur hat. Als der Preis aus einer Gutschriftsposition entfernt wurde, wurden dieselben drei Regeln beicac:CreditNoteLine[1]gemeldet. - Der Bruttopreis und der Preisnachlass in
cac:Price/cac:AllowanceChargesind optional und spielen für diese Regel keine Rolle. Sind sie vorhanden, prüftPEPPOL-EN16931-R046, dass sich der Nettopreis aus ihnen ergibt. - Ein Preis von null gilt als vorhanden. Bei einer Position, deren Nettobetrag nicht null ist, scheitert er dennoch an der Positionsberechnung: Im Versuch mit der aufgezeichneten Position meldete ein Preis von 0 nur
PEPPOL-EN16931-R120.
Verwandte Regeln
- BR-27 weist einen negativen Nettopreis des Artikels zurück und wird mit dieser Regel gemeldet, wenn der Preis fehlt
- PEPPOL-EN16931-R120 prüft den Nettobetrag der Position gegen Menge und Preis und liest einen fehlenden Preis als 0
- PEPPOL-EN16931-R121 prüft die Basismenge des Preises im selben Preisblock
- BR-22 verlangt die Menge, mit der der Preis multipliziert wird
- 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-26 (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.

