BR-28The Item gross price (BT-148) shall NOT be negative.
Offizieller Regeltext
Der Bruttopreis einer Position (BT-148) darf nicht negativ sein — der Listenpreis vor dem Rabatt, nicht der Nettopreis aus BR-27. Anders als dieser ist er freiwillig: wo kein Bruttopreis steht, kann BR-28 nicht auslösen.
- Schweregrad
- Fehler
- Gilt für
- CII, UBL
- Regelwerk
- v2026-08-31
- Geprüft am
Geschrieben und gegen das offizielle KoSIT-Regelwerk geprüft von Dmytro Yalanskyi, NormAPI.
Warum tritt BR-28 auf?
Wer den Nettopreis negativ setzt, setzt meist auch den Bruttopreis negativ, weil beide aus derselben Quelle stammen. Die beiden Regeln melden sich deshalb fast immer gemeinsam.
Was der Validator prüft
Der Ausdruck, den das offizielle KoSIT-Regelwerk auswertet — nicht paraphrasiert, sondern aus der ausgelieferten Schematron-Datei gelesen. UBL und CII adressieren verschiedene Dokumentbäume, deshalb steht dieselbe Regel je Syntax anders da.
- UBL
(cac:Price/cac:AllowanceCharge/cbc:BaseAmount) >= 0 or not(exists(cac:Price/cac:AllowanceCharge/cbc:BaseAmount))- CII
(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount >= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)
Quelle: Regelwerk v2026-08-31
Wie behebt man BR-28?
Halten Sie cac:Price/cac:AllowanceCharge/cbc:BaseAmount (UBL) beziehungsweise ram:GrossPriceProductTradePrice/ram:ChargeAmount (CII) positiv und drehen Sie das Vorzeichen dort, wo die Norm es vorsieht — siehe BR-27. Sobald ein Bruttopreis übermittelt wird, verlangt PEPPOL-EN16931-R046 außerdem, dass er aufgeht: Nettopreis = Bruttopreis − Rabatt.
Im XML
Ausschnitt in UBL. Der CII-Pfad steht oben im Text — dieselbe Änderung, andere Elementnamen.
<cac:Price>
<cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">-110.00</cbc:BaseAmount>
</cac:AllowanceCharge>
</cac:Price><cac:Price>
<cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">110.00</cbc:BaseAmount>
</cac:AllowanceCharge>
</cac:Price>Verwandte Regeln
- Die Kernregeln der EN 16931 — welche Angaben eine Rechnung tragen muss
- BR-27 — Negativer Nettopreis (BT-146)
- BR-29 — If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).
NormAPI liefert technische Validierung, keine Steuer- oder Rechtsberatung.