Dígito verificador CNP romeno
Digite 180010122114 e receba o dígito verificador 4, então o CNP completo é 1800101221144; ou cole os treze dígitos para ver se o último segue a ponderação oficial. Útil em RH, folha de pagamento e cadastro de clientes. 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
- Cnp
- 180010122114
- Modo de cálculo
- Compute
- Entrada
- 180010122114
- Dígito verificador
- 4
- Com dígito verificador
- 1800101221144
- Formatado
- 1-800101-22-114-4
O código numérico pessoal romeno (CNP, Cod Numeric Personal) é um identificador de treze dígitos usado em registros civis, contratos de trabalho, declarações fiscais, KYC bancário e formulários de serviços públicos na Romênia. O último dígito é um dígito verificador derivado de uma ponderação fixa dos primeiros doze dígitos segundo a regra modular oficial do layout CNP. Um único dígito digitado errado ou um par trocado costuma quebrar essa soma de controle, de modo que validar o CNP antes de gravar um registro de RH, abrir um perfil de cliente ou aceitar um arquivo de parceiro detecta muitos erros de digitação cedo. Esta capacidade calcula o dígito verificador CNP romeno a partir de uma carga de doze dígitos (com ou sem espaços e hífens comuns), ou valida um número completo de treze dígitos que já inclui o dígito final, e reporta entrada inválida em vez de inventar um dígito em silêncio.
O que é o dígito verificador CNP romeno e como funcionam os pesos
Um CNP codifica sexo e século, data de nascimento, condado de emissão e um número de série em um layout fixo de treze dígitos usado por sistemas administrativos, fiscais e comerciais romenos. Formulários às vezes inserem espaços ou hífens para legibilidade, mas o valor subjacente são sempre treze dígitos decimais. Os primeiros doze formam o corpo; o décimo terceiro é determinado por completo por um algoritmo de verificação público e não é escolhido livremente.
A ponderação oficial multiplica esses doze dígitos, da esquerda para a direita, pela sequência constante dois, sete, nove, um, quatro, seis, três, cinco, oito, dois, sete e nove — a string de pesos 279146358279. Os produtos são somados e o resto dessa soma módulo onze é o dígito verificador candidato. Quando o resto está entre zero e nove, esse valor é o dígito verificador e completa uma string CNP bem formada.
Quando o resto é dez, o dígito verificador é definido como um, não dez, de modo que cada corpo de doze dígitos mapeia para exatamente um dígito final de zero a nove. Em comparação com o Luhn mod-dez de cartões de pagamento, o esquema CNP usa um vetor de pesos fixo da esquerda para a direita e módulo onze com regra especial para resto dez, portanto você não deve reutilizar um validador Luhn em campos de identificação pessoal romena.
Em comparação com os pesos do NIP polonês ou os dois dígitos mod-onze do fødselsnummer norueguês, a regra CNP romena é específica deste layout de treze dígitos e desta string de doze posições. Saber qual esquema você precisa evita falsa confiança quando uma utilidade genérica de dígito verificador aceita uma string que não é um CNP bem formado. Esta ferramenta aplica a ponderação padrão sobre dígitos puros após remover espaços e hífens opcionais.
Não consulta portais governamentais, não prova que uma pessoa existe, não decodifica gênero ou condado nem atribui status legal — apenas que a string de dígitos é consistente com o algoritmo de verificação publicado.
Onde os dígitos verificadores CNP se encaixam em RH, bancos e administração
Sistemas de recursos humanos e folha de pagamento armazenam o CNP do empregado em cada documento legal de emprego romeno; um único dígito digitado errado no onboarding pode falhar envios posteriores de seguridade social ou fiscais. Fluxos KYC de bancos e fintech que coletam um código numérico pessoal romeno podem recomputar o dígito verificador sem chamar um registro externo, filtrando ruído OCR e capturas parciais cedo.
Equipes de produto que já expõem ferramentas gerais Luhn ou ISO 7064 ainda devem usar esta capacidade específica de CNP em campos de identificação pessoal romena para que pesos, limites de comprimento e o tratamento do resto dez correspondam ao domínio. Páginas educativas e de SEO que ranqueiam frases como dígito verificador CNP romeno ou validador CNP Romênia precisam de uma ferramenta gratuita ao vivo cujo caminho no navegador coincida com a automação para que capturas de tutoriais permaneçam precisas.
Não trate um dígito verificador CNP correto como prova de que a pessoa está corretamente identificada, viva, autorizada ou presente em qualquer registro oficial — só prova que a string de dígitos é consistente com o algoritmo de verificação CNP romeno.
Casos de uso
Auditar colunas CNP em arquivos de parceiros e folha
Valide em lote cada CNP de uma importação CSV e isole as linhas cujo dígito verificador não coincida mais com o valor esperado recomputado.
Perguntas frequentes
Como o dígito verificador do CNP romeno é calculado?
Multiplique os primeiros doze dígitos pelos pesos 2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7 e 9 (a string constante 279146358279), some os produtos e tome o resto módulo 11. Se o resto for 0–9 esse é o dígito verificador; se for 10 o dígito verificador é 1.
Qual é a diferença entre os modos compute e validate?
Compute recebe doze dígitos e retorna o dígito verificador e o CNP completo de treze dígitos. Validate recebe treze dígitos incluindo o final e indica se coincide com o dígito verificador recomputado.
Espaços e hífens são permitidos?
Sim. Separadores comuns são removidos antes da análise.
O que acontece se o dígito verificador estiver errado?
No modo validate a resposta ainda inclui o dígito esperado e valid é false.
O que acontece quando o resto da soma ponderada é 10?
Nesse caso o dígito verificador é 1, e não 10. Essa regra especial garante que cada corpo de doze dígitos tenha exatamente um dígito final entre 0 e 9.
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/cnp-romania \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"cnp":"180010122114"}'const res = await fetch("https://api.kit.forhosting.com/enc/cnp-romania", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"cnp": "180010122114"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/cnp-romania",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"cnp": "180010122114"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/cnp-romania", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"cnp":"180010122114"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"cnp":"180010122114"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/cnp-romania", 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
{
"cnp": "180010122114"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.cnp_romania",
"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
Use-a grátis no navegador ou chame a API do KIT pelo preço publicado; ambos os caminhos executam a mesma aritmética determinística sem consulta de rede e sem registro de pessoas reais.
Como calcular um dígito verificador ou validar um CNP completo
Envie um campo cnp com dígitos de zero a nove, opcionalmente separados por espaços ou hífens. O modo validate espera um número completo de treze dígitos incluindo o dígito verificador final (por exemplo 1800101221144 ou uma forma com hífens de treze dígitos). Strings vazias, cnp ausente, valores de mode inválidos e comprimentos errados falham antes de qualquer soma ponderada e não são faturados. Prefira compute quando montar um CNP a partir de um corpo de doze dígitos conhecido; prefira validate quando um usuário, arquivo de parceiro ou etiqueta digitalizada fornecer um número completo e você precisar de um filtro booleano antes de consulta a registro ou dados mestres. Letras, outra pontuação, hífens duplos ou hífens no início ou no fim são rejeitados como entrada malformada com invalid_input para que você nunca aceite um valor limpo em silêncio. O modo compute é o padrão: forneça exatamente doze dígitos sem o dígito verificador (por exemplo 180010122114) e o motor retorna check_digit como string de um caractere, with_check como a string completa de treze dígitos incluindo esse dígito, e formatted no agrupamento legível S-YYMMDD-JJ-NNN-C. A resposta reporta valid true quando o dígito recomputado coincide com o último, e sempre inclui check_digit, expected_check_digit, payload sem o último dígito, weighted_sum_mod11 e formatted para exibição consistente. Como o caminho é parse puro, sem relógio, fonte aleatória ou 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 filtrar importações em massa de RH, formulários de onboarding e jobs ETL sem negociar um nível personalizado.
Onde os dígitos verificadores CNP se encaixam em RH, bancos e administração
O modo validate na entrada bloqueia o salvamento quando valid é false e pode mostrar expected_check_digit para que o operador corrija o formulário antes de gravar o registro. Portais de seguros, saúde e serviços públicos recebem CNPs de formulários e arquivos de parceiros onde um dígito final errado rejeitaria um lote inteiro; um oráculo determinístico que retorna valid e with_check permite marcar linhas antes da produção. Em todo fluxo o contrato é o mesmo: dígitos com espaços ou hífens opcionais, compute ou validate, JSON estruturado que você pode testar com goldens, comportamento idêntico grátis no navegador ou via saldo KIT pré-pago, e falha honesta quando a entrada é malformada.
Casos de integração
Filtrar campos CNP em formulários de RH e onboarding
Quando um usuário envia um CNP romeno completo, chame o modo validate e bloqueie o salvamento se valid for false, mostrando expected_check_digit para ajudar a corrigir um único erro de digitação antes de gravar o registro do empregado.
Calcular o dígito final ao completar identificadores
A partir de um corpo de doze dígitos, chame o modo compute e armazene with_check ou formatted para que cada nova string CNP carregue o dígito final correto antes de imprimir, exportar ou gerar documentos.
Perguntas técnicas
Quanto custa a calculadora de dígito verificador CNP romeno?
A ferramenta do navegador é gratuita. Solicitações à API usam saldo KIT pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é faturada.