{
  "id": "BR-44",
  "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": "Each Invoice line charge shall have an Invoice line charge reason or an invoice line allowance reason code.",
  "statement_lang": "en",
  "context": "//cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = true()] | //cac:CreditNoteLine/cac:AllowanceCharge[cbc:ChargeIndicator = true()]",
  "test": "exists(cbc:AllowanceChargeReason) or exists(cbc:AllowanceChargeReasonCode)",
  "meaning": "Each Invoice line charge must have an Invoice line charge reason or an invoice line allowance reason code. The message names no BG id and no BT id. It says \"an invoice line allowance reason code\", and the word \"invoice\" there is lowercase. It says \"shall have\" and starts with \"Each\". It ends with a period. The context is an invoice line charge or a credit note line charge, with spaces around = on the charge indicator. The published test checks that an allowance-charge reason or an allowance-charge reason code exists.",
  "fix": "On each invoice line charge, send an allowance-charge reason or an allowance-charge reason code.",
  "example_fail": "An invoice line charge or a credit note line charge has neither a reason nor a reason code.",
  "example_pass": "That line charge has a reason or a reason code.",
  "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-44/",
  "source_retrieved": "2026-10-18",
  "last_verified": "2026-10-18"
}
