{
  "id": "BR-CL-16",
  "country": "EU",
  "syntax": "ubl",
  "group": "code-list",
  "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": "Payment means in an invoice MUST be coded using UNCL4461 code list",
  "statement_lang": "en",
  "context": "cac:PaymentMeans/cbc:PaymentMeansCode",
  "test": "( ( not(contains(normalize-space(.),' ')) and contains( ' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 74 75 76 77 78 91 92 93 94 95 96 97 98 ZZZ ',concat(' ',normalize-space(.),' ') ) ) )",
  "meaning": "A payment means code must use the UNCL4461 code list. The statement says MUST, writes UNCL4461 with no space, and has no period. The context is cac:PaymentMeans/cbc:PaymentMeansCode. The test reads the element text. It keeps a missing space after each of four commas. A single space sits between the two opening parentheses. A single space sits after contains( before the quote. A single space sits before each of three closing parentheses. Those single spaces are not a repeated space. The list includes 30 and ZZZ. The test does not call exists.",
  "fix": "Set the payment means code to a value from the UNCL4461 list, with no space in the code.",
  "example_fail": "The payment means code contains a space, or it is not in the UNCL4461 list.",
  "example_pass": "The payment means code is 30, with no space.",
  "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-CL-16/",
  "source_retrieved": "2026-10-18",
  "last_verified": "2026-10-18"
}
