Dígito de control CUSIP
Escriba los ocho primeros caracteres de un CUSIP y obtenga el noveno: 03783310 recibe el dígito de control 0 y queda como 037833100. Si ya tiene el código completo de nueve caracteres, compruebe el último dígito antes de registrar una operación. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Número CUSIP
- 03783310
- Modo de cálculo
- Compute
- Entrada
- 03783310
- Dígito de control
- 0
- Número CUSIP
- 037833100
Los identificadores CUSIP etiquetan acciones, bonos y otros valores de Norteamérica para que los sistemas de compensación, las órdenes y los ficheros de cartera coincidan en el mismo código de nueve caracteres. Los primeros ocho identifican emisor y emisión; el noveno es un dígito de control calculado a partir del cuerpo, de modo que un error de tecleo o una transposición falle a menudo antes de registrar una operación sobre el instrumento equivocado. Esta capacidad implementa ese algoritmo estándar: asigna valores a dígitos y letras, duplica posiciones alternas, suma los dígitos decimales y devuelve el dígito que hace el total múltiplo de diez. Use el modo compute cuando solo disponga del cuerpo de ocho caracteres y necesite el dígito final, o el modo validate cuando reciba un CUSIP completo de nueve y necesite un booleano más el dígito esperado para mensajes de error.
Cómo se calcula el dígito de control CUSIP
Un CUSIP tiene nueve caracteres según el esquema familiar estilo ANSI X9.6: seis para el emisor, dos para la emisión y un dígito de control final. Cada carácter del cuerpo se mapea a un número: los dígitos del cero al nueve se quedan como están, las letras de la A a la Z pasan a ser del diez al treinta y cinco, y los símbolos especiales asterisco, arroba y almohadilla valen treinta y seis, treinta y siete y treinta y ocho cuando aparecen.
Recorriendo los ocho caracteres del cuerpo de izquierda a derecha, los valores de las posiciones segunda, cuarta, sexta y octava se duplican. Cada número resultante se reduce sumando sus dígitos decimales —por ejemplo, catorce se convierte en cinco— para que valores grandes de letras no dominen el total. Esas sumas de dígitos se añaden entre sí.
El dígito de control es diez menos el total módulo diez, y ese resultado de nuevo módulo diez, lo que produce un único dígito del cero al nueve. Al añadir ese dígito se obtiene un CUSIP completo de nueve caracteres cuya suma ponderada de dígitos es congruente con cero módulo diez.
Frente a dígitos de control de códigos de barras de consumo como EAN-13 o frente a Luhn en tarjetas de pago, el CUSIP es alfanumérico y de longitud fija, por eso encaja entre las utilidades de codificación de identificadores de valores y no entre los validadores de códigos de producto.
Modo compute frente a modo validate
Envíe un campo cusip que contenga solo caracteres permitidos tras eliminar espacios y guiones opcionales. El modo validate espera exactamente nueve caracteres, con el noveno un dígito del cero al nueve. Cadenas vacías, cusip ausente, longitud incorrecta para el modo elegido, noveno carácter no numérico en validate y valores de mode inválidos fallan antes de cualquier suma ponderada y no se facturan.
Las letras se aceptan sin distinguir mayúsculas y se normalizan a mayúsculas en la entrada ecoada, de modo que los lotes puedan pegar texto mixto desde hojas de cálculo. Prefiera compute cuando complete un cuerpo de un proveedor de datos que omita el dígito de control; prefiera validate cuando un usuario, un fichero de socio o un escáner envíe un CUSIP completo y necesite una puerta booleana antes de buscar el instrumento.
Dónde encajan los dígitos de control CUSIP en flujos reales
Los intermediarios y los equipos de operaciones del lado comprador ingieren ficheros de posiciones y operaciones de fin de día en los que un solo carácter transpuesto puede contabilizar riesgo sobre el bono o la acción equivocados. Validar cada CUSIP al importar y poner en cuarentena las filas con valid false evita la contaminación silenciosa del maestro de datos.
Los escritorios de agentes de transferencia y de acciones corporativas recalculan dígitos de control cuando ensamblan códigos de emisor y emisión desde feeds separados, usando el modo compute para que el código de nueve caracteres almacenado coincida con la convención del sector. Las pruebas de integración y los trabajos de calidad de datos recalculan el dígito de control esperado en cada fila de una exportación CSV y marcan las filas cuyo CUSIP completo almacenado ya no coincide, lo que detecta tanto ediciones humanas como errores de uno en los generadores.
No trate un control CUSIP válido como prueba de que el valor existe, es líquido o está autorizado para negociar: solo demuestra que la cadena de nueve caracteres está bien formada bajo este algoritmo, el mismo criterio de honestidad que aplica a cualquier suma de control.
Qué puede hacer con ella
Completar un cuerpo CUSIP de ocho caracteres
Cuando un feed o una hoja de cálculo aporte solo el cuerpo de ocho caracteres de emisor más emisión, llame al modo compute y almacene el cusip completo devuelto para que todos los sistemas posteriores reciban un identificador estándar de nueve caracteres.
Auditar exportaciones del maestro de valores
Valide por lotes cada columna CUSIP de una exportación de cartera, custodia o acciones corporativas y ponga en cuarentena las filas cuyo dígito de control final ya no coincida con el valor esperado recalculado.
Preguntas frecuentes
¿Qué es un dígito de control CUSIP?
Es el noveno carácter de un CUSIP, un dígito único 0–9 calculado a partir del cuerpo de ocho caracteres para que los errores de tecleo habituales fallen a menudo en una suma de control modular antes de usar el valor equivocado.
¿Qué caracteres están permitidos?
Dígitos 0–9, letras A–Z (sin distinguir mayúsculas) y, opcionalmente, * @ #. Se eliminan espacios y guiones.
¿Es gratuita la herramienta de dígito de control CUSIP?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Cómo se calcula el dígito de control CUSIP?
Cada uno de los ocho caracteres se convierte en un número: las cifras valen lo mismo y las letras de la A a la Z valen de diez en adelante. Se duplican los valores de las posiciones pares, se suman las cifras de cada resultado y el dígito es lo que falta para llegar a un múltiplo de diez.
¿Un CUSIP válido demuestra que el valor existe?
No. Que el dígito cuadre solo demuestra que los nueve caracteres están bien formados según la regla CUSIP. La herramienta no consulta ningún registro, así que no confirma que el título exista, cotice o esté autorizado.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/enc/cusip \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"cusip":"03783310"}'const res = await fetch("https://api.kit.forhosting.com/enc/cusip", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"cusip": "03783310"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/cusip",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"cusip": "03783310"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/cusip", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"cusip":"03783310"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"cusip":"03783310"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/cusip", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"cusip": "03783310"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.cusip",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Los caracteres no admitidos y las longitudes incorrectas fallan con un error invalid_input claro en lugar de corromperse en silencio. Ejecútela gratis en el navegador o llame a la API de KIT al precio publicado; ambos caminos usan la misma aritmética pura, sin consulta de red a un maestro de valores.
Cómo se calcula el dígito de control CUSIP
Esta herramienta aplica exactamente ese recorrido estándar; no inventa una variante propia y siempre nombra el algoritmo como cusip en el JSON para que los registros posteriores puedan anotar qué esquema protegió el campo.
Modo compute frente a modo validate
El modo compute es el predeterminado y exige exactamente ocho caracteres: el motor mapea y pondera el cuerpo, devuelve check_digit como cadena de un carácter y devuelve cusip como el identificador completo de nueve caracteres para que pueda almacenarlo o imprimirlo en una sola cadena. La respuesta indica valid true cuando el dígito final almacenado coincide con el expected_check_digit recalculado, e incluye siempre body sin el último carácter para que las interfaces destaquen lo tecleado frente a lo que espera el algoritmo. Como la ruta es parse puro, sin reloj, fuente aleatoria ni red, la misma entrada produce siempre el mismo JSON en la herramienta gratuita del navegador y en la API. A $0.002 por solicitud correcta puede proteger importaciones masivas de maestros de valores, formularios de alta y pantallas de entrada de órdenes sin negociar un nivel personalizado.
Dónde encajan los dígitos de control CUSIP en flujos reales
Los sistemas de cartera y de rendimiento que admiten entrada manual de valores pueden mostrar expected_check_digit junto a un campo fallido para que el personal corrija un error de tecleo en lugar de abrir un ticket de investigación. Los equipos de producto que construyen tickets de orden o listas de seguimiento pueden condicionar el envío al modo validate antes de llamar a una API de datos de mercado o de negociación que, de otro modo, rechazaría el símbolo con un error menos claro. En todo flujo el contrato es el mismo: solo caracteres permitidos, compute o validate, JSON estructurado comprobable con goldens, comportamiento idéntico gratis en el navegador o con saldo prepago de KIT, y fallo honesto cuando la entrada no es un cuerpo CUSIP o un código completo bien formados.
Casos de integración
Validar CUSIP tecleados o importados al entrar
Cuando un usuario o un fichero de socio envíe un CUSIP completo de nueve caracteres, llame al modo validate y bloquee la búsqueda si valid es false, mostrando expected_check_digit para ayudar a corregir un solo error de tecleo.
Preguntas técnicas
¿Cómo calculo un dígito de control CUSIP con esta API?
Haga POST con cusip igual al cuerpo de ocho caracteres y mode compute (u omita mode). La respuesta incluye check_digit y cusip (cuerpo más dígito de control).
¿Cómo valido un CUSIP completo de nueve caracteres?
Haga POST con la cadena completa de nueve caracteres y mode validate. La respuesta incluye valid, check_digit, expected_check_digit y body sin el último dígito.