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.

Fehlerhaft
<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>
Korrigiert
<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

NormAPI liefert technische Validierung, keine Steuer- oder Rechtsberatung.