MeridianMERIDIAN

ISIN

finance.securities.isin

International Securities Identification Number. 12-character alphanumeric code that uniquely identifies a specific securities issue. Format: 2-letter country code (ISO 3166-1) + 9-character alphanumeric NSIN + 1 check digit (Luhn on alpha-to-numeric conversion where A=10, B=11, ..., Z=35).

Worked samples

DuckDB 1.5.5 · finetype 0.6.64

ValueAs VARCHARcheck_digitcountrynsin
US0378331005US03783310055US037833100
GB0002634946GB00026349466GB000263494
JP3633400001JP36334000011JP363340000
DE0007164600DE00071646000DE000716460
Check digit
Luhn over letter-expanded digits

Shape

Pattern
^[A-Z]{2}[A-Z0-9]{9}[0-9]$
ValueLengthShape
US037833100512matches
GB000263494612matches
JP363340000112matches
DE000716460012matches
US03783310011rejected: one character short

Told apart

Going the other way, this type's own rule accepts 5 of 5 samples of FIGI.

Background

Origin

An International Securities Identification Number (ISIN) is a code that uniquely identifies a security globally for the purposes of facilitating clearing, reporting and settlement of trades.[1] The structure of the ISIN is defined in the international standard ISO 6166.[1][2] ISINs were first used in 1981, but did not reach wide acceptance until 1989, when the G30 recommended their adoption.[1] Wikipedia says ISO endorsed the ISIN with the ISO 6166 standard a year after the G30 recommendation.[1] Wikipedia refers to the current text as ISO 6166:2021, from the 2021 revision of the standard.[1]

ISINs are allocated by National Numbering Agencies (NNAs), with the jurisdiction set by the assignment rule in the ISO 6166 standard.[3] The Association of National Numbering Agencies (ANNA) is the registration authority for the ISIN.[4] Spain's CNMV says the need for cooperation between national agencies, to ensure that each ISIN is unique and that all ISINs are available to users, led to the creation of ANNA.[5] ANNA was founded by 22 countries, including Spain, and held its first general assembly in London in February 1992.[5] At the end of 2025, ANNA had 120 full member countries and 5 partners, which have limited rights within the association.[5]

Use

An ISIN is always 12 characters long: two letters, nine alphanumeric characters and one numerical check digit.[1] The nine middle characters are the National Securities Identifying Number (NSIN), padded as necessary with leading zeros.[1] Wikipedia gives the check digit as calculated using the Luhn algorithm.[1] Before the Luhn calculation, letters are converted to numbers by taking the ASCII code of the capital letter and subtracting 55, so U becomes 30 and S becomes 28.[1] Apple's ISIN, US0378331005, is the CUSIP 037833100 with the country code US added at the front and a check digit at the end.[1] CUSIP Global Services is responsible for the assignment of ISINs in the U.S.[6] CUSIP Global Services says a CUSIP or CINS identifier will always appear in positions 3 to 11 of an ISIN it assigns.[6]

CUSIP Global Services summarises the ISO rule for an equity ISIN's country code as the country where the entity is incorporated.[6] For international debt issues, CUSIP Global Services gives the country code as the country where the Central Securities Depository is located.[6] An ISIN does not specify a particular trading location.[1] Read the two leading letters as a clue to where the code was allocated, not as the security's listing venue or trading currency, and keep the exchange in a column of its own. (Meridian's view)

When the NSIN changes due to corporate actions or other reasons, the ISIN changes too.[1] ANNA's FAQ says that, as a general rule, ISINs should never be re-used.[3] ANNA describes ISO 6166 as recognised by many regulators as the primary identifier required for transaction reporting.[3] Wikipedia notes that European regulations such as the Solvency II Directive 2009 increasingly require the ISIN to be reported.[1]

The python-stdnum library's isin module checks the length and check digit of an ISIN.[2] The python-stdnum documentation notes that the module does not separately validate the embedded national security identifier, such as a CUSIP.[2] Store ISINs as text, upper-case them and check the digit, but remember that a passing check digit only shows the code is well formed, not that any agency issued it. (Meridian's view) ANNA offers a free ISIN Lookup Service where ISINs with basic information can be looked up.[3]

Where you'll meet it

GLEIF publishes daily ISIN-to-LEI relationship files, linking newly issued ISINs to Legal Entity Identifiers, which are publicly available on its website.[4] GLEIF and ANNA piloted the first daily ISIN-to-LEI relationship files in April 2019.[4]

Detection notes

New in v2. ISIN is the global standard for securities identification (ISO 6166). The check digit uses the Luhn algorithm applied to the full string after converting letters to numbers (A=10, B=11, ..., Z=35). Country code follows ISO 3166-1 alpha-2.

Use it

CLI · DuckDB
$ finetype infer -i "US0378331005" --mode column
→ finance.securities.isin

SELECT ft_infer('US0378331005');
-- → 'finance.securities.isin'
Cast expression
CAST({col} AS VARCHAR)

Schema

https://meridian.online/schemas/finance.securities.isin · Frictionless type string

finetype taxonomy finance.securities.isin -o json-schema

Type Registry