Rule BR-CL-04
The invoice currency must be an ISO 4217 alpha-3 code
The currency of the invoice is written as a three letter ISO 4217 code, which is a code and not a name, a symbol or a locale.
Business term BT-5, Invoice currency code. Source: EN 16931. Our wording, not the normative text, which is published in the Peppol BIS Billing 3.0 rule list (EN 16931 rules) and was checked against it on 2026-08-16.
Why it fires on invoices that look fine
Almost nobody hits this rule because they forgot the field exists. They hit it because something between their system and the document dropped it, changed its shape, or filled it with a value that is right somewhere else. These are the causes worth checking first.
- The field holds a name or a symbol rather than a code: "EURO", "Euro", "euros" or the sign itself. This is the single most common form of the failure and it survives every human review because it reads correctly.
- A locale identifier leaks in from the formatting layer, so the field arrives as "fr-FR" or "en_GB" because the code that fills it was reaching for a display format rather than a currency.
- The code is lowercase. ISO 4217 alpha-3 is uppercase, and validators generally do not fold case for you.
- A numeric ISO 4217 code is sent instead of the alpha one, so 978 appears where EUR belongs. Both identify the euro; only one satisfies this rule.
What to change
- Send EUR, USD, GBP and so on: three uppercase letters, always the alpha code, never the numeric one and never the symbol.
- Uppercase and trim the value at the edge of your export rather than trusting whatever the database holds, because this field is often free text with years of history behind it.
- Keep the currency separate from the display format in your own model. When one field feeds both a number formatter and the invoice, it eventually gets a locale written into it.
- If you invoice in a currency other than your accounting currency, check that the VAT amount in the accounting currency carries its own currency code as well: a mismatch there fails a different rule for the same underlying reason.
The validator runs in your browser. Nothing is uploaded, and you can confirm that yourself with the network panel open.
Rules you are likely to hit next
A document that breaks BR-CL-04 usually breaks one of these too, because the same mapping gap tends to affect neighbouring fields.
Questions people actually ask
- What does BR-CL-04 mean?
- The currency of the invoice is written as a three letter ISO 4217 code, which is a code and not a name, a symbol or a locale.
- Which field does BR-CL-04 apply to?
- BT-5, Invoice currency code. That is the name the semantic model uses, which is what you search for in your own system's mapping when the identifier alone does not tell you which field to look at.
- Does our validator check BR-CL-04?
- Yes. Paste your invoice data into the free validator and it reports this rule with the value it actually saw, without the document leaving your browser.