ISIN

GET/v0/isin

Validates an International Securities Identification Number (ISIN) as defined by ISO 6166. An ISIN is a 12-character alphanumeric code that uniquely identifies a financial instrument worldwide: 2-letter ISO country code, 9-character NSIN (National Securities Identifying Number), and 1 check digit verified using a Luhn-based algorithm.

When the ISIN is structurally valid, the endpoint looks up instrument details from two sources simultaneously. ESMA FIRDS (the EU regulatory reference database under MiFID II, synchronised daily) provides the richest data for European instruments. OpenFIGI (Bloomberg) extends coverage to global instruments such as US equities. Both sources are queried in parallel and their fields are merged into a single response. The dataSource field indicates which source(s) returned data: firds, openfigi, or firds+openfigi when both found the instrument. Fields from an unavailable or non-matching source are returned as null. OpenFIGI results are cached for 24 hours. Whitespace in the input is stripped automatically.

XT-ISINs (prefix XT) identify digital tokens registered with the Digital Token Identifier Foundation (DTIF) under ISO 24165. They share the same 12-character structure and Luhn check digit as regular ISINs. No enrichment data from FIRDS or OpenFIGI is available for digital tokens, so XT-ISINs always return found: false. Note: the NSIN of an XT-ISIN is assigned independently by the numbering authority and is not the same as the token's DTI (ISO 24165 identifier).

Guides: Node.js · Python

Try it

Query Parameters

ParameterTypeRequiredDescription
valuestringYesThe 12-character ISIN to validate (e.g. US0378331005)

Example Request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.isvalid.dev/v0/isin?value=US0378331005"

Response Fields

FieldTypeDescription
validbooleanWhether the ISIN passed format and check digit validation
countryCodestringISO 3166-1 alpha-2 country code extracted from the ISIN prefix (e.g. US)
countryNamestring | nullFull country name (e.g. United States). Always present; null for unrecognised country codes
nsinstringNational Securities Identifying Number — the 9-character country-specific part
cusipstring | nullCUSIP identifier (9 characters) derived from nsin. Present for US and CA ISINs; null for all other countries
checkDigitstringThe Luhn check digit (last character of the ISIN)
foundboolean | nullWhether the instrument was found in any data source. true — found, instrument details included; false — structurally valid ISIN but not found in either source; null — all data sources unavailable, structural validation result only
dataSourcestringWhich source(s) found the instrument. firds — ESMA FIRDS only; openfigi — OpenFIGI only; firds+openfigi — both sources returned data (fields from each are merged). Present only when found is true
namestringFull instrument name (e.g. APPLE INC). Present when found is true
fisnstring | nullFinancial Instrument Short Name (ISO 18774) — a standardised human-readable label in the format ISSUER/DESCRIPTION, e.g. PKN ORLEN SA/SHS. From FIRDS; null when FIRDS data is unavailable
statusstring | nullInstrument lifecycle status from FIRDS. ACTV — active; TERM — terminated (delisted or expired). Always present when found is true; null when FIRDS data is unavailable
cfiCodestring | null6-character Classification of Financial Instruments code (ISO 10962), e.g. ESVUFR for equity. From FIRDS; null when FIRDS data is unavailable
currencystring | nullISO 4217 notional currency code (e.g. EUR). From FIRDS; null when FIRDS data is unavailable
tradingVenuestring | nullISO 10383 Market Identifier Code (MIC) of the primary trading venue (e.g. XWAR for Warsaw Stock Exchange). From FIRDS; null when FIRDS data is unavailable
issuerLeistring | nullLegal Entity Identifier (LEI) of the instrument issuer. From FIRDS; null when FIRDS data is unavailable
maturityDatestring | nullMaturity or expiry date in YYYY-MM-DD format for bonds and derivatives. From FIRDS; null for equities or when FIRDS data is unavailable
tickerstring | nullExchange ticker symbol (e.g. AAPL). From OpenFIGI; null when OpenFIGI data is unavailable
exchCodestring | nullBloomberg exchange code (e.g. UN for NYSE). From OpenFIGI; null when OpenFIGI data is unavailable
securityTypestring | nullSecurity type from OpenFIGI (e.g. Common Stock). From OpenFIGI; null when OpenFIGI data is unavailable
marketSectorstring | nullMarket sector from OpenFIGI (e.g. Equity). From OpenFIGI; null when OpenFIGI data is unavailable
figistring | nullFinancial Instrument Global Identifier (e.g. BBG000B9XRY4). From OpenFIGI; null when OpenFIGI data is unavailable
compositeFIGIstring | nullComposite FIGI representing the instrument across all exchanges. From OpenFIGI; null when OpenFIGI data is unavailable or the instrument has no composite FIGI

Example Response — found in both sources

{
  "valid": true,
  "countryCode": "PL",
  "countryName": "Poland",
  "nsin": "000PKN0RH1",
  "cusip": null,
  "checkDigit": "6",
  "found": true,
  "dataSource": "firds+openfigi",
  "name": "PKN ORLEN SA",
  "fisn": "PKN ORLEN SA/SHS",
  "cfiCode": "ESVUFR",
  "currency": "PLN",
  "tradingVenue": "XWAR",
  "issuerLei": "259400VMBIZKDL26YB25",
  "maturityDate": null,
  "status": "ACTV",
  "ticker": "PKN",
  "exchCode": "WSE",
  "securityType": "Common Stock",
  "marketSector": "Equity",
  "figi": "BBG000BW0VH6",
  "compositeFIGI": "BBG000BW0VH6"
}

Example Response — found via FIRDS only (EU instrument not in OpenFIGI)

{
  "valid": true,
  "countryCode": "PL",
  "countryName": "Poland",
  "nsin": "000PKN0RH1",
  "cusip": null,
  "checkDigit": "6",
  "found": true,
  "dataSource": "firds",
  "name": "PKN ORLEN SA",
  "fisn": "PKN ORLEN SA/SHS",
  "cfiCode": "ESVUFR",
  "currency": "PLN",
  "tradingVenue": "XWAR",
  "issuerLei": "259400VMBIZKDL26YB25",
  "maturityDate": null,
  "status": "ACTV",
  "ticker": null,
  "exchCode": null,
  "securityType": null,
  "marketSector": null,
  "figi": null,
  "compositeFIGI": null
}

Example Response — found via OpenFIGI only (non-EU instrument)

{
  "valid": true,
  "countryCode": "US",
  "countryName": "United States",
  "nsin": "037833100",
  "cusip": "037833100",
  "checkDigit": "5",
  "found": true,
  "dataSource": "openfigi",
  "name": "APPLE INC",
  "fisn": null,
  "cfiCode": null,
  "currency": null,
  "tradingVenue": null,
  "issuerLei": null,
  "maturityDate": null,
  "status": null,
  "ticker": "AAPL",
  "exchCode": "UN",
  "securityType": "Common Stock",
  "marketSector": "Equity",
  "figi": "BBG000B9XRY4",
  "compositeFIGI": "BBG000B9XRY4"
}

Example Response — terminated instrument

{
  "valid": true,
  "countryCode": "DE",
  "countryName": "Germany",
  "nsin": "000A0MR4U3",
  "cusip": null,
  "checkDigit": "4",
  "found": true,
  "dataSource": "firds",
  "name": "EXAMPLE BOND 2020",
  "fisn": "EXAMPLE BOND/FLT 14-20",
  "cfiCode": "DBFNFR",
  "currency": "EUR",
  "tradingVenue": "XFRA",
  "issuerLei": "5299009XBDRSN8D5E918",
  "maturityDate": "2020-12-31",
  "status": "TERM",
  "ticker": null,
  "exchCode": null,
  "securityType": null,
  "marketSector": null,
  "figi": null,
  "compositeFIGI": null
}

Example Response — not found

{
  "valid": true,
  "countryCode": "US",
  "countryName": "United States",
  "nsin": "037833100",
  "cusip": "037833100",
  "checkDigit": "5",
  "found": false
}

Example Response — data sources unavailable

{
  "valid": true,
  "countryCode": "US",
  "countryName": "United States",
  "nsin": "037833100",
  "cusip": "037833100",
  "checkDigit": "5",
  "found": null
}

Example Response — XT-ISIN (digital token, Bitcoin)

{
  "valid": true,
  "countryCode": "XT",
  "countryName": "Digital Tokens (ISO 24165)",
  "nsin": "V15WLZJMF",
  "cusip": null,
  "checkDigit": "0",
  "found": false
}

Example Response — invalid

{
  "valid": false
}