{
  "id": "BR-AG-10",
  "country": "EU",
  "syntax": "ubl",
  "group": "ipsi",
  "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": "A VAT breakdown (BG-23) with VAT Category code (BT-118) \"IPSI\" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).",
  "statement_lang": "en",
  "context": "/*/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[normalize-space(cbc:ID) = 'M'][cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']",
  "test": "not(cbc:TaxExemptionReason) and not(cbc:TaxExemptionReasonCode)",
  "meaning": "A VAT breakdown (BG-23) with VAT Category code (BT-118) \"IPSI\" must not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120). The message says \"shall not have\" and capitalizes \"Category\". It quotes \"IPSI\". The published test checks that both the exemption reason and the exemption reason code are absent where the category code is M.",
  "fix": "Remove the exemption reason code and the exemption reason text from the M breakdown.",
  "example_fail": "A VAT breakdown category code is M and an exemption reason text or an exemption reason code is present.",
  "example_pass": "That breakdown's category code is M and both the exemption reason text and the exemption reason code are absent.",
  "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-AG-10/",
  "source_retrieved": "2026-10-18",
  "last_verified": "2026-10-18"
}
