Dígito verificador SIN Canadá
A base 04645428 recebe o dígito verificador 6, então o SIN completo é 046454286. Digite oito dígitos para calcular o dígito Luhn ou nove para validar um número completo, e pegue erros de digitação antes que cheguem a um formulário fiscal ou de folha. 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
- 04645428
- Modo de cálculo
- Compute
- Entrada
- 04645428
- Dígito verificador
- 6
- Com dígito verificador
- 046454286
O Social Insurance Number canadense (SIN) é um identificador de nove dígitos usado em declarações fiscais, emprego, benefícios e muitos sistemas governamentais e de folha de pagamento no Canadá. Os oito primeiros dígitos formam a base emitida à pessoa; o nono é um dígito verificador do algoritmo de Luhn para detectar erros de um dígito e a maioria das trocas antes de armazenar ou transmitir o número. Esta capacidade implementa apenas essa regra oficial Luhn: o modo compute aceita exatamente oito dígitos base e devolve o dígito verificador mais o SIN completo de nove; o modo validate aceita um SIN completo de nove e indica se o dígito final coincide com o valor esperado recalculado.
Como se calcula o dígito verificador Luhn do SIN canadense
Segundo a regra no estilo Service Canada para Social Insurance Numbers, um SIN tem sempre nove dígitos decimais. As posições um a oito formam o identificador base; a posição nove é o dígito verificador. Para calculá-lo, tome a base de oito dígitos e aplique o algoritmo clássico double-add-double de Luhn a partir da direita dessa base: dobre cada segundo dígito começando pelo dígito base mais à direita, porque depois de acrescentar o verificador esse dígito base fica na posição dois a partir da direita da sequência completa de nove.
Quando o dobro de um dígito é maior que nove, subtraia nove (de forma equivalente, some as dezenas e as unidades do produto). Some cada valor ponderado; o dígito verificador é dez menos essa soma módulo dez, módulo dez de novo, para que a sequência completa de nove incluindo o verificador tenha total Luhn divisível por dez. A validação recalcula o dígito esperado a partir dos oito primeiros caracteres e o compara com o nono dígito do SIN enviado.
O algoritmo é determinístico e local: sem chamada a registro governamental, sem relógio e sem aleatoriedade. Esta ferramenta não resolve SIN a nomes, não prova que um número esteja atualmente atribuído e não contata Service Canada nem a CRA: apenas prova que a cadeia de dígitos está bem formada segundo a regra Luhn dos Social Insurance Numbers canadenses.
Em relação a ferramentas Luhn genéricas de cartão, NPI ou IMEI, a intenção de busca aqui é estreita: quem precisa de uma calculadora de dígito verificador do SIN canadense para bases de oito dígitos ou de um verificador de Social Insurance Number de nove, não de uma ferramenta de pagamento, saúde ou dispositivo.
Onde os dígitos verificadores do SIN canadense se encaixam em fluxos reais
Fornecedores de folha e HRIS recebem bases internas de oito dígitos em sandboxes de onboarding e devem acrescentar o dígito verificador Luhn oficial antes de um SIN aparecer em recibos fiscais, formulários de depósito direto ou registros de funcionários. Software fiscal e administradores de benefícios validam SIN de nove dígitos na entrada para que uma única transposição não crie um funcionário fantasma nem um envio T4 ou ROE rejeitado.
Jobs ETL que carregam arquivos mestres de funcionários percorrem cada coluna SIN em um CSV ou feed de RH, chamam o modo validate e colocam em quarentena as linhas em que valid é false, capturando tanto edições humanas quanto bugs de geradores.
Não trate um SIN que passa a verificação como prova de que o número está atualmente atribuído por Service Canada, de que o titular é elegível a um benefício ou de que a identidade foi verificada; apenas prova que o dígito Luhn é coerente com a base sob os pesos usados para Social Insurance Numbers canadenses. Trate SIN reais como informação pessoal sensível: criptografe em repouso, limite o acesso e nunca registre números completos na telemetria da aplicação.
Casos de uso
Auditar colunas SIN em dados mestres de funcionários
Valide em lote cada SIN de nove dígitos em um CSV de folha, benefícios ou impostos e coloque em quarentena as linhas cujo dígito verificador já não coincida com o valor esperado recalculado.
Perguntas frequentes
O que é o dígito verificador de um SIN canadense?
É o nono dígito de um Social Insurance Number canadense, calculado com o algoritmo de Luhn sobre os oito primeiros, para que erros de digitação e de leitura costumem ser detectados antes de armazenar ou declarar o número.
O que acontece com comprimento errado, letras ou hífens?
Tarefas de validação com falha não são cobradas.
A ferramenta de dígito verificador do SIN canadense é gratuita?
A ferramenta do navegador é gratuita e roda localmente.
Como se calcula o dígito verificador do SIN?
Começando pelo último dígito da base, dobre um a cada dois e subtraia 9 de qualquer resultado maior que 9. Some todos os valores; o dígito verificador é o que leva o total a um múltiplo de dez. Para 04645428 ele é 6.
Como valido um SIN completo de nove dígitos?
Escolha a validação e digite os nove dígitos. A ferramenta recalcula o dígito verificador a partir dos oito primeiros, compara com o último e informa se batem, mostrando também o dígito esperado.
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/sin-canada \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"04645428"}'const res = await fetch("https://api.kit.forhosting.com/enc/sin-canada", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "04645428"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/sin-canada",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "04645428"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/sin-canada", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"04645428"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"04645428"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/sin-canada", 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
{
"number": "04645428"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.sin_canada",
"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
Entrada não numérica e comprimentos incorretos falham com invalid_input em vez de um recorte silencioso, para que voce nunca persista um identificador pela metade. A mesma aritmética pura roda grátis no navegador e ao preço publicado da API, sem consulta de rede a registros governamentais e sem afirmar que um checksum válido signifique que o SIN esteja ativo, emitido ou livre de fraude.
Contrato de entrada, modos e comportamento de erro
Envie um campo number que contenha apenas caracteres de zero a nove. Comprimento incorreto é um erro explícito que nomeia o modo e o comprimento enviado —oito para compute, nove para validate— para que formulários cliente possam mostrar «precisam-se oito dígitos» sem adivinhar. Strings vazias, number ausente e valores de mode inválidos falham antes de qualquer soma Luhn e não são cobrados. Tarefas de validação que rejeitam forma incorreta não são cobradas; uma string bem formada de nove dígitos que simplesmente tem o dígito verificador errado devolve valid false sem lançar erro. Nunca use esta ferramenta para inventar SIN reais de pessoas vivas: use apenas bases sintéticas ou autorizadas em desenvolvimento, e armazene SIN reais sob as políticas de privacidade e segurança da sua organização. Espaços, hífens, letras e pontos decimais são rejeitados como entrada não numérica com invalid_input para que um valor recortado em silêncio nunca chegue ao armazenamento. O modo validate exige exatamente nove dígitos; a resposta indica valid true quando o dígito final coincide com o expected_check_digit recalculado, e sempre inclui payload (os oito primeiros dígitos), check_digit, expected_check_digit e length nove. Alias como digits, sin e code são aceitos para o mesmo campo de carga, para que integrações que já falam «sin» não precisem renomear. Como o caminho é parse puro sem relógio, fonte aleatória nem rede, o mesmo corpo JSON produz sempre o mesmo resultado JSON na ferramenta gratuita do navegador e na API a US$ 0,002 por solicitação bem-sucedida.
Onde os dígitos verificadores do SIN canadense se encaixam em fluxos reais
Equipes de benefícios e de seguro-emprego recalculam expected_check_digit quando um cliente lê um número ao telefone ou cola de um PDF, capturando erros de digitação antes de enviar um arquivo de pedido. Em todo fluxo o contrato é o mesmo: só dígitos, comprimento fixo por modo, JSON estruturado que voce pode testar com goldens, comportamento idêntico no navegador gratuito e na API pré-paga, e invalid_input honesto quando a string não é uma sequência pura de dígitos do comprimento certo.
Casos de integração
Completar uma base SIN de 8 dígitos para fixtures de folha
Chame o modo compute com a base de oito dígitos, armazene with_check e use o SIN de nove em registros de folha de teste, recibos fiscais ou funcionários sandbox.
Validar SIN digitados ou importados na entrada
Quando um formulário, arquivo HRIS ou feed de parceiro enviar nove dígitos, chame o modo validate e bloqueie o cadastro se valid for false, mostrando expected_check_digit para corrigir um erro de um só dígito.
Perguntas técnicas
Como calculo o dígito verificador de um SIN com esta API?
Faça POST com number em exatamente oito dígitos e mode compute (ou omita mode). A resposta inclui check_digit e with_check (o SIN completo de nove dígitos).
Como valido um SIN completo de nove dígitos?
Faça POST com a string de nove dígitos e mode validate. A resposta inclui valid, check_digit, expected_check_digit e payload (os dígitos sem o último).