{
  "id": "BR-28",
  "country": "EU",
  "syntax": "ubl",
  "group": "document",
  "severity": "fatal",
  "severity_note": "fatal, from the Flag column of the Peppol BIS Billing 3.0 UBL rules index retrieved 2026-10-18.",
  "spec": "Peppol BIS Billing 3.0, May 2026 release, EN 16931 model bound to UBL",
  "statement": "The Item gross price (BT-148) shall NOT be negative.",
  "statement_lang": "en",
  "context": "cac:InvoiceLine | cac:CreditNoteLine",
  "test": "(cac:Price/cac:AllowanceCharge/cbc:BaseAmount) >= 0 or not(exists(cac:Price/cac:AllowanceCharge/cbc:BaseAmount))",
  "meaning": "The item gross price (BT-148) must not be negative. The official message capitalizes NOT. The published test checks that the gross price base amount is greater than or equal to zero, or that the base amount is absent. The absent branch calls exists. The comparison has spaces around >=. The context is the invoice line or the credit note line.",
  "fix": "Set the item gross price (BT-148) to zero or a positive amount, or leave the gross price base amount out.",
  "example_fail": "The gross price base amount is present and less than zero.",
  "example_pass": "The gross price base amount is zero or greater, or the line has no gross price base amount.",
  "example_note": "Illustration of the condition in the official statement. Not an example published by the source.",
  "source_url": "https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-28/",
  "source_retrieved": "2026-10-18",
  "last_verified": "2026-10-18"
}
