Code lists — which values are permitted at all

A coded field is not a free-text field. The BR-CL family checks, for around two dozen fields, that the value sent comes from the list prescribed for that field.

23 rules · Rule set v2026-08-31

Where the lists come from

The lists are not part of the norm; the norm references them. UNTDID 1001 for the invoice type, UNTDID 4461 for payment means, UNTDID 5305 for the tax category, ISO 4217 for currencies, ISO 3166-1 for countries, UN/ECE Recommendation 20 for units of measure.

Which also means a code list can change without the norm changing. Hard-code the values in a mapping and you find out about a new edition when an invoice is rejected.

The cause underneath

Nearly every BR-CL failure arises the same way: the source system keeps the value as a house abbreviation — “pcs” for pieces, “INV” for invoice, “transfer” for the payment route — and the mapping passes it through unchanged. Translating it into the code is a table somebody has to build.

Build those tables once, centrally, rather than scattered per field. The three that fail most often are unit of measure (BT-130), invoice type (BT-3) and payment means (BT-81).

Four lists are not the same in UBL and CII

Under each rule is the number of values it accepts — read out of the compiled rule set rather than transcribed. Usually that number is the same in both syntaxes. For four rules it is not, and for one of them the lists do not overlap at all.

BR-CL-06 checks the tax point date code (BT-8). UBL accepts 3, 35 and 432; CII accepts 5, 29 and 72 — three values each, none of them in both. A mapping that passes the UBL code straight through to CII produces an error every time.

The other three are smaller and of the same kind: BR-CL-14 and BR-CL-15 accept the country code SS in UBL and, in its place, the retired AN in CII. BR-CL-08 admits eighteen more subject codes in CII than in UBL.

Two more rules are worth a note. BR-CL-17 and BR-CL-18 accept ten tax categories, not nine — besides S, Z, E, AE, K, G, O, L and M also B, split payment, which is only valid on a domestic Italian invoice. And BR-CL-24 enumerates no code list but six MIME types, printed below under the rule itself. The Extension allows a seventh through BR-DEX-01, application/xml.

All code-list rules

The field each rule guards, and beneath it the official rule text naming the prescribed list.

NormAPI provides technical validation, not tax or legal advice.