FreeToGenerate.com

Comprueba un ISIN, mira cómo sale el dígito de control y descubre la errata a la que el estándar es ciego. No se sube nada.

Doce caracteres. Los espacios y guiones se ignoran, y las minúsculas valen.

Prueba con uno

El dígito de control cuadra

Prefijo
GBUnited Kingdom
Número nacional
000263494
Dígito de control
6

Sobre qué se calcula el dígito de control

1611000263494

Cada letra se convierte en dos dígitos, de la A como 10 a la Z como 35, y el cálculo de Luhn se hace sobre eso. Por eso las cuentas nunca parecen encajar con el código que has escrito.

Este código tiene un gemelo indetectable

BG0002634946 también es válido, y es Bulgaria.

Intercambiar las dos primeras letras nunca puede cambiar el dígito de control, así que ninguna validación detectará esa errata en concreto. No es un fallo de esta herramienta: es aritmética, y está explicada más abajo.

Todos los pares de prefijos que se pueden intercambiar sin que se note

Los dos miembros de cada par existen de verdad, así que un prefijo intercambiado no parece erróneo. Estos son los cambios a los que el dígito de control es ciego por construcción. Cuarenta y tres son pares de códigos de país ISO 3166; la fila de más es XS, el prefijo de los eurobonos, que al invertirse da San Martín.

CódigosLugares
AG / GAAntigua & Barbuda / Gabon
AL / LAAlbania / Laos
AM / MAArmenia / Morocco
AQ / QAAntarctica / Qatar
AS / SAAmerican Samoa / Saudi Arabia
AU / UAAustralia / Ukraine
AZ / ZAAzerbaijan / South Africa
BG / GBBulgaria / United Kingdom
BL / LBSt. Barthélemy / Lebanon
BS / SBBahamas / Solomon Islands
CL / LCChile / St. Lucia
CM / MCCameroon / Monaco
CN / NCChina / New Caledonia
CV / VCCape Verde / St. Vincent & Grenadines
DM / MDDominica / Moldova
EG / GEEgypt / Georgia
ER / REEritrea / Réunion
ES / SESpain / Sweden
FM / MFMicronesia / St. Martin
GM / MGGambia / Madagascar
GN / NGGuinea / Nigeria
GP / PGGuadeloupe / Papua New Guinea
GS / SGSouth Georgia & South Sandwich Islands / Singapore
GT / TGGuatemala / Togo
GU / UGGuam / Uganda
HK / KHHong Kong SAR China / Cambodia
HM / MHHeard Island & McDonald Islands / Marshall Islands
HT / THHaiti / Thailand
IL / LIIsrael / Liechtenstein
IN / NIIndia / Nicaragua
IS / SIIceland / Slovenia
KM / MKComoros / North Macedonia
KP / PKNorth Korea / Pakistan
LS / SLLesotho / Sierra Leone
LT / TLLithuania / Timor-Leste
MO / OMMacao SAR China / Oman
MP / PMNorthern Mariana Islands / St. Pierre & Miquelon
MS / SMMontserrat / San Marino
MT / TMMalta / Turkmenistan
MU / UMMauritius / U.S. Outlying Islands
MZ / ZMMozambique / Zambia
NP / PNNepal / Pitcairn Islands
RS / SRSerbia / Suriname
SX / XSSint Maarten / Euroclear or Clearstream

También disponible en: English · Português · Français · العربية

Validador de ISIN

Valida un ISIN según la norma ISO 6166, mira la aritmética que hay detrás del dígito de control y encuentra la transposición que ningún dígito de control puede detectar.

Qué es un ISIN

Un ISIN es el código de doce caracteres que identifica un valor concreto en todo el mundo. Lo define la norma ISO 6166 y tiene tres partes: un prefijo de dos letras, un número nacional de nueve caracteres que asigna la agencia de codificación local y un único dígito de control al final.

El prefijo es casi siempre un código de país ISO 3166, así que una acción estadounidense empieza por US y una británica por GB. Hay unas pocas excepciones reservadas, y la importante es XS, que se usa para valores internacionales liquidados a través de Euroclear o Clearstream. La mayoría de los eurobonos la llevan, de modo que cualquier validador que exija que el prefijo sea un país se equivoca con una porción enorme del mercado.

El dígito de control es el algoritmo de Luhn, el mismo que hay detrás de los números de tarjeta. Pero no se aplica al ISIN tal como se lee. Primero cada letra se sustituye por dos dígitos, de la A como 10 hasta la Z como 35, y la suma de Luhn se hace sobre esa cadena expandida. El US0378331005 de Apple se convierte en 3028037833100 antes de que haya una sola suma, y por eso las cuentas nunca parecen encajar con el código que tienes delante.

Cómo se usa

  1. Pega o escribe el ISIN. Los espacios, los guiones y las minúsculas dan igual. El único requisito son doce caracteres.
  2. Lee el desglose. Identifica el prefijo, separa el número nacional y muestra la cadena de dígitos expandida sobre la que se calcula de verdad el dígito de control.
  3. Mira si tu código tiene gemelo. Si al invertir las dos primeras letras sale otro prefijo real, la herramienta te enseña ese código, porque también es válido y ningún dígito de control del mundo te dirá cuál de los dos querías.

La transposición que nunca se puede detectar

Un dígito de control existe para pillar erratas, y la errata más común es intercambiar dos caracteres contiguos. El ISIN pilla casi todas. Hay una clase que no pilla, y el fallo es total, no ocasional.

Intercambiar dos letras contiguas nunca cambia el dígito de control. Ni pocas veces, ni casi nunca: nunca. Probamos más de dieciocho mil transposiciones entre letras y todas y cada una dieron un código que sigue validando. El motivo es aritmético. Luhn duplica uno de cada dos dígitos contando desde la derecha, y una letra ocupa exactamente dos posiciones una vez expandida. Mover un bloque de dos dígitos dos posiciones deja cada uno de sus dígitos en el mismo lado de esa alternancia, así que su aportación a la suma no cambia, así que la suma no cambia, así que el dígito de control tampoco.

Fíjate ahora en dónde están las letras. Los dos primeros caracteres de cualquier ISIN son el prefijo de país, y siempre son letras. La única transposición a la que este esquema es estructuralmente ciego está, por tanto, al principio de todos los códigos que se han emitido jamás. Y como 43 pares de códigos ISO 3166 resultan ser el reverso el uno del otro, el prefijo corrompido suele nombrar un país real en vez de parecer un disparate.

El ejemplo trabajado es un valor real. GB0002634946 es un instrumento británico, y BG0002634946 son los mismos dígitos bajo el prefijo de Bulgaria. Los dos pasan. España y Suecia hacen lo mismo, como ES y SE, y también Hong Kong y Camboya, Israel y Liechtenstein, Malta y Turkmenistán, Corea del Norte y Pakistán. La lista completa está en la tabla que hay encima del artículo.

Conviene ser preciso sobre lo excepcional que es esto. Frente a los demás dígitos de control, el ISIN solo se deja el 1,90% de las transposiciones entre dígitos, y son justo los intercambios de 0 y 9 que el algoritmo de Luhn siempre ha dejado escapar. Se deja alrededor del 11% de los intercambios entre una letra y un dígito, que mueven los bloques un número impar de posiciones y por eso sí suelen cambiar la suma. El caso letra con letra es el que llega al cien por cien.

Límites honestos y cómo se ha comprobado

Que el dígito de control cuadre significa que los doce caracteres son coherentes entre sí. No significa que el valor exista, ni que se pueda negociar, ni que el número nacional se llegara a emitir. Cualquiera puede construir un ISIN bien formado en unos segundos, y esta página hace exactamente eso para los botones de ejemplo. Aquí no se consulta ningún registro, porque no hay ninguno público y gratuito que consultar, y una herramienta que insinuara lo contrario estaría mintiendo sobre lo que sabe.

El dígito de control también es más débil de lo que parece frente a un solo carácter mal tecleado: pilla en torno a nueve de cada diez y se deja el resto, que es el comportamiento normal de cualquier dígito único módulo diez y no un defecto propio del ISIN.

La implementación está anclada a cinco ISIN publicados de tres países en vez de a sí misma, y la tabla de países es el mismo conjunto de datos ISO 3166 que hay detrás de la página de códigos de país de este sitio, así que los prefijos que se aceptan aquí y los códigos que allí se listan no pueden separarse. Hay 910 comprobaciones en total. El resultado de letra con letra se comprueba dos veces, una barriendo miles de códigos generados y otra como el álgebra que lo obliga, y lleva un control negativo: los intercambios entre letra y dígito se detectan cerca del 89% de las veces, y sin eso la afirmación de que todo se conserva valdría igual para una función que ignorase su entrada.

Una trampa que merece mención para quien lo implemente por su cuenta: es tentador alinear la duplicación con los doce caracteres originales en lugar de con la cadena expandida. Eso acierta lo bastante a menudo como para sobrevivir a unas pruebas superficiales y discrepa del estándar en unos nueve ISIN de cada diez.

¿Por qué es gratis?

Esto son unas pocas docenas de líneas de aritmética y una tabla de consulta, ejecutándose en la pestaña que ya tienes abierta. Ningún servidor ve el código que escribes, así que no hay nada que cobrar ni cuenta que crear.

Nada de lo que introduzcas se sube, se guarda ni se registra. Las carteras y las órdenes son justo el tipo de cosa que la gente pega en un validador, así que conviene decirlo claramente en vez de darlo por supuesto.