{"id":"isin-validate","version":"1.0.0","description":"Validate a 12-character ISIN's ISO 6166 Luhn check digit and parse its country prefix, NSIN and NSIN scheme.","supported_operations":["validate an isin","check isin check digit","is this isin number valid","isin checksum validator","verify international securities identification number","parse isin country code and nsin","check digit for a stock isin","does this isin belong to cusip or sedol"],"unsupported_operations":["looking up which company or security an ISIN actually identifies","computing an ISIN from a country and national number (see isin-compute-from-nsin)","validating the CUSIP or SEDOL check digit embedded in the NSIN (see cusip-validate / sedol-validate)"],"semantics":["isin must be exactly 12 characters: no case folding, no separators, no trimming. Any other length is reason wrong_length, checked first.","Positions 1-2 (country_prefix), 3-11 (nsin) and 12 (check_digit) are the raw positional substrings whenever isin is exactly 12 characters, regardless of whether the per-position charset or the check digit itself is valid.","Positions 1-2 must be A-Z; positions 3-11 must be A-Z or 0-9; position 12 must be 0-9, else reason invalid_character.","country_prefix must be an officially assigned ISO 3166-1 alpha-2 code (data_version) or one of the ISIN-specific prefixes XS, EU, XA, XB, XC, XD, else reason unknown_country_prefix.","Check digit: expand country_prefix+nsin (11 characters) to decimal digits (a digit stays itself; A=10 ... Z=35), concatenate, then Luhn: double every digit at an odd 1-based position from the right (the rightmost expanded digit is doubled, subtracting 9 from any doubled value over 9); the expected check digit is (10 - sum mod 10) mod 10. A mismatch is reason check_digit_mismatch.","nsin_type is \"cusip\" for raw country_prefix US or CA, \"sedol\" for GB, IE, IM, JE or GG, and \"other\" otherwise; it depends only on the raw prefix, never on charset or check-digit validity, and is null only when length already failed.","valid is true only when length, charset, country recognition and the check digit all pass, in that order; only one reason is ever returned."],"limits":{"max_isin_bytes":12},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["isin"],"properties":{"isin":{"type":"string","minLength":1,"maxLength":12}}},"output_schema":{"type":"object","additionalProperties":false,"required":["valid","reason","country_prefix","nsin","check_digit","nsin_type","data_version"],"properties":{"valid":{"type":"boolean"},"reason":{"type":["string","null"],"enum":[null,"wrong_length","invalid_character","unknown_country_prefix","check_digit_mismatch"]},"country_prefix":{"type":["string","null"],"minLength":2,"maxLength":2},"nsin":{"type":["string","null"],"minLength":9,"maxLength":9},"check_digit":{"type":["string","null"],"minLength":1,"maxLength":1},"nsin_type":{"type":["string","null"],"enum":[null,"cusip","sedol","other"]},"data_version":{"type":"string"}}},"examples":[{"input":{"isin":"US0378331005"},"output":{"valid":true,"reason":null,"country_prefix":"US","nsin":"037833100","check_digit":"5","nsin_type":"cusip","data_version":"iso3166-1-2026-09-28"}},{"input":{"isin":"ZZ0123456780"},"output":{"valid":false,"reason":"unknown_country_prefix","country_prefix":"ZZ","nsin":"012345678","check_digit":"0","nsin_type":"other","data_version":"iso3166-1-2026-09-28"}}],"execute_url":"/v1/tools/isin-validate/versions/1.0.0/execute"}