Official rule text
[BR-CL-25] Endpoint identifier scheme identifier MUST belong to the CEF EAS code list
Why this error occurs
The value must come from a fixed code list and the value in your file is not on it. Common causes: a free-text value instead of a code ("Invoice" instead of 380), a code from an older list version, lower-case codes, or a code valid in another standard but not in this one.
How to fix it
Replace the value with a code from the list named in the rule text (UNTDID 1001 for document types, UNTDID 5305 for VAT categories, ISO 4217 for currencies, ISO 3166-1 for countries, UN/ECE Recommendation 20/21 for units, EAS for electronic addresses, ISO 6523 ICD for scheme identifiers). Codes are case-sensitive.
What the validator checks
Checked element (context):
UBL
cbc:EndpointID[@schemeID]Test (XPath):
((not(contains(normalize-space(@schemeID), ' ')) and contains(' 0002 0007 0009 0037 0060 0088 0096 0097 0106 0130 0135 0142 0147 0151 0154 0158 0170 0177 0183 0184 0188 0190 0191 0192 0193 0194 0195 0196 0198 0199 0200 0201 0202 0203 0204 0205 0208 0209 0210 0211 0212 0213 0215 0216 0217 0218 0219 0220 0221 0225 0230 0235 0240 0244 0245 9910 9913 9914 9915 9918 9919 9920 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9957 9959 AN AQ AS AU EM ', concat(' ', normalize-space(@schemeID), ' '))))CII
ram:URIUniversalCommunication/ram:URIID[@schemeID]Test (XPath):
((not(contains(normalize-space(@schemeID), ' ')) and contains(' 0002 0007 0009 0037 0060 0088 0096 0097 0106 0130 0135 0142 0147 0151 0154 0158 0170 0177 0183 0184 0188 0190 0191 0192 0193 0194 0195 0196 0198 0199 0200 0201 0202 0203 0204 0205 0208 0209 0210 0211 0212 0213 0215 0216 0217 0218 0219 0220 0221 0225 0230 0235 0240 0244 0245 9910 9913 9914 9915 9918 9919 9920 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9957 9959 AN AQ AS AU EM ', concat(' ', normalize-space(@schemeID), ' '))))
Check your invoice
Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.
Same check via API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRelated rules
BR-CL-01Invoice type code is not a valid UNTDID 1001 codeBR-CL-03currencyID attribute is not an ISO 4217 codeBR-CL-04Invoice currency code is not an ISO 4217 codeBR-CL-05Tax currency code MUST be coded using ISO code list 4217 alpha-3BR-CL-06Value added tax point date code MUST be coded using a restriction of UNTDID 2005BR-CL-07Object identifier identification scheme identifier MUST be coded using a restriction…BR-CL-08Invoiced note subject code shall be coded using UNCL4451BR-CL-10Party identifier scheme is not an ISO 6523 ICD code
Frequently asked questions
What does BR-CL-25 mean?
BR-CL-25 is a en 16931 core rule: Endpoint identifier scheme identifier MUST belong to the CEF EAS code list
Will my invoice be rejected because of BR-CL-25?
Yes. BR-CL-25 is flagged "fatal"; validators (KoSIT, Peppol access points, the German ZRE/OZG-RE portals) reject the invoice until it is fixed.
Which formats does BR-CL-25 apply to?
Every EN 16931 invoice: XRechnung, ZUGFeRD 2.x / Factur-X (profiles EN 16931, EXTENDED, XRECHNUNG), Peppol BIS Billing 3.0, and national CIUS such as the Dutch NLCIUS or the Italian/Spanish profiles. Syntax: UBL and CII.
Source: EN 16931-1:2017 schematron (CEN TC434, via Peppol BIS 3.0.20). Catalogue generated from the official schematron on 2026-10-14.