Calculadora e validador do dígito verificador do NIF português
Esta calculadora do dígito verificador do NIF de Portugal aplica a soma de verificação padrão de módulo onze usada no número de identificação fiscal português.
Executar grátis
Informe os oito primeiros dígitos para calcular o nono ou envie todos os nove para verificar se o dígito fornecido confere com o cálculo. O resultado é determinístico e imediato, adequado para formulários, importações, rotinas contábeis e validação por API. Comprimentos incorretos, caracteres que não sejam dígitos e modos incompatíveis são informados com clareza, sem correção ou suposição silenciosa.
Escolha entre calcular e validar
Use o modo de cálculo quando você já tiver a base de oito dígitos de um NIF português e precisar do dígito verificador final. A resposta inclui o dígito calculado e o valor completo de nove dígitos, permitindo inseri-lo diretamente em uma validação posterior ou em um fluxo de testes. Use o modo de validação quando a origem já contiver os nove dígitos. A validação separa os oito primeiros do nono fornecido, calcula o valor esperado e informa se os dois conferem. Ela também retorna os dígitos fornecido e esperado, facilitando o diagnóstico de uma falha. Mantenha a entrada como string, e não como valor numérico. A string preserva cada caractere exatamente, inclusive um zero inicial, e impede que a formatação numérica de uma planilha ou linguagem de programação altere o identificador antes da avaliação. O modo padrão é validar, pois a conferência de um NIF completo é a tarefa mais comum, mas você deve definir o modo explicitamente quando um fluxo aceitar os dois formatos.
Como funciona o cálculo de módulo onze
O algoritmo processa os oito primeiros dígitos da esquerda para a direita, com pesos decrescentes de nove até dois. Ele multiplica o primeiro dígito por nove, o segundo por oito e prossegue até multiplicar o oitavo por dois. Os oito produtos são somados e o total é reduzido pelo módulo onze. Quando o resto é zero ou um, o dígito verificador é zero. Para qualquer outro resto, o dígito é onze menos esse resto. A validação faz exatamente o mesmo cálculo nas oito primeiras posições e compara o resultado com a nona. Esta capacidade não remove espaços, pontos, hífens, prefixos de país nem rótulos antes do cálculo. Esse comportamento rigoroso é proposital: uma limpeza automática pode fazer dados malformados parecerem confiáveis e esconder erros anteriores no mapeamento de campos. Envie apenas dígitos ASCII de zero a nove. O cálculo não usa rede, valor aleatório, relógio, banco de dados ou conversão sensível à localidade; portanto, entradas e modos idênticos sempre produzem a mesma saída JSON.
Interprete o resultado e os limites
Um resultado verdadeiro significa que o nono dígito é compatível com a soma de verificação de módulo onze derivada dos oito anteriores. Essa é uma verificação estrutural útil para erros de digitação, importações danificadas e colunas mapeadas incorretamente, mas não comprova que o número tenha sido emitido, continue ativo ou pertença a determinada pessoa ou organização. Essas questões exigem um cadastro autorizado ou um processo empresarial apropriado. Da mesma forma, a calculadora avalia deliberadamente a soma de verificação sem impor suposições sobre categorias codificadas no primeiro dígito. Isso mantém o escopo preciso e evita a rejeição de um número com soma válida apenas porque uma regra externa de atribuição mudou. Em um pipeline de dados, trate erros de entrada de modo diferente de um resultado falso: um erro indica tipo, comprimento, caracteres ou modo incorretos; falso indica que um valor bem formado foi verificado, mas seu dígito não conferiu. Cada solicitação de API custa US$ 0,002, e o mesmo núcleo determinístico pode ser executado no navegador.
Casos de uso
Confira um formulário fiscal antes do envio
Valide um NIF de nove dígitos assim que ele for informado e exiba uma mensagem específica quando o dígito verificador não conferir.
Audite cadastros importados de clientes
Execute a validação nos campos NIF após migrar um CSV ou sistema para identificar truncamentos, transposições e erros de mapeamento.
Gere dados de teste determinísticos
Calcule o nono dígito de uma base de oito ao preparar testes de integração para sistemas de cobrança, faturamento ou cadastro.
Perguntas frequentes
Qual entrada o modo de cálculo exige?
Exatamente oito dígitos em uma string. A resposta retorna o dígito verificador calculado e o NIF completo de nove dígitos.
Qual entrada o modo de validação exige?
Exatamente nove dígitos em uma string, incluindo o dígito verificador na posição final.
Uma soma válida comprova que o NIF foi emitido?
Não. Ela comprova apenas que o nono dígito fornecido confere com a soma calculada a partir dos oito primeiros.
Posso incluir espaços, pontuação ou prefixo do país?
Não. Envie apenas dígitos. Caracteres de formatação são rejeitados para que dados de origem malformados não sejam alterados silenciosamente.
Como o dígito verificador é calculado?
Os oito primeiros dígitos recebem pesos de nove a dois, são somados e reduzidos pelo módulo onze; resto zero ou um produz zero e, nos demais casos, o resto é subtraído de onze.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. Você também pode usar a execução no navegador para um cálculo local rápido.
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/nif-portugal \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"501964843"}'const res = await fetch("https://api.kit.forhosting.com/enc/nif-portugal", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "501964843"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/nif-portugal",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "501964843"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/nif-portugal", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"501964843"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"501964843"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/nif-portugal", 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": "501964843"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.nif_portugal",
"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. |