Validation rules
BR-28 — EN 16931 rule
The item gross price (BT-148) must not be negative.
- Rule
BR-28— official EN 16931 / XRechnung rule- Severity
- error
- Business term
BT-148— Item gross price- Field in your JSON
invoice.lines[*].gross_price- Detected by
- tier 3 — KoSIT validator (authoritative)
- Reachability
- Not expressible through the normbill invoice model — documented for completeness
The request schema requires gross_price >= 0 whenever it is set.
How to fix it
Use a gross price >= 0; express reductions through the price discount (BT-147), not a negative price.
BR-28 auf Deutsch — was bedeutet der Fehler?
Der Brutto-Einzelpreis (BT-148) darf nicht negativ sein.
So beheben Sie den Fehler
Verwenden Sie einen Bruttopreis >= 0; Preisnachlässe gehören in den Preisrabatt (BT-147), nicht in einen negativen Preis. Über normbill ist gross_price >= 0.
Related rules
BR-27— The item net price (BT-146) must not be negative.BR-29— The invoicing period end date (BT-74) must not be earlier than its start date (BT-73).BR-30— An invoice line period end date (BT-135) must not be earlier than its start date (BT-134).BR-26— An invoice line has no item net price (BT-146).BR-25— An invoice line has no item name (BT-153).BR-31— A document-level allowance (BG-20) has no allowance amount (BT-92).
Official sources
- XRechnung specification (KoSIT / xeinkauf.de)
- KoSIT validator on GitHub and the XRechnung validator configuration
Every 422 from the API lists the rule id, the path in your request JSON, a plain-language message and a suggested fix — see the docs overview for the report format.
Or try it live: drop any XRechnung XML on the free validator — same KoSIT-backed report, no account.