Financial Instrument Identifiers Explained
ISIN, CUSIP, SEDOL, LEI, FIGI — every financial system uses a different set of codes. This guide explains what each identifier is, how it is structured, who issues it, and how they all relate to each other.
In this guide
- 1. Quick reference — all identifiers at a glance
- 2. ISIN — the global standard
- 3. CUSIP — North America
- 4. SEDOL — United Kingdom & Ireland
- 5. LEI — identifying the issuer, not the instrument
- 6. FIGI — Bloomberg's open identifier
- 7. Other identifiers: WKN, VALOR, RIC, Bloomberg ticker
- 8. How identifiers relate to each other
- 9. Which identifier should you use?
- 10. Validating identifiers via API
1. Quick reference — all identifiers at a glance
| ID | Length | Issued by | Scope | Check digit |
|---|---|---|---|---|
| ISIN | 12 | National numbering agencies | Global | Luhn (alphanumeric expansion) |
| CUSIP | 9 | CUSIP Global Services (FactSet/ABA) | US & Canada | Modified Luhn |
| SEDOL | 7 | LSEG | UK, Ireland & global | Weighted mod-10 [1,3,1,7,3,9] |
| LEI | 20 | GLEIF (LOUs) | Global (legal entities) | MOD-97-10 (ISO 7064) |
| FIGI | 12 | Bloomberg / OpenFIGI | Global (per listing) | None (opaque string) |
| WKN | 6 | WM Datenservice | Germany | None |
| VALOR | variable | SIX Financial | Switzerland | None |
2. ISIN — the global standard
The International Securities Identification Number (ISO 6166) is the closest thing to a universal security identifier. It is accepted by regulators, exchanges, and clearing systems worldwide.
- Format: 2-letter ISO country code + 9-character NSIN + 1 check digit
- Check digit: Luhn algorithm applied to the digit string obtained by expanding each letter A–Z to its two-digit value (A=10, B=11, … Z=35)
- Issued by: National Numbering Agencies (NNAs) — CUSIP Global Services for US, London Stock Exchange for GB, Deutsche Börse for DE, etc.
- Used in: MiFID II reporting, EMIR, T2S settlement, FCA filings, SEC reporting
The NSIN (National Securities Identifying Number) is country-specific. For US securities it is the CUSIP. For UK securities it is 00 + SEDOL. For German securities it is the WKN padded to 9 characters.
| ISIN | Security | NSIN embedded |
|---|---|---|
| US0378331005 | Apple Inc. | 037833100 (CUSIP) |
| GB0007980591 | BP PLC | 007980591 (00 + SEDOL 0798059) |
| DE0005140008 | Deutsche Bank AG | 000514000 (WKN 514000) |
API: ISIN validation → · Node.js guide →
3. CUSIP — North America
The Committee on Uniform Security Identification Procedures number is the dominant identifier for securities traded in the United States and Canada. Introduced in 1968, it underpins settlement at DTC, clearing at NSCC, and regulatory reporting at the SEC.
- Format: 6-char issuer number + 2-char issue number + 1 check digit
- Characters: Digits 0–9, letters A–Z, and special chars
*@# - Check digit: Modified Luhn — same doubling/digit-sum approach as standard Luhn, but with A=10…Z=35, *=36, @=37, #=38
- Issued by: CUSIP Global Services (FactSet, licensed from ABA)
- Used in: DTC settlement, SEC Form 13F, TRACE fixed-income reporting, NSCC clearing
US + CUSIP (9 chars) + Luhn check digit. This is why the ISIN validator returns a cusip field for US and CA ISINs.4. SEDOL — United Kingdom & Ireland
The Stock Exchange Daily Official List code is assigned by LSEG (London Stock Exchange Group). It is the primary identifier for UK and Irish securities, used in CREST settlement and FCA transaction reporting. Despite its UK origins, the SEDOL Masterfile covers over 100 million instruments globally.
- Format: 6 alphanumeric characters + 1 check digit
- Characters: Digits 0–9 and letters. Modern SEDOLs (post-2004) exclude vowels A, E, I, O, U to reduce ambiguity
- Check digit: Weighted sum with weights [1,3,1,7,3,9], modulo 10. Character values: 0–9=0–9, A–Z=10–35
- Issued by: LSEG (London Stock Exchange Group)
- Used in: CREST settlement, FCA MiFIR reporting, UK investment manager data feeds
Unlike ISIN and CUSIP, a SEDOL identifies a specific listing on a specific market — the same company may have multiple SEDOLs for different share classes or exchange venues.
5. LEI — identifying the issuer, not the instrument
The Legal Entity Identifier (ISO 17442) is fundamentally different from the other identifiers in this guide — it identifies the legal entity that issues or trades securities, not the security itself. Created after the 2008 financial crisis to improve systemic risk monitoring, it is now mandated for OTC derivatives reporting, MiFID II, and EMIR.
- Format: 4-char LOU prefix + 14-char entity code + 2 check digits (20 chars total)
- Check digit: MOD-97-10 (ISO 7064) — same algorithm as IBAN
- Issued by: GLEIF-accredited Local Operating Units (LOUs)
- Used in: EMIR OTC derivatives reporting, MiFID II, SFTR, bank counterparty identification
- Public database: GLEIF publishes a free, downloadable, full LEI dataset updated daily
issuerLei field (from FIRDS) linking the instrument to its issuing entity. This lets you chain ISIN → LEI → full entity details in a single pipeline.API: LEI validation →
6. FIGI — Bloomberg's open identifier
The Financial Instrument Global Identifier was developed by Bloomberg and made publicly available in 2013 as an open standard under the Object Management Group. Unlike ISIN and SEDOL, FIGI is exchange-specific — each listing on each exchange gets its own FIGI.
- Format: 12-character alphanumeric string — no embedded structure or check digit
- Types: FIGI (per listing), Composite FIGI (across all listings of the same instrument), Share Class FIGI
- Issued by: Bloomberg (via OpenFIGI API — free with registration)
- Used in: Bloomberg Terminal, buy-side data infrastructure, cross-reference databases
The OpenFIGI API accepts ISIN, CUSIP, SEDOL, and other identifiers as input and returns the corresponding FIGI. This is how isvalid enriches ISIN, CUSIP, and SEDOL responses with live instrument data.
7. Other identifiers: WKN, VALOR, RIC, Bloomberg ticker
| ID | Full name | Country | Notes |
|---|---|---|---|
| WKN | Wertpapierkennnummer | Germany | 6-char alphanumeric, embedded in German ISINs (DE…) |
| VALOR | Valorennummer | Switzerland | Numeric, assigned by SIX Financial, embedded in CH ISINs |
| RIC | Reuters Instrument Code | Global | Proprietary Refinitiv/LSEG code, ticker + exchange suffix (e.g. VOD.L) |
| Ticker | Exchange ticker | Global | Not unique globally — AAPL on NASDAQ differs from AAPL on another exchange |
8. How identifiers relate to each other
The identifiers are not independent — several are mathematically derived from each other:
CUSIP → US/CA ISIN
US ISIN = "US" + CUSIP (9) + Luhn_check_digit("US" + CUSIP)Example: CUSIP 037833100 → ISIN US0378331005
SEDOL → GB ISIN
GB ISIN = "GB00" + SEDOL (7) + Luhn_check_digit("GB00" + SEDOL)Example: SEDOL 0798059 → ISIN GB0007980591
ISIN → LEI (via issuer field)
FIRDS (ESMA's MiFID II reference database) links each ISIN to the issuer's LEI. This relationship is not mathematical — it comes from regulatory reporting data.
ISIN / CUSIP / SEDOL → FIGI
OpenFIGI maps any of these identifiers to FIGI via its free mapping API. There is no deterministic formula — the mapping is maintained by Bloomberg.
// Deriving a US ISIN from a CUSIP (JavaScript) function cusipToUsIsin(cusip) { const prefix = 'US' + cusip; // "US" + 9 chars = 11 chars return prefix + luhnCheckDigit(expandToDigits(prefix)); } // Deriving a GB ISIN from a SEDOL function sedolToGbIsin(sedol) { const prefix = 'GB00' + sedol; // "GB00" + 7 chars = 11 chars return prefix + luhnCheckDigit(expandToDigits(prefix)); } // Both use the same Luhn expansion (A→10, B→11, …, Z→35) function expandToDigits(s) { return [...s].map(ch => ch >= 'A' && ch <= 'Z' ? String(ch.charCodeAt(0) - 55) : ch ).join(''); }
9. Which identifier should you use?
Use ISIN when…
You need a single global identifier that works across markets. ISIN is mandatory for EU regulatory reporting (MiFID II, EMIR, SFTR) and widely accepted for cross-border settlement. It is the best choice for a canonical key in a securities master database.
Use CUSIP when…
You are working with US or Canadian securities and interfacing with US settlement systems (DTC, NSCC), US regulatory filings (SEC 13F, TRACE), or prime broker infrastructure. CUSIP is the native key for US fixed-income and equity markets.
Use SEDOL when…
You are working with UK or Irish securities, interfacing with CREST settlement, FCA transaction reporting, or a UK-based data vendor. SEDOL is the native key for the London Stock Exchange ecosystem.
Use LEI when…
You need to identify a counterparty or issuer rather than a security. LEI is mandatory for OTC derivatives reporting and is increasingly used in KYC/AML workflows for institutional clients.
Use FIGI when…
You need to disambiguate between listings of the same security on different exchanges, or when building a cross-reference layer that maps from ISIN/CUSIP/SEDOL to a consistent internal key. FIGI is free and open, making it attractive for data infrastructure that does not have Bloomberg Terminal access.
10. Validating identifiers via API
The IsValid API provides dedicated endpoints for each identifier. A single call handles format validation, check digit verification, and live instrument enrichment from ESMA FIRDS and OpenFIGI.
| Identifier | Endpoint | Enrichment |
|---|---|---|
| ISIN | /v0/isin | FIRDS + OpenFIGI |
| CUSIP | /v0/cusip | FIRDS (via US ISIN) + OpenFIGI |
| SEDOL | /v0/sedol | OpenFIGI |
| LEI | /v0/lei | GLEIF database |
| CFI | /v0/cfi | ISO 10962 classification |
// Validate an ISIN and get full instrument details const res = await fetch('https://api.isvalid.dev/v0/isin?value=GB0007980591', { headers: { Authorization: 'Bearer YOUR_API_KEY' }, }); const data = await res.json(); // { // valid: true, // countryCode: 'GB', // nsin: '007980591', // found: true, // name: 'BP PLC', // issuerLei: 'ZZFHHZLM2EP5ZJSUDL95', // → use /v0/lei to get entity details // cfiCode: 'ESVUFR', // currency: 'GBP', // figi: 'BBG000BT4FC2', // ... // }
See also: Check digit algorithms explained · ISIN API docs · CUSIP API docs · SEDOL API docs · LEI API docs