API status

User identifiers

The Investment API accepts first priority identifiers for non-CONCAT countries. If the user does not have a first priority identifier (i.e. does not have a passport), the second 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.

CONCAT identifier

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

Note that there is no need to create this identifier explicitly via the API.

If you want to add a CONCAT identifier for the countries whose 2nd or 3rd prio identifier is CONCAT according to the table below, please get in touch with the Upvest OPS team for such cases.

We do not currently support creating CONCAT identifiers through our API.

Users with multiple nationalities

If a user has more than one nationality, the first nationality will be used in alphabetical order.The exception is that nationalities from the EEA (European Economic Area) always take precedence over nationalities from non-EEA countries.

Reference identifiers

The following table specifies which identifiers are recognised in which countries.

Country Code1st Priority Identifier Standard2nd Priority Identifier Standard3rd Priority Identifier Standard
BEBNN (Belgian National Number) Regex: ^[0-9]{2}([0][1-9]|[1][012])([0][1-9]|[12][0-9]|[3][01])[0-9]{5}$CONCAT
BGBPN (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
CYCYPN (Cypriot National Passport Number) Regex: ^[A-Z][0-9]{6,8}$CONCAT
CZCZNI (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
DKDPIC (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
EEEPIC (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}$
ESSTIN (Spanish Tax Identification Number) Regex: ^[A-Z0-9]{9}$
FIFPIN (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
GBGPN (General Passport Number) Regex: ^[A-Z0-9]{3,}$CONCAT
GRDSS (Greek DSS Investor Share) Regex: ^[0-9]{10}$CONCAT
HROIB (Croatian Personal Identification Number) Regex: ^[0-9]{11}$CONCAT
ISIPIC (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}$
ITFSC (Italian Fiscal Code) Regex: ^[A-Z]{6}[0-9LMNPQRSTUV]{2}[ABCDEHLMPRST]{1}[0-9LMNPQRSTUV]{2}[A-Z]{1}[0-9LMNPQRSTUV]{3}[A-Z]{1}$
LILIPB (Liechtenstein National Passport Number) Regex: ^[A-Z][0-9]{5}$CONCAT
LTLTPC (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
LVLVPC (Latvian Personal Code) Regex: ^(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[012])(\\d{2})[-]?(0|1|2)(\\d{4})$CONCAT
MTMTNI (Maltese National Identification Number) Regex: ^[0-9]{7}[A-Z]$MTPN (National Passport Number) Regex: ^[0-9]{7}$
NLNLPN (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
NONDPI (Norwegian 11 Digit Personal ID) Regex: ^([0][1-9]|[12][0-9]|[3][01])([0][1-9]|[1][012])[0-9]{7}$CONCAT
PLPESEL (Polish National Identification Number) Regex: ^[0-9]{11}$PLTN Tax Number (Numer Identyfikacji Podatkowej) Regex: ^[0-9]{10}$
PTPTTN (Portuguese Tax Number) ^[0-9]{9}$PTNP (National Passport Number) Regex: ^([A-Z][0-9]{6})$``^([A-Z]{2}[0-9]{6})$CONCAT
RORONI (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]|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
SESEPI (Swedish Personal Identity Number) Regex: ^((19)|(20))[0-9]{2}([0][1-9]|[1][012])([0][1-9]|[12][0-9]|[3][01])[0-9]{4}$CONCAT
SIEMSO (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
SKSKPN (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 codeGPN (General Passport Number) Regex: ^[A-Z0-9]{3,}$