The Investment API accepts 1st priority identifiers for non-CONCAT countries. If the user does not have a 1st priority identifier (i.e., does not have a passport), the 2nd priority identifier can be used. For example, in the Netherlands this would be the number of the national identity card.
This guide describes which identifier standards are accepted by our API. For each standard, we also provide a regular expression that can be used to ensure that a specified number is validly formatted.
Once the user is created and the identifier needed is for a nationality that corresponds to the list of country codes below, whose 1st priority identifier is a CONCAT identifier, then it is automatically generated on our side. This allows Upvest to create transaction reports for our clients.
- AT - Austria
- DE - Germany
- FR - France
- HU - Hungary
- IE - Ireland
- LU - Luxembourg
For countries whose 1st priority identifier is CONCAT (listed above), there's no need to create it explicitly since Upvest automatically generates the value.
For other cases, you can create the identifier directly via the API using the POST /users/{user_id}/identifiers endpoint. This includes the following scenarios:
- when the end user is from a country whose 2nd or 3rd priority identifier is CONCAT. Refer to the Reference identifiers section for the list of relevant countries.
- the end user is a third-country (non-EEA) national.
If a user has more than one nationality:
Nationalities from EEA countries always take precedence over non-EEA countries.
For this purpose, GB is treated as a third country, so if a user has both GB and an EEA nationality, the EEA nationality is used.
Where GB is used (e.g. when it is the only nationality), the GPN (General Passport Number) is the required identifier.
GB is treated as part of the EEA group for reporting purposes.
Nationalities are ordered alphabetically within the EEA group.
Therefore, if a user has GB and other EEA nationalities, GB will be considered and ranked alphabetically amongst them.
The tables below specify which identifiers are recognised in which countries depending on whether you are licensed in the EEA or UK.
| Country Code | 1st Priority Identifier Standard | 2nd Priority Identifier Standard | 3rd Priority Identifier Standard |
|---|---|---|---|
| BE | BNN (Belgian National Number) Regex: ^[0-9]{2}([0][1-9]|[1][012])([0][1-9]|[12][0-9]|[3][01])[0-9]{5}$ | CONCAT | |
| BG | BPN (Bulgarian National Number) Regex: ^[0-9]{2}([0][1-9]|[1][012]|[4][1-9]|[5][012])([0][1-9]|[12][0-9]|[3][01])[0-9]{4}$ | CONCAT | |
| CY | CYPN (Cypriot National Passport Number) Regex: ^[A-Z][0-9]{6,8}$ | CONCAT | |
| CZ | CZNI (Czech National Identification Number) Regex: ^[0-9]{2,6}-?[0-9]{2,10}/?[0-9]{4}$ | CZPN (National Passport Number) Regex: ^[0-9]{8,10}$ | CONCAT |
| DK | DPIC (Danish Personal Identity Code) Regex: ^([0][1-9]|[12][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{2}[0-9]{4}$ | CONCAT | |
| EE | EPIC (Estonian Personal Identification Code) Regex: ^[1-6][0-9]{2}([0][1-9]|[1][012])([0][1-9]|[12][0-9]|[3][01])[0-9]{4}$ | ||
| ES | STIN (Spanish Tax Identification Number) Regex: ^[A-Z0-9]{9}$ | ||
| FI | FPIN (Finnish Personal Identification Code) Regex: ^([0][1-9]|[1][0-9]|[2][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{2}[A+-][0-9]{3}(?![GIOQZ])[A-Z0-9]$ | CONCAT | |
| GB | GPN (General Passport Number) Regex: ^[A-Z0-9]{3,}$ | CONCAT | |
| GR | DSS (Greek DSS Investor Share) Regex: ^[0-9]{10}$ | CONCAT | |
| HR | OIB (Croatian Personal Identification Number) Regex: ^[0-9]{11}$ | CONCAT | |
| IS | IPIC (Icelandic Personal Identity Code) Regex: ^([0][1-9]|[1][0-9]|[2][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{2}[0-9]{4}$ | ||
| IT | FSC (Italian Fiscal Code) Regex: ^[A-Z]{6}[0-9LMNPQRSTUV]{2}[ABCDEHLMPRST]{1}[0-9LMNPQRSTUV]{2}[A-Z]{1}[0-9LMNPQRSTUV]{3}[A-Z]{1}$ | ||
| LI | LIPB (Liechtenstein National Passport Number) Regex: ^[A-Z][0-9]{5}$ | CONCAT | |
| LT | LTPC (Lithuanian Personal Code) Regex: ^[1-6][0-9]{2}[0,1][0-9][0-9]{2}[0-9]{4}$ | LTPN (National Identity Card Number) Regex: ^[0-9]{8}$ | CONCAT |
| LV | LVPC (Latvian Personal Code) Regex: ^((0[1-9]|[12][0-9]|3[01])(0[1-9]|1[012])(\d{2})[-]?(0|1|2)(\d{4}))|((3[2-9]\d{4}-?\d{5}))$ | CONCAT | |
| MT | MTNI (Maltese National Identification Number) Regex: ^[0-9]{7}[A-Z]$ | MTPN (National Passport Number) Regex: ^[0-9]{7}$ | |
| NL | NLPN (Dutch National Passport Number) Regex: ^[A-NP-Z]{2}[A-NP-Z0-9]{6}[0-9]$ | NLDN (National Identity Card Number) Regex: ^[A-NP-Z]{2}[A-NP-Z0-9]{6}[0-9]$ | CONCAT |
| NO | NDPI (Norwegian 11 Digit Personal ID) Regex: ^([0][1-9]|[12][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{7}$ | CONCAT | |
| PL | PESEL (Polish National Identification Number) Regex: ^[0-9]{11}$ | PLTN Tax Number (Numer Identyfikacji Podatkowej) Regex: ^[0-9]{10}$ | |
| PT | PTTN (Portuguese Tax Number) ^[0-9]{9}$ | PTNP (National Passport Number) Regex: ^([A-Z][0-9]{6})$``^([A-Z]{2}[0-9]{6})$ | CONCAT |
| RO | RONI (Romanian National Identification Number) Regex: ^[1-9]\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])(0[1-9]|[1-4]\d|5[0-2]|70|80|99)(00[1-9]|0[1-9]\d|[1-9]\d\d)\d$ | ROPN (National Passport Number) Regex: ^[A-Z]{2}[0-9]{6}$ | CONCAT |
| SE | SEPI (Swedish Personal Identity Number) Regex: ^(19|20)?[0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])[-+ ]?[0-9]{4}$ | CONCAT | |
| SI | EMSO (Slovenian Personal Identification Number) Regex: ^([0][1-9]|[12][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{3}[1-9][0-9]{5}$ | CONCAT | |
| SK | SKPN (Slovakian Personal Number) Regex: ^[0-9]{2,6}-?[0-9]{2,10}[0-9]{4}$ | SKPS (National Passport Number) Regex: ^[A-Z]{2}[0-9]{7}$ | CONCAT |
| Any other ISO2 country code | GPN (General Passport Number) Regex: ^[A-Z0-9]{3,}$ |
| Country Code | 1st Priority Identifier Standard | 2nd Priority Identifier Standard | 3rd Priority Identifier Standard |
|---|---|---|---|
| BE | BNN (Belgian National Number) Regex: ^[0-9]{2}([0][1-9]|[1][012])([0][1-9]|[12][0-9]|[3][01])[0-9]{5}$ | CONCAT | |
| BG | BPN (Bulgarian National Number) Regex: ^[0-9]{2}([0][1-9]|[1][012]|[4][1-9]|[5][012])([0][1-9]|[12][0-9]|[3][01])[0-9]{4}$ | CONCAT | |
| CY | CYPN (Cypriot National Passport Number) Regex: ^[A-Z][0-9]{6,8}$ | CONCAT | |
| CZ | CZNI (Czech National Identification Number) Regex: ^[0-9]{2,6}-?[0-9]{2,10}/?[0-9]{4}$ | CZPN (National Passport Number) Regex: ^[0-9]{8,10}$ | CONCAT |
| DK | DPIC (Danish Personal Identity Code) Regex: ^([0][1-9]|[12][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{2}[0-9]{4}$ | CONCAT | |
| EE | EPIC (Estonian Personal Identification Code) Regex: ^[1-6][0-9]{2}([0][1-9]|[1][012])([0][1-9]|[12][0-9]|[3][01])[0-9]{4}$ | ||
| ES | STIN (Spanish Tax Identification Number) Regex: ^[A-Z0-9]{9}$ | ||
| FI | FPIN (Finnish Personal Identification Code) Regex: ^([0][1-9]|[1][0-9]|[2][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{2}[A+-][0-9]{3}(?![GIOQZ])[A-Z0-9]$ | CONCAT | |
| GB | NINO (National Insurance Number) Regex: ^(?!BG|GB|KN|NK|NT|TN|ZZ)[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z][0-9]{6}[A-D]$ | CONCAT | |
| GR | DSS (Greek DSS Investor Share) Regex: ^[0-9]{10}$ | CONCAT | |
| HR | OIB (Croatian Personal Identification Number) Regex: ^[0-9]{11}$ | CONCAT | |
| IS | IPIC (Icelandic Personal Identity Code) Regex: ^([0][1-9]|[1][0-9]|[2][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{2}[0-9]{4}$ | ||
| IT | FSC (Italian Fiscal Code) Regex: ^[A-Z]{6}[0-9LMNPQRSTUV]{2}[ABCDEHLMPRST]{1}[0-9LMNPQRSTUV]{2}[A-Z]{1}[0-9LMNPQRSTUV]{3}[A-Z]{1}$ | ||
| LI | LIPB (Liechtenstein National Passport Number) Regex: ^[A-Z][0-9]{5}$ | CONCAT | |
| LT | LTPC (Lithuanian Personal Code) Regex: ^[1-6][0-9]{2}[0,1][0-9][0-9]{2}[0-9]{4}$ | LTPN (National Identity Card Number) Regex: ^[0-9]{8}$ | CONCAT |
| LV | LVPC (Latvian Personal Code) Regex: ^((0[1-9]|[12][0-9]|3[01])(0[1-9]|1[012])(\d{2})[-]?(0|1|2)(\d{4}))|((3[2-9]\d{4}-?\d{5}))$ | CONCAT | |
| MT | MTNI (Maltese National Identification Number) Regex: ^[0-9]{7}[A-Z]$ | MTPN (National Passport Number) Regex: ^[0-9]{7}$ | |
| NL | NLPN (Dutch National Passport Number) Regex: ^[A-NP-Z]{2}[A-NP-Z0-9]{6}[0-9]$ | NLDN (National Identity Card Number) Regex: ^[A-NP-Z]{2}[A-NP-Z1-9]{6}[1-9]$ | CONCAT |
| NO | NDPI (Norwegian 11 Digit Personal ID) Regex: ^([0][1-9]|[12][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{7}$ | CONCAT | |
| PL | PESEL (Polish National Identification Number) Regex: ^[0-9]{11}$ | PLTN Tax Number (Numer Identyfikacji Podatkowej) Regex: ^[0-9]{10}$ | |
| PT | PTTN (Portuguese Tax Number) ^[0-9]{9}$ | PTNP (National Passport Number) Regex: ^([A-Z][0-9]{6})$``^([A-Z]{2}[0-9]{6})$ | CONCAT |
| RO | RONI (Romanian National Identification Number) Regex: ^[1-9]\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])(0[1-9]|[1-4]\d|5[0-2]|70|80|99)(00[1-9]|0[1-9]\d|[1-9]\d\d)\d$ | ROPN (National Passport Number) Regex: ^[A-Z]{2}[0-9]{6}$ | CONCAT |
| SE | SEPI (Swedish Personal Identity Number) Regex: ^(19|20)?[0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])[-+ ]?[0-9]{4}$ | CONCAT | |
| SI | EMSO (Slovenian Personal Identification Number) Regex: ^([0][1-9]|[12][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{3}[1-9][0-9]{5}$ | CONCAT | |
| SK | SKPN (Slovakian Personal Number) Regex: ^[0-9]{2,6}-?[0-9]{2,10}[0-9]{4}$ | SKPS (National Passport Number) Regex: ^[A-Z]{2}[0-9]{7}$ | CONCAT |
| Any other ISO2 country code | GPN (General Passport Number) Regex: ^[A-Z0-9]{3,}$ |