Dígito verificador CUSIP
Digite os oito primeiros caracteres de um CUSIP e receba o nono: 03783310 ganha o dígito verificador 0 e vira 037833100. Se você já tem o código completo de nove caracteres, confira o último dígito antes de registrar uma operação. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Número CUSIP
- 03783310
- Modo de cálculo
- Compute
- Entrada
- 03783310
- Dígito verificador
- 0
- Número CUSIP
- 037833100
Os identificadores CUSIP rotulam ações, títulos e outros valores mobiliários da América do Norte para que sistemas de liquidação, ordens e arquivos de carteira concordem no mesmo código de nove caracteres. Os primeiros oito identificam emissor e emissão; o nono é um dígito verificador calculado a partir do corpo, de modo que um erro de digitação ou uma transposição falhe com frequência antes de registrar uma operação no instrumento errado. Esta capacidade implementa esse algoritmo padrão de dígito verificador: mapeia dígitos e letras para valores, dobra posições alternadas, soma os dígitos decimais e devolve o dígito que torna o total múltiplo de dez. Use o modo compute quando dispuser apenas do corpo de oito caracteres e precisar do dígito final, ou o modo validate quando receber um CUSIP completo de nove e precisar de um booleano mais o dígito esperado para mensagens de erro.
Como o dígito verificador CUSIP é calculado
Um CUSIP tem nove caracteres no layout familiar estilo ANSI X9.6: seis para o emissor, dois para a emissão e um dígito verificador final. Cada caractere do corpo mapeia para um número: os dígitos de zero a nove permanecem como estão, as letras de A a Z tornam-se de dez a trinta e cinco, e os símbolos especiais asterisco, arroba e cerquilha valem trinta e seis, trinta e sete e trinta e oito quando aparecem.
Percorrendo os oito caracteres do corpo da esquerda para a direita, os valores das posições segunda, quarta, sexta e oitava são dobrados. Cada número resultante é reduzido somando seus dígitos decimais — por exemplo, quatorze vira cinco — para que valores grandes de letras não dominem o total. Essas somas de dígitos são adicionadas.
O dígito verificador é dez menos o total módulo dez, e esse resultado novamente módulo dez, o que produz um único dígito de zero a nove. Acrescentar esse dígito gera um CUSIP completo de nove caracteres cuja soma ponderada de dígitos é congruente com zero módulo dez.
Em comparação com dígitos verificadores de códigos de barras de varejo como EAN-13 ou com Luhn em cartões de pagamento, o CUSIP é alfanumérico e de comprimento fixo, por isso pertence às utilidades de codificação de identificadores de valores e não aos validadores de código de produto.
Modo compute versus modo validate
Envie um campo cusip que contenha apenas caracteres permitidos após a remoção opcional de espaços e hífens. O modo validate espera exatamente nove caracteres, com o nono sendo um dígito de zero a nove. Strings vazias, cusip ausente, comprimento errado para o modo escolhido, nono caractere não numérico em validate e valores de mode inválidos falham antes de qualquer soma ponderada e não são cobrados.
As letras são aceitas sem distinção de maiúsculas e normalizadas para maiúsculas na entrada ecoada, para que lotes possam colar texto misto de planilhas. Prefira compute ao completar um corpo de um fornecedor de dados que omite o dígito verificador; prefira validate quando um usuário, um arquivo de parceiro ou um scanner enviar um CUSIP completo e você precisar de um portão booleano antes de consultar o instrumento.
Onde os dígitos verificadores CUSIP se encaixam em fluxos reais
Corretoras e equipes de operações do lado comprador ingerem arquivos de posições e negociações de fim de dia em que um único caractere transposto pode contabilizar risco no título ou na ação errados. Validar cada CUSIP na importação e colocar em quarentena as linhas com valid false evita a poluição silenciosa do cadastro mestre.
Mesas de agente de transferência e de eventos corporativos recalculam dígitos verificadores ao montar códigos de emissor e emissão a partir de feeds separados, usando o modo compute para que o código de nove caracteres armazenado siga a convenção do setor. Testes de integração e jobs de qualidade de dados recalculam o dígito verificador esperado em cada linha de uma exportação CSV e marcam linhas cujo CUSIP completo armazenado não coincide mais, o que captura edições humanas e bugs de um a mais em geradores.
Não trate um controle CUSIP válido como prova de que o valor existe, é líquido ou está autorizado para negociação — apenas prova que a string de nove caracteres está bem formada sob este algoritmo, o mesmo critério de honestidade que se aplica a qualquer checksum.
Casos de uso
Completar um corpo CUSIP de oito caracteres
Quando um feed ou planilha fornecer apenas o corpo de oito caracteres de emissor mais emissão, chame o modo compute e armazene o cusip completo devolvido para que todo sistema posterior receba um identificador padrão de nove caracteres.
Auditar exportações do mestre de valores
Valide em lote cada coluna CUSIP de uma exportação de carteira, custódia ou eventos corporativos e coloque em quarentena as linhas cujo dígito verificador final não coincida mais com o valor esperado recalculado.
Perguntas frequentes
O que é um dígito verificador CUSIP?
É o nono caractere de um CUSIP, um dígito único 0–9 calculado a partir do corpo de oito caracteres para que erros de digitação comuns falhem com frequência em um checksum modular antes de usar o valor errado.
Quais caracteres são permitidos?
Dígitos 0–9, letras A–Z (sem distinção de maiúsculas) e, opcionalmente, * @ #. Espaços e hífens são removidos.
A ferramenta de dígito verificador CUSIP é gratuita?
A ferramenta do navegador é gratuita e roda localmente.
Como o dígito verificador CUSIP é calculado?
Cada um dos oito caracteres vira um número: os algarismos valem o mesmo e as letras de A a Z valem de dez para cima. Os valores das posições pares são dobrados, somam-se os algarismos de cada resultado e o dígito é o que falta para chegar a um múltiplo de dez.
Um CUSIP válido prova que o título existe?
Não. Um dígito que confere só mostra que os nove caracteres estão bem formados pela regra CUSIP. A ferramenta não consulta nenhum cadastro, então não confirma que o título exista, seja negociado ou esteja autorizado.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"cusip": "03783310"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.cusip",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Caracteres não CUSIP e comprimentos incorretos falham com um erro invalid_input claro em vez de corrupção silenciosa. Execute grátis no navegador ou chame a API do KIT ao preço publicado; ambos os caminhos usam a mesma aritmética pura, sem consulta de rede a um cadastro mestre de valores.
Como o dígito verificador CUSIP é calculado
Esta ferramenta aplica exatamente esse percurso padrão; não inventa uma variante própria e sempre nomeia o algoritmo como cusip no JSON para que os logs posteriores registrem qual esquema protegeu o campo.
Modo compute versus modo validate
O modo compute é o padrão e exige exatamente oito caracteres: o motor mapeia e pondera o corpo, devolve check_digit como string de um caractere e devolve cusip como o identificador completo de nove caracteres para você armazenar ou imprimir em uma única string. A resposta indica valid true quando o dígito final armazenado coincide com o expected_check_digit recalculado, e sempre inclui body sem o último caractere para que as interfaces destaquem o que foi digitado versus o que o algoritmo espera. Como o caminho é parse puro, sem relógio, fonte aleatória nem rede, a mesma entrada sempre produz o mesmo JSON na ferramenta gratuita do navegador e na API. A US$ 0,002 por solicitação bem-sucedida você pode proteger importações em massa de mestres de valores, formulários de onboarding e telas de entrada de ordens sem negociar um nível personalizado.
Onde os dígitos verificadores CUSIP se encaixam em fluxos reais
Sistemas de carteira e de desempenho que aceitam entrada manual de valores podem mostrar expected_check_digit ao lado de um campo com falha para que a equipe corrija um erro de digitação em vez de abrir um ticket de pesquisa. Equipes de produto que constroem tickets de ordem ou watchlists podem condicionar o envio ao modo validate antes de chamar uma API de dados de mercado ou de negociação que, de outro modo, rejeitaria o símbolo com um erro menos claro. Em todo fluxo o contrato é o mesmo: apenas caracteres permitidos, compute ou validate, JSON estruturado testável com goldens, comportamento idêntico grátis no navegador ou via saldo pré-pago do KIT, e falha honesta quando a entrada não é um corpo CUSIP ou um código completo bem formados.
Casos de integração
Validar CUSIPs digitados ou importados na entrada
Quando um usuário ou arquivo de parceiro enviar um CUSIP completo de nove caracteres, chame o modo validate e bloqueie a consulta se valid for false, mostrando expected_check_digit para ajudar a corrigir um único erro de digitação.
Perguntas técnicas
Como calculo um dígito verificador CUSIP com esta API?
Faça POST com cusip igual ao corpo de oito caracteres e mode compute (ou omita mode). A resposta inclui check_digit e cusip (corpo mais dígito verificador).
Como valido um CUSIP completo de nove caracteres?
Faça POST com a string completa de nove caracteres e mode validate. A resposta inclui valid, check_digit, expected_check_digit e body sem o último dígito.