# BR-CL-19

Quoted from a public specification. This page is not a validator, and it is not tax, legal, or accounting advice.

- Country: EU
- Syntax: UBL
- Severity: fatal
- Statement language: en
- Last verified: 2026-10-18

## Official statement

> Coded allowance reasons MUST belong to the UNCL 5189 code list

Source: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-CL-19/

Peppol BIS Billing 3.0, May 2026 release, EN 16931 model bound to UBL

Severity note: fatal, from the Flag column of the Peppol BIS Billing 3.0 UBL rules index retrieved 2026-10-18.

## Plain-language reading

A coded allowance reason must belong to the UNCL 5189 code list. The statement says MUST, writes UNCL 5189 with a space, and has no period. The context is an allowance whose charge indicator is false, with spaces around =. The test reads the element text and has a space after each comma. The list includes 41 and 105. The test does not call exists.

## What to change

On an allowance, set the reason code to a value from the UNCL 5189 list, with no space in the code.

## Illustration

Illustration of the condition in the official statement. Not an example published by the source.

**Fails the stated condition.** An allowance reason code contains a space, or it is not in the UNCL 5189 list.

**Passes the stated condition.** An allowance reason code is 41, with no space.

## Published context and test

Copied from the source. Not reimplemented on this page.

```
cac:AllowanceCharge[cbc:ChargeIndicator = false()]/cbc:AllowanceChargeReasonCode
```

```
((not(contains(normalize-space(.), ' ')) and contains(' 41 42 60 62 63 64 65 66 67 68 70 71 88 95 100 102 103 104 105 ', concat(' ', normalize-space(.), ' '))))
```

[All rule notes](https://einvoicegoblin.com/rules/index.md) · [JSON](https://einvoicegoblin.com/rules/BR-CL-19.json) · [HTML](https://einvoicegoblin.com/rules/BR-CL-19/) · [llms.txt](https://einvoicegoblin.com/llms.txt) · [Invoice page](https://einvoicegoblin.com/) · [Privacy](https://einvoicegoblin.com/privacy.html)
