UFI developers manual : October 2019.
Date: 2019-10-25
Institutions: European Chemicals Agency
Subjects: EU market, classification, dangerous substance, patient's rights, public health, regulation (EU), software, therapeutics, user guide

UFI Developers Manual 

October 2019 

 
 
 
UFI Developers Manual 

Disclaimer 

2 

This document aims to assist users in complying with their obligations under the CLP 
Regulation. However, users are reminded that the text of the CLP Regulation is the only 
authentic legal reference and that the information in this document does not constitute legal 
advice. Usage of the information remains under the sole responsibility of the user. The 
European Chemicals Agency does not accept any liability with regard to the use that may be  
made of the information contained in this document. 

Version 

Changes 

1.3 

1.2 

1.1 

1.0 

0.3 

0.2 

0.1 

Added possibility to  generate UFIs for 
companies that  have a VAT number but for 
commercial reasons they chose not to use it 

14/08/2019 

C larification / Update of C hapter 2.1.3 “Step 
3 – C haracter reorganisation”. 

11/03/2019 

C onverted C ommission document to an 
EC HA publication:  EC HA visual identity 
applied, EC HA disclaimer added and list  of 
participating countries updated 

02/07/2018 

Same as version 0.3 – Marked ‘Final’ 

04/10/2016 

C orrected typos, minor enhancements 

16/09/2016 

C orrected typos, integrated comments from 
EC HA and DG GROW 

08/08/2016 

First  complete draft version 

14/07/2016 

UFI Developers Manual 

Reference: ECHA-19-H-08-EN 
ISBN: 978-92-9020-724-5 
Cat. Number: ED-01-19-715-EN-N 
DOI: 10.2823/77506 
Publ.date: October 2019 
Language: EN 

© European Chemicals Agency, 2019 
Cover page © European Chemicals Agency 

If you have questions or comments in relation to this document please send them (quote the 
reference and issue date) using the information request form. The information request form 
can be accessed via the Contact ECHA page at: 
http://echa.europa.eu/contact  

European Chemicals Agency 

Mailing address: P.O. Box 400, FI-00121 Helsinki, Finland 
Visiting address: Annankatu 18, Helsinki, Finland 

 
 
 
 
 
 
 
 
UFI Developers Manual 

Table of Contents 

3 

1. INTRODUCTION ........................................................................................... 5 

1.1 The Unique Formula Identifier...........................................................................5 
1.2 Conventions .................................................................................................6 
1.3 References ..................................................................................................7 
1.4 Abbreviations ...............................................................................................8 

2. UFI ALGORITHM ........................................................................................... 9 

2.1 Creating a UFI ..............................................................................................9 

2.1.1 Step 1 – UFI payload numerical value ................................................................................... 9 
2.1.2 Step 2 – UFI payload in base-31 ........................................................................................ 16 
2.1.3 Step 3 – C haracter reorganisation ...................................................................................... 16 
2.1.4 Step 4 – C hecksum calculation........................................................................................... 16 

2.2 Validating a UFI .......................................................................................... 17 

3. UFI GENERATOR WEB SERVICES....................................................................18 

3.1 REST web service ........................................................................................ 18 

3.1.1 createUFIByCount............................................................................................................. 18 
3.1.2 createUFIByList ................................................................................................................ 20 
3.1.3 validateUFI  ...................................................................................................................... 21 

3.2 SOAP web service........................................................................................ 22 

3.2.1 Requests for createUFIByCount and createUFIByList ............................................................ 22 
3.2.2 Response to createUFIByCount and createUFIByList ............................................................. 23 
3.2.3 Fault for createUFIByC ount and createUFIByList .................................................................. 23 
3.2.4 Request for validateUFI ..................................................................................................... 24 
3.2.5 Response to validateUFI .................................................................................................... 24 

3.3 Error codes ................................................................................................ 24 

ANNEX A. EXAMPLES OF UFI ALGORITHM USAGE ................................................26 

A.1 UFI with Irish VATIN .................................................................................... 26 
A.2 UFI with company key .................................................................................. 27 

ANNEX B. SAMPLE UFIS ...................................................................................30 

Tables 

Table 1-1: External references......................................................................................................... 7 

Table 1-2: Abbreviations ................................................................................................................. 8 

Table 2-1: C ountry groups and codes lookup table........................................................................... 10 

Table 2-2: Rules for VAT number conversion to numerical value........................................................ 12 
Table 2-3: Base-31 character set ................................................................................................... 16 

Table 2-4: UFI characters reorganisation tables ............................................................................... 16 

Table 3-1: Web service operations ................................................................................................. 18 

 
 
 
 
UFI Developers Manual 

4 

Table 3-2: REST operation createUFIByC ount .................................................................................. 18 

Table 3-3: REST operation createUFIByLis ...................................................................................... 20 
Table 3-4: REST operation validateUFI ........................................................................................... 21 

Table 3-5: Error code for UFI creation operations ............................................................................. 25 

Table 3-6: Error codes for UFI validation operations......................................................................... 25 

Table B-1: Sample UFIs ................................................................................................................. 30 

Figures 

Figure 3-1: SOAP request for createUFIByCount .............................................................................. 22 

Figure 3-2: SOAP request for createUFIByList.................................................................................. 22 

Figure 3-3: SOAP response to createUFIByCount and createUFIByList................................................ 23 

Figure 3-4: SOAP fault for createUFIByC ount and crea teUFIByList ..................................................... 23 

Figure 3-5: SOAP request for validateUFI........................................................................................ 24 
Figure 3-6: SOAP response to validateUFI for valid UFI .................................................................... 24 

Figure 3-7: SOAP response to validateUFI for invalid UFI .................................................................. 24 

 
 
 
 
 
UFI Developers Manual 

5 

1. Introduction 

This document describes the technical means available to developers of software solutions to 
create and validate the Unique Formula Identifiers (UFIs) that have to be printed or affixed on 
labels of hazardous mixtures in accordance with the Annex related to Article 45 of [CLP 
REGULATION] (see references in section 1.3; the Annex is a standalone document referred to 
as [CLP ANNEX]). 

Section 1.1 of this document reminds the purpose of the UFI and details the base input 
information that will be needed to create one. However it does not discuss the situations 
where a UFI must be created for a mixture or when such a UFI needs to be updated. The 
reader who needs to handle these aspects is advised to consult the [CLP ANNEX] and the 
guidance material available from the section of ECHA’s website dedicated to the submission of 
information to Poison Centres (referred to as [GUIDANCE]):  

https://poisoncentres.echa.europa.eu/ 

The rest of the document is c omposed of the technical information needed to build a practical 
software implementation creating and validating UFIs. 

•  Chapter 2 gives the algorithm that can applied to create a UFI and explains how an 

existing UFI can be validated with respect to a series of criteria. 

•  Chapter 3 details the public Application Programming Interface (API) offered by the 

“UFI Generator” application run by ECHA.  

This API, available over REST and SOAP web services, readily implements the 
algorithm of chapter 2; it can then be used by any system where calling an existing 
web service is a better solution than implementing the algorithm of chapter 2 from 
scratch.  

Note that the UFI Generator also features a web interface with similar functionalities for 
human users. This interface is available from the aforementioned link to ECHA’s Poison 
Centres web site. 

The pros and cons of approaches in chapter 2 and chapter 3 (that is, implementing the 
algorithm or calling web services) are not detailed as they largely depend on the capabilities of 
the system that will generate the UFIs, the resources available for the development, etc. One 
can however note that an implementation of the algorithm specified in chapter 2 will most 
likely yield better performances and that it does not rely on remote resources. It will thus be 
immune  to the unavailability of the network infrastructure and possible downtime of the UFI 
Generator. 

The document does not expect a particular programming language to be used, such as Java or 
.NET. The discussion is kept a sufficiently high level to allow using any language.  

Definitions of abbreviations used in this document are available in section 1.4. 

1.1 The Unique  Formula  Identifier 

The Unique Formula Identifier (UFI) establishes an unambiguous link between a mixture and 
the information submitted to Poison Centres about that mixture.  It complements the other 
means used by Poison Centres to identify the source of poisoning as basis for clinical 
toxicological risk assessment and to propose the right medical treatment. E.g. the UFI will be 
used to distinguish two formulations sold under the same trade name. [CLP ANNEX] therefore 
requires to print or affix a UFI on the label of a product and mention the UFI in the submission 
of information to Poison Centres. 

 
 
UFI Developers Manual 

6 

The UFI shall be unique. Therefore, the same UFI can never be assigned to two different 
mixtures1. Practically, this is achieved by constructing UFIs from two parameters: 

•  A VAT number (VATIN), as used in countries of the EEA; 

•  A numerical formulation number between 0 and 268.435.455 (included). 

Assuming a proper use and management of these by companies, e.g. the same formulation 
number shall not be used for different mixtures under the same VATIN, the uniqueness of the 
UFI is guaranteed. The [GUIDANCE] can be consulted for recommendations about correct uses 
of VATIN and formulation numbers (e.g. what VATIN is suitable when there  are multiple  
companies in the supply  chain for a product). 

Companies without a VAT number or choosing not to use it for commercial reasons 

In some countries, under very specific conditions, companies are not required to have a 
VATIN. Furthermore, for commercial reasons, in order to keep their VATIN confidential along 
the supply chain, companies may choose not to use their VATIN to generate the UFI. These 
companies can nonetheless create UFIs like any other company with a company identification 
number; for them the VATIN is replaced in the algorithm of chapter 2 by a “company key”.  

A company key can be obtained from the tab “Get a company key” of the UFI Generator on 
ECHA’s Poison Centres web site (see link above and [UI MANUAL]). It is advised for companies 
without a VATIN, or choosing not to use it, that want to implement the algorithm of chapter 2 
to issue one company key and store it for any future use. I.e. a new company key will not be 
issued for each individual UFI; companies should also not attempt to automate the 
procurement of company keys. 

Note that a company key is not necessary if only the web services of chapter 3 are used. With 
these web services the VATIN parameter can be omitted from the requests to create UFIs; the 
UFI Generator (that provides the web services) will automatically fill in the missing information 
while ensuring that the uniqueness of the UFI is respected. 

1.2 Conventions 

The reader should note the following before continuing reading the next chapters: 

•  This document generally distinguishes the two parts constituting a VATIN: 

o 

The code of the country issuing the VATIN and designated as “VAT country code”. 

Uppercase ISO-3166-1 alpha-2 country codes are used rather than the prefix found 
in the VATIN itself. The codes GR (rather than EL) is thus used for Greece. The 
admissible codes are those listed in Table 2-1. 

o 

The national specific part (following the prefix) and designated as “VAT number”. 
E.g. “U12345678” in the VATIN “ATU12345678”. 

Note that, as shown in this example, for some countries the “number” can include 
other characters than digits. 

•  The formulation number is necessarily a numerical value. 

Formulation codes used internally by companies, whether they contain non numerical 
characters or are outside the range [0, 268.435.455], need to be converted to a 

1  In the  se nse de fined by [C LP ANNEX]; se e  notably the  latte r and the  [GUIDANC E] for a discussion of grouped 
submission of variants of a m ixture or m ixtures differing by the concentration of some components within we ll -defined 
range s. 

 
                                     
 
 
UFI Developers Manual 

7 

suitable numerical value prior to being used in the UFI creation algorithm or used as a 
parameter of web service operations. Conversion rules are outside the scope of this 
document and can be freely defined by companies or third-party software vendors. 

1.3 References 

Documents referred to in this manual are listed below. 

Table 1-1: External references 

Reference  Description 

[C LP 
REGULATIO
N] 

Regulation (EC ) No 1272/2008  of the European Parliament and of the C ouncil of 16 
December 2008 on classification, labelling and packaging of substances and mixtures, 
amending and repealing Directives 67/548/EEC  and 1999/45,  and amending Regulation 
(EC ) No 1907/2006 
O. J. L 353,  31.12.2008 

http://eur-  lex.europa.eu/search.html?DTN=1272&DTA=2008&qid=1451 
989819998&C ASE_LAW_SUMMARY=false&DTS_DOM=ALL&ex  
cC onsLeg=true&type=advanced&SUBDOM_INIT=ALL_ALL&DT S_SUBDOM=ALL_ALL 

Latest consolidated version in English:  https://eur-lex.europa.eu/legal-
content/EN/TXT/PDF/?uri=C ELEX%3A02008R1272-
20150601&amp;qid=1449585466596&amp;from=EN2 

[C LP 
ANNEX] 

ANNEX to  the C ommission Regulation amending Regulation (EC ) No 1272/2008  of the 
European Parliament and of the  C ouncil on classification, labelling and packaging of 
substances and mixtures by adding a new Annex on harmonised information relating to  
emergency health response 

[GUIDANC E
] 

Guidance on harmonised information relating to emergency health response – Annex 
VIII to C LP Regulation 

https://echa.europa.eu/documents/10162/13643/guidance_on_annex_viii_to_clp_en.pd
f/412c5874-f8ec-cf52-fe1e-2fbe08fe2d11   

[UI 
MANUAL] 

User guide for the UFI  Generator 

https://poisoncentres.echa.europa.eu/ufi-generator 

2  Link  to the  late st, as pe r January 2016, consolidated ve rsion in English, compiling am endments M1 to M9 and 
corrige ndum C 1 and C 2. 

 
 
 
 
 
 
                                     
 
 
UFI Developers Manual 

8 

1.4 Abbreviations 

Abbreviations used in this manual are listed below in alphabetic order. 

Table 1-2: Abbreviations 

Acronym 

Definition 

API 

C LP 

C SV 

EEA 

MS 

PC  

REST 

SOAP 

UFI 

VAT 

VATIN 

WSDL 

XML 

Application Programming Interface 3 

C lassification, Labelling and Packaging 

C omma Separated Values4 

European Economic Area 

Member State 

Poison C entre 

Representational State Transfer 5 

Simple Object Access Protocol6 

Unique Formula Identifier 

Value-Added Tax 

VAT Identification Number 

Web Services Description Language7 

Extensible Mark-up Language8 

3 https://en.wik ipedia.org/wik i/Application_programming_interface 
4 https://en.wik ipedia.org/wik i/Comma-separated_values 
5 https://en.wik ipedia.org/wik i/Repre sentational_state_transfer 
6 https://en.wik ipedia.org/wik i/SOAP 
7 https://en.wik ipedia.org /wik i/Web_Se rvice s_Description_Language 
8 https://en.wik ipedia.org/wik i/XML 

 
 
 
 
 
 
 
 
 
                                     
 
 
UFI Developers Manual 

2. UFI algorithm 

9 

This chapter gives the algorithm that applies to create a UFI and explains how an existing UFI 
can be validated with respect to a series of criteria. 

Examples of UFI creation and validation following the algorithm are shown in Annex A. 

Samples of UFIs for various VATIN (or company key) and formulation numbers are listed in 
Annex B. These can be used to validate if the algorithm is properly implemented ( if necessary 
the validateUFI operation of the web services in chapter 3 can also be used for that purpose). 

2.1 Creating  a UFI 

Below we summarise and clearly define the steps for the construction of a UFI from two input 
data (see introduction on UFI in section 1.1 for motivation): 

•  A VATIN or a company key for companies without a VATIN or choosing not to use it; 

•  A formulation number. 

Creating a UFI is a 4 step process explained in the rest of this section: 

1.  A numerical “payload” value is computed based on the input information. 

2.  The payload numerical value is written in a character set excluding ambiguous 

characters. 

3.  The characters are re-organised to spread information from the formulation number 

and VATIN across the whole UFI. 

This step is meant to enable filtering alternatively on both the formulation number and 
VATIN when incremental searches9 are implemented to retrieve information from a 
database of UFI. 

4.  A checksum is calculated and prepended to the result to give the complete UFI 

2.1.1 Step 1 – UFI payload numerical  value 

The UFI payload numerical value is constructed in binary as shown in the following diagram 
(where cells represent the bits composing that value), 

┌─ Form ulation ─┐ 

┌─ C ountry group ─┐ 

┌── C ountry ──┐ 

┌─ VAT num ber ─┐ 

F27 

… 

F0 

G3 

… 

G0 

CB-1 

… 

C0 

N40-B 

… 

N0 

V0 
→ 0 

Where 

•  F27 to F0 are 28 bits encoding the input formulation number. 

Ve rsion ┘ 

9 That is, searches displaying the re sults on-the-fly, while characters are  being keyed in 
(https://en.wik ipedia.org/wik i/Incremental_search). 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                     
 
 
UFI Developers Manual 

10 

•  G3 to G0 are 4 bits encoding the country group given by Table 2-1 for the input VAT 

country code. 

Since not all VAT numbers require the same number of bits (e.g. numbers in 
Lichtenstein are much smaller than those in France) the usage of the 41 following bits 
labelled C and N (country and VAT number in the diagram) change depending on this 
country group to make better use of the “space” available in the UFI payload.  

When the company does not have or chose not to use a VATIN the 4 bits of the country 
group G must be set to 0. 

•  CB-1   to  C0   are  B  bits  encoding  the  VAT  country  code  inside  the  group 

determined by G. The value of B is given by Table 2-1. 

The number of bits reserved for the country code depends on the country group. For 
some groups B =  0 in Table 2-1, meaning that there is no explicit country code10. 

When the company does not have or chose not to use a VATIN there is no C (similarly 
to cases with VATIN where B =  0). 

•  N40-B to N0 are 41 – B bits encoding the VAT number. 

The number of bits reserved for the VAT number thus also depends on the country 
group. 41 bits is the maximum  number of bits that can be used to store the VAT 
number; it is attained for country groups where B =  0 (without explicit VAT country 
code). 

For VAT numbers including non-numerical characters a numerical equivalent must be 
calculated prior to storing it in N. The calculation rules are given on a per-VAT country 
code basis in Table 2-2 (the table also reminds the list of countries for which the VAT 
number can be used as-is). 

When the company does not have or chose not to use a VATIN the 41 bits are used to 
encode the company key (similarly to cases with VATIN where B = 0; see note on 
company key issuance in section 1.1). 

•  V0 is a (single) bit encoding the UFI version and must be set to 0. 

The UFI payload numerical value is thus a 74-bit number with 28 bits dedicated to the 
formulation number, 45 to the VATIN (or company key) and 1 to the version identification. 

Table 2-1: Country groups and codes lookup table 

Country 

Country 
group code 
(G) 

Number of bits 
for country code 
(B) 

Country code 
(C) 

Group code 0 is reserved for 
company keys 

FR 

GB 

LT 

SE 

France 

United  Kingdom 

Lithuania 

Sweden 

0 

1 

2 

3 

None 

None 

1 

0 

1 

10 In the se cases there is actually only one country in the group.  

 
 
 
 
                                     
 
 
UFI Developers Manual 

11 

HR 

C roatia 

IT 

LV 

NL 

BG 

C Z 

IE 

ES 

PL 

RO 

SK 

C Y 

IS 

BE 

DE 

EE 

GR 

NO 

PT 

AT 

DK 

FI 

HU 

LU 

MT 

SI 

LI 

Italy 

Latvia 

The Netherlands 

Bulgaria 

C zech Rep. 

4 

5 

4 

7 

Ireland 

Spain 

Poland 

Romania 

Slovakia 

C yprus 

Iceland 

Belgium 

Germany 

Estonia 

Greece 

Norway 

Portugal 

Austria 

Denmark 

Finland 

Hungary 

Luxemburg 

Malta 

Slovenia 

Lichtenstein 

0 

1 

2 

3 

0 

1 

2 

3 

4 

5 

6 

7 

8 

9 

10 

11 

12 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

 
 
 
 
 
 
 
 
UFI Developers Manual 

12 

Table 2-2: Rules for VAT number conversion to numerical value 

VAT country  

VAT number pattern

Conversion to numerical value (denoted V) 

AT 

BE 

BG 

C Z 

DE 

DK 

EE 

GR 

FI 

HR 

HU 

IT 

LI 

LT 

LU 

LV 

Austria 

(AT)U[0-9]{8} 

Belgium 

(BE)0[0-9]{9} 

Bulgaria 

(BG)[0-9]{9,10} 

C zech Republic 

(C Z)[0-9]{8,10} 

Germany 

(DE)[0-9]{9} 

Denmark 

(DK)[0-9]{8} 

Estonia 

(EE)[0-9]{9} 

Greece 

(EL|GR)[0-9]{9} 

Finland 

(FI)[0-9]{8} 

C roatia 

(HR)[0-9]{11} 

Hungary 

(HU)[0-9]{8} 

Italy 

(IT)[0-9]{11} 

Liechtenstein 

(LI)[0-9]{5} 

Lithuania 

(LT)([0-9]{9}|[0-9]{12}) 

Luxembourg 

(LU)[0-9]{8} 

Latvia 

(LV)[0-9]{11} 

The VAT number is only composed of a numerical part, V is trivially equal to that  numerical 
part. 

Notes: 

• 

For countries with  a numerical part of varying length  (BG, C Z, LT and RO), we 
assume that  e.g. RO012 or RO0012  are effectively the same  numbers as RO12. That 
is, the varying length  does not require any specific handling. 

•  Some VAT numbers have fixed letters in  well-defined places (e.g. all numbers in 
Austria start with  “U”). These fixed letters are omitted  from the conversion. 

 
 
 
 
 
 
 
UFI Developers Manual 

13 

VAT country  

VAT number pattern

Conversion to numerical value (denoted V) 

MT 

NL 

Malta 

(MT)[0-9]{8} 

The 
Netherlands 

(NL)[0-9]{9}B[0-9]{2} 

NO 

Norway 

(NO)[0-9]{9} 

PL 

PT 

Poland 

(PL)[0-9]{10} 

Portugal 

(PT)[0-9]{9} 

RO 

Romania 

(RO)[0-9]{2,10} 

SE 

SI 

SK 

C Y 

Sweden 

(SE)[0-9]{12} 

Slovenia 

(SI)[0-9]{8} 

Slovakia 

(SK)[0-9]{10} 

C yprus 

(C Y)[0-9]{8}[A-Z] 

V = l . 108 + d, where 

• 
• 

d is the numerical part (8  digits) 
l is the value of the letter with  A → 0, B → 1, …  Z → 25 

ES 

Spain 

(ES)[0-9A-Z][0-9]{7}[0-
9A-Z] 

V = (36 . c1 + c2) . 107 + d, where 

• 
• 

d is the numerical part (7  digits) 
c1 and are c2 respectively the values of the first and last characters with  0 → 0,  
1 → 1,  … 9 → 9, A → 10, B → 11,  … Z →  35 

FR 

France 

(FR)[0-9A-Z]{2}[0-9]{9} 

V = (36 . c1 + c2) . 109 + d, where 

• 
• 

d is the numerical part (9  digits) 
c1 and are c2 respectively the values of the first and second characters with  0 → 0,   
1 → 1,  … 9 → 9, A → 10, B → 11,  … Z →  35 

 
 
 
 
 
 
UFI Developers Manual 

14 

VAT country  

VAT number pattern

Conversion to numerical value (denoted V) 

GB 

United 
Kingdom 

(GB)([0-9]{9}([0-
9]{3})?|[A-  Z]{2}[0-
9]{3}) 

The pattern allows for three types of numbers, V is calculated depending on the case as, The 
pattern allows for three types of numbers, V is calculated depending on the case as,  

• 

• 

For 9-digit  and 12-digit  numbers, denoted d, V = 240 + d 
That is, the leftmost  bit of the 41 bits  reserved for the VAT number in  the UFI 
payload numerical value is set to 1 to avoid collisions with  the numbers in the point 
below; the 9 or 12-digit  number is placed in the 40 remaining bits. 

For 2-letter and 3-digit, 
V = (26 . l1 + l2) . 103 + d, where 

o 

o 

d is the numerical part (3 digits) 

l1 and l2 are respectively the values of the first and second letters with A 
→ 0,  
B → 1, … Z → 25 

 
 
 
 
 
 
UFI Developers Manual 

15 

VAT country  

VAT number pattern

Conversion to numerical value (denoted V) 

IE 

Ireland 

(IE)([0-9][A-Z*+][0-
9]{5}[A- 
Z]|[0-9]{7}([A-Z]W?|[A- 
Z]{2})) 

The pattern allows for three types of numbers, V is calculated depending on the case as, 

• 

For numbers matching [0-9][A-Z*+][0-9]{5}[A-Z] 
V =(26 . c1 + c2) . 106 + d, where 

o 

o 

d is the numerical part (6 digits) composed of the concatenated digits in 
the pattern (i.e. [0-9] … [0-9]{5} …) 

c 1 and are c 2 respectively the values of the first and last characters with A 
→ 0,  
B → 1, … Z → 25, +  → 26, * → 27 

• 

For numbers matching [0-9]{7}[A-Z]W?  or [0-9]{7}[A-Z]{2} 
V = 233 +  ((26 . c2 + c1) . 107 + d), where 

o 

o 

d is the numerical part (7 digits) 

c 1 and are c 2 respectively the values of the 8th and 9th characters with A → 
0,  
B → 1, … Z → 25; when the 9th character is omitted c 2 =  0 (notice that c 2 
is multiplied by 26 above, not c 1, unlike the other pattern in the point 
above) 

IS 

Iceland 

(IS)[A-Z0-9]{6} 

V = 365 . c6 +  364 . c5 + …  + 36 . c2 + c1, where 

• 

ci is the value of the ith character, from right to left, with  0 →  0, 1 → 1, … 9 
→ 9, A → 10,  B → 11,  … Z → 35 

 
 
 
 
 
 
 
 
 
UFI Developers Manual 

16 

2.1.2 Step 2 – UFI payload in base-31 

The payload value obtained at step 1 is written11 in base-31 using the representation of 
digits in Table 2-3. If necessary, the result is left-padded with 0 to obtain 15 characters. 

Table 2-3: Base-31 character set 

Digit  Repr.  Digit  Repr.  Digit  Repr.  Digit  Repr.  Digit 

Repr. 

0 

1 

2 

3 

4 

5 

6 

0 

1 

2 

3 

4 

5 

6 

7 

8 

9 

10 

11 

12 

13 

7 

8 

9 

A 

C  

D 

E 

14 

15 

16 

17 

18 

19 

20 

F 

G 

H 

J 

K 

M 

N 

21 

22 

23 

24 

25 

26 

27 

P 

Q 

R 

S 

T 

U 

V 

28 

29 

30 

W 

X 

Y 

2.1.3 Step 3 – Character reorganisation 

The 15 characters from step 2 are reorganised according to Table 2-4 which specifies the 
input string (in) and the output string (out); characters are numbered from 1 (left) to 15 
(right). For example, the first character of the output string corresponds to the 6th 
character of the input string. 

Table 2-4: UFI characters reorganisation tables 

In 

1 

Out  6 

2 

5 

3 

4 

4 

8 

5 

3 

6 

9 

7 

8 

9 

10  11  12 

13  14 

15 

10 

11 

2 

1 

12 

7 

13 

14 

15 

For example, if we consider “A B C D E F G  H I J K L M N O” as the In string then the Out 
string would be “F E D H C I J K B A L G M N O” as the following diagram depicts: 

2.1.4 Step 4 – Checksum calculation 

Finally the checksum character is prepended to the 15 characters from the previous step 
to give the 16-character UFI. 

The checksum u0 (that is, the leftmost character of the complete UFI) is calculated as 

11 Typically, by re peating a modulo 31 and an integer division by 31 until the remainder is 0.  

123456789101112131415ABCDEFGHIJKLMNOFEDHCIJKBALGMNOInOut 
 
 
 
 
                                     
 
 
UFI Developers Manual 

17 

follows and written using the representation of Table 2-3. Factors u1 to u15 represent the 
15 characters obtained after the reorganisation at step 3 (character 1 being at the left). 

•  u0 =  (31 – (2 . u1 + 3 . u2 +  … +  16 . u15) modulo 31) modulo 31 

2.2 Validating  a UFI 

When validating a UFI it is recommended to implement validations to detect the errors of 
Table 3-6; where technically 

•  VAL001 ensures that the UFI is composed of 16 characters (omitting the hyphens 

and possibly spaces, depending on the requirement of the particular client 
implementation); 

•  VAL002 ensures that the 16-character UFI it only composed of the characters in 

Table 2-3; 

•  VAL003 ensures that the UFI is consistent with respect to its checksum; 

The checksum can be validated by verifying if the expression below is equal to 0 
(using the same notation for characters ui of the UFI as that of step 4 above).  

(u0 +  2 . u1 + 3 . u2 +  … +  16 . u15) modulo 31 ≟ 0 

•  VAL004 ensures the consistency of the group code and country encoding with 

respect to entries defined in Table 2-1; 

Note that the VAT number can also be verified with respect to national patterns; 
notably, the encoding of non-numerical numbers is bijective and can thus be 
inverted prior to applying a validation pattern12. 

•  VAL005 ensures that the right -most bit for the version is 0. 

12 The  UFI Generator does not implement such ve rifications, only the consistency group code and country e ncoding 
is ve rifie d. 

 
 
 
                                     
 
 
UFI Developers Manual 

18 

3. UFI Generator web services 

The UFI Generator offers SOAP 1.1 and REST web services with similar operations to 
create and validate UFI(s). A remote system can then call the web service that is the 
most suitable for its specific case. 

The operations are listed in Table 3-1 and their interfaces are further described in 
sections 3.1 (for REST) and 3.2 (for SOAP). Section 3.3 lists the error codes that can be 
returned by the UFI creation and validation operations. 

For both UFI creation operation the UFI Generator will enforce a limit on the count of 
formulation numbers in a single call to the operation; the limit is the same as that of the 
UI (see [UI MANUAL] for a figure). 

Table 3-1: Web service operations 

Operation 

Input arguments 

Output 

Description 

createUFIByC ount 

•  VATIN (opt.) 

List  of UFIs 

•  Start formulation 

number 

•  C ount 

createUFIByList 

•  VATIN (opt.) 

List  of UFIs 

• 

List  of 
formulation 
numbers 

validateUFI 

•  UFI 

Boolean 

C reate a succession of “count” 
UFIs starting  with  the given 
formulation number for the given 
VATIN. The latter can be omitted 
by companies without  or choosing 
not to  use a VATIN. 

C reate UFIs for the given 
formulation numbers and VATIN. 
The latter can be omitted  by 
companies without  or choosing 
not to  use a VATIN. 

Validate the  correctness of a UFI 
with  respect to a series of rules 
(see errors in Table 3-6). 

3.1 REST web service 

The REST flavoured operations of Table 3-1 are described in the sections below. 

The base path to construct the URLs is: https://ufi.echa.europa.eu/ufi  

3.1.1 createUFIByCount 

Table 3-2: REST operation createUFIByCount 

Method 

GET 

URL 

base path  + /createUFIByC ount 

URL 
parameters 

vatC ountryC ode 
(optional) 

VAT country code. 

This argument can be omitted,  provided that vatNumber 
below is omitted too, to indicate that  the company does not 
have or chose not to  use a VATIN and that  the UFI  Generator 
must take ad-hoc measures when generating the UFI. 

 
 
 
 
 
 
 
 
UFI Developers Manual 

19 

vatNumber 
(optional) 

VAT number. 

Notes that  this argument must be URL-encoded if it contains 
characters not allowed in URLs. 

This argument can be omitted,  provided that vatCountryCode 
above is omitted too, to  indicate that the company does not 
have or chose not to  use a VATIN. 

startFormulation 
Number 

First  formulation number in the  succession. 

count 

C ount of UFIs to  create with  successive formulation 
numbers. 

Request 
examples 

With  VATIN 

createUFIByCount? 
vatCountryCode=BE&vatNumber=0123456789& 
startFormulationNumber=12&count=34 

Without  VATIN 

createUFIByCount? 
startFormulationNumber=12&count=34 

Success 
response 

HTTP code 

200 (OK) 

Format 

JSON 

C ontent 
example 

[ 
{ 
"ufi":"511060T3400CSP6U", 
"formulationNumber":{"value":12}, 
"formattedUfi":"5110-60T3-400C-
SP6U" 
}, 
{ 
"ufi":"3410Q0GGE00VE0SW", 
"formulationNumber":{"value":13}, 
"formattedUfi":"3410-Q0GG-E00V-
E0SW" 
} 
… 
] 

Notes 

The client should not assume any particular order in the 
sequence of results. The client  should thus always construct 
the association between UFI  and formulation number from 
both elements in the result. 

Error response  HTTP code 

400 (bad request) 

Format 

JSON 

C ontent 
example 

{ 
"message":"Formulation number count 
is invalid.", 
"code":"UFI010" 
} 

Notes 

The error codes are those in Table 3-5. 

The error messages are always in English. 

 
 
 
 
 
 
 
 
 
 
 
UFI Developers Manual 

3.1.2 createUFIByList 

Table 3-3: REST operation createUFIByLis 

Method 

POST with  multipart/form-data 

URL 

base path  + /createUFIByList 

20 

C ontent 
disposition 
names 

vatC ountryC ode 
(optional) 

Same as Table 3-2. 

vatNumber 
(optional) 

file 

Both parts can be omitted  to indicate that  the company 
does not  have or chose not to use a VATIN. 

List  of formulation numbers for which  UFIs must be 
created. 

One formulation number per line. 

A filename content disposition  parameter must be 
supplied; its value is irrelevant and can be left blank. 

Request 
example 

------=_Part_2_734057280.1467970322787 

Content-Disposition: form-data; 
name="vatCountryCode" 

BE 
------=_Part_2_734057280.1467970322787 
Content-Disposition: form-data; name="vatNumber" 

0123456789 
------=_Part_2_734057280.1467970322787 
Content-Disposition: form-data; name="file"; 
filename=”” 

12 
13 
------=_Part_2_734057280.1467970322787-- 

Success 
response 

Same as Table 3-2. 

Error response 

Same as Table 3-2. 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UFI Developers Manual 

3.1.3 validateUFI 

Table 3-4: REST operation validateUFI 

Method 

GET 

URL 

base path  + /validateUFI 

URL parameters 

ufi 

UFI to  validate. 

21 

Note that  the hyphens (-) or spaces are not taken into 
account for the  validation. 

Request 
examples 

Valid UFI 

validateUFI? 
ufi=5110-60T3-400C-SP6U 

Invalid UFI  (with  dot instead of dash) 

ufi=5110%2E60T3-400C-SP6U 

Success 
response  

HTTP code 

200 (OK) 

Format 

JSON 

C ontent example, 
valid UFI 

{ 
"message":"", 
"code":"", "valid":true 
} 

C ontent example, 
invalid UFI 

{ 
"message":"This UFI is not 
valid: It does not contain 16 
characters.", "code":"VAL001", 
"valid":false 
} 

Notes 

The error codes are those in Table 3-6. 

The error messages are always in English. 

Error response  

None (validating an invalid UFI returns a success response with a valid flag 
set to false; see example above) 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UFI Developers Manual 

22 

3.2 SOAP web service 

The SOAP 1.1 web service follows a document/literal style binding. A WSDL describing 
the service and the port where it can be contacted can be found at:  

https://ufi.echa.europa.eu/ufi/ws/eu/echa/ufi/ws/wsdl/UFIGenerator.wsd 

Examples of each operation of Table 3-1 are given in the sections below to clarify how 
SOAP requests, responses and faults are constructed. 

3.2.1 Requests for createUFIByCount and createUFIByList 

Notes: 

•  For the two operations the “vatin” element can be omitted (i.e. its definition has a 
minOccurs=”0”) to indicate that the company does not have or chose not to use a 
VATIN and that the UFI Generator must take ad-hoc measures when generating 
the UFI. 

•  For the createUFIByList the element “formulationNumber” can be repeated if UFIs 
must be generated for different formulation numbers (i.e. its definition has a 
maxOccurs=”unbounded”). 

Figure 3-1: SOAP request for createUFIByCount 

<createUFIByCountRequest 
xmlns="urn:eu:europa:ec:grow:pc:ufi:generator:types:1"> 

<vatin> 

<countryCode>BE</countryCode> 
<number>0123456789</number> 

</vatin> 
<startFormulationNumber>12</startFormulationNumber> 
<count>34</urn:count> 

</createUFIByCountRequest> 

Figure 3-2: SOAP request for createUFIByList  

<createUFIByListRequest 
xmlns="urn:eu:europa:ec:grow:pc:ufi:generator:types:1"> 

<vatin> 

<countryCode>BE</countryCode> 
<number>0123456789</number> 

</vatin> 
<formulationNumber>12</formulationNumber> 
<formulationNumber>13</formulationNumber> 
... 

</createUFIByListRequest> 

 
 
 
 
 
 
 
 
UFI Developers Manual 

23 

3.2.2 Response to createUFIByCount and createUFIByList 

Note that each UFI is accompanied by its corresponding formulation number. The client 
should not assume any particular order in the sequence of results; notably, the UFIs 
might not be sequential for createUFIByCount or match the order in the request for 
createUFIByList. The client should thus always construct the association between UFI and 
formulation number from both elements in the result. 

Figure 3-3: SOAP response to createUFIByCount and createUFIByList 

<createUFIResponse 
xmlns="urn:eu:europa:ec:grow:pc:ufi:generator:types:1"> 

<result> 

<ufi>5110-60T3-400C-SP6U</ufi> 
<formulationNumber>12</formulationNumber> 

</result> 
<result> 

<ufi>3410-Q0GG-E00V-E0SW</ufi> 
<formulationNumber>13</formulationNumber> 

</result> 
... 

</createUFIResponse> 

3.2.3 Fault for createUFIByCount and createUFIByList 

Notes: 

• 

• 

In case of error caused by the client the “detail” element contains an 
“invalidArgumentFault” element describing why the arguments are considered 
invalid by referring to the errors in Table 3-5 (the message is always in English). 

 Multiple “error” elements can possibly be given in the “invalidArgumentFault” 
element (i.e. its definition has a maxOccurs=”unbounded”). The client should 
however not assume that, if multiple errors exist in the request, they will all be 
returned at once. 

•  More generally, the client should be ready handle any SOAP fault (e.g. also faults 

with code SOAP-ENV:Server). 

Figure 3-4: SOAP fault for createUFIByCount and createUFIByList 

<SOAP-ENV:Fault xmlns:SOAP- 
ENV="http://schemas.xmlsoap.org/soap/envelope/"> 

<faultcode>SOAP-ENV:Client</faultcode> 
<faultstring xml:lang="en">Invalid 

argument</faultstring> 

<detail> 

<invalidArgumentFault 

xmlns="urn:eu:europa:ec:grow:pc:ufi:generator:types:1"> 

<error> 

<errorCode>UFI001</errorCode> 
<message>Invalid or out of bound formulation 

number</message> 

</error> 

</invalidArgumentFault> 

</detail> 
</SOAP-ENV:Fault> 

 
 
 
 
UFI Developers Manual 

24 

3.2.4 Request for validateUFI 

Note that the hyphens (-) or spaces are not taken into account for the validation. 

Figure 3-5: SOAP request for validateUFI 

<validateUFIRequest 
xmlns="urn:eu:europa:ec:grow:pc:ufi:generator:types:1"> 

<ufi>5110-60T3-400C-SP6U</ufi> 

</validateUFIRequest> 

3.2.5 Response to validateUFI 

Notes: 

•  When “valid” is false an “error” element referring to the errors in Table 3- 6 

indicates why the UFI is invalid (the message is always in English). 

•  A SOAP fault is not returned when calling validateUFI with an invalid UFI as it is 
considered a legit use of the operation. The client should still be ready handle 
SOAP faults (e.g. faults with code SOAP-ENV:Server). 

Figure 3-6: SOAP response to validateUFI for valid UFI 

<validateUFIResponse 
xmlns="urn:eu:europa:ec:grow:pc:ufi:generator:types:1"> 

<valid>true</valid> 
</validateUFIResponse> 

Figure 3-7: SOAP response to validateUFI for invalid UFI 

<validateUFIResponse 
xmlns="urn:eu:europa:ec:grow:pc:ufi:generator:types:1"> 

<valid>false</valid> 
<error> 

<errorCode>VAL001</errorCode> 
<message>This UFI is not valid: It does not 

contain 16 characters.</message> 

</error> 

</validateUFIResponse> 

3.3 Error  codes 

Table 3-5 and Table 3-6 list the error codes that can be returned respectively by UFI 
creation operations (createUFIByCount and createUFIByList) and the validation operation 
(validateUFI) on SOAP and REST services alike. 

 
 
 
 
 
 
 
 
 
UFI Developers Manual 

25 

Table 3-5: Error code for UFI creation operations 

Acronym 

Definition 

UFI001 

UFI002 

UFI003 

UFI004 

UFI005 

UFI006 

UFI007 

UFI008 

UFI009 

UFI010 

UFI011 

Invalid or out of bound formulation number. 

C ountry code does not  exist. 

Not  a valid VAT for country. 

VAT number should be accompanied with country code. 

VAT number cannot be empty when combined with  country code. 

No country found that  corresponds to country group and code. 

No file has been attached to the  request. 

This extension is not  supported. 

Unexpected error while parsing file. 

Formulation number count is invalid. 

Request contains an invalid parameter. 

Table 3-6: Error codes for UFI validation operations  

Acronym 

Definition 

VAL001 

VAL002 

VAL003 

VAL004 

VAL005 

This UFI is not  valid: It does not contain 16 characters. 

This UFI is not  valid: It contains at  least one invalid character. 

This UFI is not  valid: You may have inverted characters or typed an 
incorrect character. 

This UFI is not  valid: Its internal country code is not  correct. 

This UFI is not  valid: Its internal version numbe r is not correct. 

 
 
 
 
 
UFI Developers Manual 

26 

Annex A. Examples of UFI algorithm usage 

A.1 UFI with  Irish  VATIN 

This example shows how a UFI is created for 

•  VATIN IE9Z54321Y (i.e. VAT country code IE and VAT number 9Z54321Y) 

•  Formulation number 134217728 

Step 1 

Determine binary representations of the UFI payload numerical value using, 

•  The country group code for IE from Table 2-1 

→ G = 5 =  0101b (on 4 bits) 

•  The number of bit for the country code from Table 2-1 

→ B = 7 

•  The country code for IE from Table 2-1 

→ C = 2 =  0000010b (using B =  7 bits) 

•  The numerical value associated with the VAT number 9Z54321Y using the rule for 

IE in Table 2-2 (such conversion is necessary because Irish VAT number contain 
alphabetic characters; it is not required for all VAT numbers, see Table 2-2 for 
cases where it applies) 

→ N =  (26 . 25 + 24) . 106  + 954321 = 674954321 = 
0000101000001110101111110001010001b (using 41 – 7 = 34 bits) 

•  The formulation number 

→ F = 134217728 = 1000000000000000000000000000b (on 28 bits) 

Build t h e  complete   binary   representation   of   the   UFI   payload   numerical   value 
concatenating the data above (and version bit 0) 

1000000000000000000000000000  0101 0000010 0000101000001110101111110001010001  0 

That is, 9444732987799592368290 in decimal. 

Step 2 

Convert the UFI payload numerical value to base-31 (the decimal value of each digit in 
base-31 is shown here), 

→  12, 14, 24, 25, 25, 19, 6, 2, 22, 20, 6, 12, 25, 27, 1 

Giving, in the character set in Table 2-3, DFSTTM62QN6DTV1 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UFI Developers Manual 

27 

Step 3 

Reorganise the characters following Table 2-4, thus giving MTT2SQN6FDD6TV1 

Step 4 

Calculate the checksum from the reorganised representation. 

Note, to  ease  the  comprehension  of  this  step,  that  the  reorganised  decimal 
representation of the digits from step 2 and 3 is 

→  19, 25, 25, 2, 24, 22, 20, 6, 14, 12, 12, 6, 25, 27, 1 

Let’s calculate the weighted sum of the digits (weights in red) 

→ 

2 . 19 +  3 . 25 +  4 . 25 +  5 . 2 + 6 . 24 + 7 . 22 + 8 . 20 +  9 . 6 + 

10 . 14 +  11 . 12 + 12 . 12 + 13 . 6 +  14 . 25 +  15 . 27 + 16 . 1 

= 2000 

The checksum value is 

→ 

(31 – 2000 modulo 31) modulo 31 

= 15 

That is, the checksum is G in the character set in Table 2-3. 

After prepending the checksum the complete UFI is thus GMTT-2SQN-6FDD-6TV1 

Checksum validation 

The checksum can be verified by calculating the weighted sum of the (reorganised) 
digits, including the checksum digit with weight 1. The modulo 31 of this sum must be 
equal to 0. 

That is, reusing the value of the weighted sum of step 4 and the checksum value 15,  

→ 

(15 + 2000) modulo 31 

= 0 

Hence the UFI is valid with respect to its checksum. 

A.2 UFI with  company  key 

This example shows how a UFI is created for 

•  Company   key   1828639338661 

o 

Formulation number 156920229 

 
 
 
 
 
 
 
UFI Developers Manual 

28 

Step 1 

Determine binary representations of the UFI payload numerical value using, 

•  The country group code must be 0 

→ G = 0 =  0000b (on 4 bits) 

•  There is no country code 

→ B = 0 

→ C is not applicable 

•  The company key is used as is 

→ N = 1828639338661 = 11010100111000011011001011111000010100101b 

(on 41 bits) 

•  The formulation number 

→ F = 156920229 = 1001010110100110100110100101b (on 28 bits) 

Build t h e  complete binary   representation  of   the   UFI   payload   numerical   value 
concatenating the data above (and version bit 0) 

1001010110100110100110100101  0000 11010100111000011011001011111000010100101  0 

That is, 11042279454458730242378 in decimal. 

Step 2 

Convert the UFI payload numerical value to base-31 (the decimal value of each digit in 
base-31 is shown here), 

→ 

14, 18, 7, 1, 11, 17, 17, 6, 1, 10, 26, 3, 0, 19, 8 

Giving, in the character set in Table 2-3, FK71CJJ61AU30M8 

Step 3 

Reorganise the characters following Table 2-4, thus giving JC1671AUKF3J0M8 

Step 4 

Calculate the checksum from the reorganised representation. 

Note, t o    ease   the   comprehension   of   this   step,   that   the   reorganised   decimal 
representation of the digits from step 2 and 3 is 

→ 

17, 11, 1, 6, 7, 1, 10, 26, 18, 14, 3, 17, 0, 19, 8 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UFI Developers Manual 

29 

Let’s calculate the weighted sum of the digits (weights in red) 

→ 

2 . 17 +  3 . 11 +  4 . 1 +  5 . 6 +  6 . 7 + 7 . 1 + 8 . 10 + 9 . 26 + 

10 . 18 +  11 . 14 + 12 . 3 + 13 . 17 +  14 . 0 +  15 . 19 + 16 . 8 

= 1468 

The checksum value is 

→ 

(31 – 1468 modulo 31) modulo 31 

= 20 

That is, the checksum is N in the character set in Table 2-3. 

After prepending the checksum, the complete UFI is thus NJC1-671A-UKF3-J0M8 

Checksum validation 

The checksum  can be  verified  by  calculating the weighted sum  of  the  (reorganised) 
digits, including the checksum digit with weight 1. The modulo 31  of this sum  must be 
equal to 0. 

That is, reusing the value of the weighted sum of step 4 and the checksum value 20, 

→ 

(20 + 1468) modulo 31 

= 0 

Hence the UFI is valid with respect to its checksum.

 
 
 
 
 
 
 
 
 
 
 
UFI Developers Manual 

30 

Annex B. Sample UFIs 

This annex provides UFIs generated according to the algorithm given in §2.1. These UFIs can 
be used to validate an implementation of the algorithm by a Poison Centre, company or third-
party software vendor. 

Table B-1: Sample UFIs 

VAT 

Country code  Number 

Formulation 
number 

UFI 

AT 

BE 

BG 

U12345678 

178956970 

C 23S-PQ2V-AMH9-VVRF 

0987654321 

89478485 

U1JV-SUMH-N988-U751 

987654321 

9987654321 

89478485 
252644556 

A1JV-EUD3-498W-U23R 
80SW-N2UD-FGRY-F6DA 

C Z 

81726354 

978563421 

9785634210 

156920229 
15790899 
268435455 

HKC 1-Q7N0-DKF6-7N3E 
24VQ-VGV0-WF16-7WC 9 
W3NN-SKC 4-JXSS-V4WG 

C Y 

12345678C  

87654321 

7EHW-3KC 7-748V-S1RH 

DE 

DK 

EE 

FR 

12345678Y 

87654321 

FEHW-3KH5-X487-SNRD 

112358132 

134217728 

KMTT-DSP3-7FD7-6RWY 

31415926 

524544 

3FQU-5GP0-Y105-J64N 

271828182 

230087533 

QY3Q-327C -QDPR-EE11 

RF987654321 

134217728 

6KTT-PSK1-AFDM-KEFU 

ZY999999999 

230087533 

NX3Q-2263-2DP5-UQ4T 

01012345678 

268435455 

F3NN-3K1J-EXSK-7PHY 

10012345678 

268435455 

23NN-5KKE-GXSF-7MD3 

GB 

987654321 

156920229 

GJC 1-S7TH-AKFK-TR8P 

999987654321 

156920229 

C JC 1-47ES-AKFS-WTFW 

999999999999 

156920229 

3JC 1-47ET-6KFH-WMV8 

ZY123 

AB987 

268435455 

53NN-7KTT-1XS1-DDPH 

268435455 

M3NN-7KTS-YXSK-D8UW 

GR 

FI 

567438921 

66260700 

QNWM-9X6E-E46N-G4GJ 

18273645 

29979245 

VWF9-C DT4-2S2N-PDTV 

 
 
 
 
 
 
UFI Developers Manual 

31 

VAT 

Country code  Number 

Formulation 
number 

UFI 

HR 

HU 

IE 

IS 

IT 

LI 

LT 

LU 

LV 

MT 

NL 

NO 

PL 

PT 

RO 

SE 

SI 

SK 

16021765654 

268435455 

53NN-KKPX-SXSD-QJY7 

22334455 

238219293 

AU06-7HHD-64QN-8RHF 

9Z54321Y 

134217728 

GMTT-2SQN-6FDD-6TV1 

9+54321Y 

134217728 

KMTT-2SQQ-0FDQ-6A5D 

9*54321Y 

134217728 

GMTT-2SQR-UFD0-6TFR 

9876543Z 

230087533 

JY3Q-R2M8-GDP2-DQRS 

9876543ZW 

230087533 

XY3Q-S215-2DPF-DA4U 

9876543AB 

182319099 

TUG4-PE6C -4XHP-RSAM 

AB3D5F 

182319099 

XUG4-WE32-RXHD-RHWU 

1ZY2BA 

268435455 

53NN-1KDC -JXSH-W6WV 

14286244833 

214783315 

WK3F-PYSX-TXM0-K9AV 

99999 

182319099 

C UG4-FEHP-HXHW-SC 4E 

987654321 

15790899 

W3VQ-HGW8-UF12-W7QP 

987654321098 

156920229 

SJC 1-P7FR-DKF3-Y2YC  

16726218 

214783315 

FK3F-8YC 6-1XMK-SAQ5 

39903127176 

182319099 

WUG4-5E2S-UXHN-M5C 7 

99887766 

83144621 

7KW0-SMM5-2Q7N-4K8D 

999999999B77 

96485337 

QJ0V-J1JU-9Y8W-37TG 

958473621 

268435455 

63NN-7KPT-WXS8-WGYA 

4835978701 

19621109 

XRMW-9HU2-PT1U-7JNN 

998776554 

30051977 

K9WS-JKK3-WS2E-1WSC  

98 

252644556 

E0SW-U2C F-KGR6-FRKW 

9081726354 

214783315 

2K3F-QYHK-YXMU-RTN5 

987654321098 

156920229 

1KC 1-87DH-0KFR-2WGE 

12345678 

178956970 

U23S-WQK5-AMH7-V03N 

9987654321 

252644556 

N0SW-W2AP-FGRV-F9RH 

No VATIN 

C ompany key 
1828639338661 

156920229 

NJC 1-671A-UKF3-J0M8 

 
 
 
EUROPEAN CHEMICALS AGENCY 
ANNANKATU 18, P.O. BOX 400, 
FI-00121 HELSINKI, FINLAND 
ECHA.EUROPA.EU