An ISIN, the International Securities Identification Number, is a 12-character code that identifies a financial security such as a share or a bond. It has a two-letter country prefix, a nine-character national number and a check digit, is defined in ISO 6166 and is issued by national numbering agencies.
Structure and issue
The first two characters are a country code, the next nine are the national security number given by the numbering agency in that country, and the last is a check digit from the modulus 10 double-add-double method. For a US security the nine characters are its CUSIP, so US0378331005 reads as country US, national number 037833100 and check digit 5. ANNA, the association of national numbering agencies, is the registration authority for the standard, and only an official numbering agency can issue a valid ISIN.
What an ISIN identifies
An ISIN identifies a security, not a venue, a currency or a company. A share listed on three exchanges has one ISIN. To name one trading line, add its market identifier code, or use a listing-level FIGI. A company has one ISIN for each share class and each bond, so group by issuer through its LEI or a company identifier.
An ISIN does not always last as long as the security. A corporate action such as a reverse split can bring a new one, so keep old values with their dates.
Checking an ISIN
The check digit catches typing errors. It does not show that the ISIN was ever issued.
import re
def isin_ok(isin: str) -> bool:
if not re.fullmatch(r"[A-Z]{2}[A-Z0-9]{9}[0-9]", isin):
return False
digits = "".join(str(int(c, 36)) for c in isin) # letters become 10 to 35
total = 0
for i, d in enumerate(reversed(digits)):
n = int(d) * (2 if i % 2 else 1)
total += n // 10 + n % 10
return total % 10 == 0In Fokals data
Every listed company carries its ISIN, validated by its check digit, next to its ticker, MIC, LEI and share-class FIGI. A security is matched to its company by ISIN first, so the ISIN is the strongest join key in the company index. A brand or subsidiary carries the ISIN of its listed parent. The data dictionary lists the identifier fields, and ISIN, LEI and FIGI compared sets the three side by side.
Related terms
- FIGI: an open code that separates the listings of one security.
- LEI: the code of the issuing legal entity.
- Market identifier code (MIC): the code of the trading venue.
- Security master: the table that holds all of them.
- Central Index Key (CIK): the SEC's code for a filer.
Frequently asked questions
What does an ISIN look like?
It is twelve characters: two letters, nine letters or digits and a final digit, written without spaces or hyphens. The two letters are a country code, normally that of the issuer's registration. The nine characters are the national number, and the last digit is the check digit that proves the code is well formed.
What is the difference between an ISIN and a CUSIP?
A CUSIP is the nine-character national number used in the United States and Canada. An ISIN is the international form: it wraps a national number in a country code and a check digit. A US ISIN contains the CUSIP, so one can be built from the other.
Is an ISIN the same as a ticker?
No. A ticker is a short trading symbol, unique only on one venue at one time and reused when a security disappears. An ISIN identifies the security itself and does not change with the venue or the symbol. Use the ISIN to join datasets, and the ticker with a market identifier code when only symbols are available.
The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.