Dígito verificador JMBG
Os 12 dígitos 180198071000 recebem o dígito verificador 5, e o JMBG completo fica 1801980710005. Complete ou confira o número único de cidadão usado na Sérvia, Bósnia e Herzegovina, Montenegro e Macedônia do Norte antes que um erro crie um cadastro duplicado. 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
- 180198071000
- Modo de cálculo
- Compute
- Entrada
- 180198071000
- Dia
- 18
- Mês
- 01
O JMBG (Jedinstveni matični broj građana), frequentemente traduzido como número único mestre de cidadão, é o identificador pessoal de treze dígitos introduzido na antiga República Socialista Federativa da Iugoslávia e ainda usado —às vezes sob nomes relacionados como EMBG— nos estados sucessores para registro civil, tributação, saúde, bancos e emprego. O número agrupa a data de nascimento como dia-mês-ano (sete dígitos: DDMMYYY com ano de três cifras), um código de região de dois dígitos do local de registro, um serial de três dígitos dentro daquele dia e região, e um único dígito verificador final. Esse dígito verificador não é arbitrário: é produzido por uma soma ponderada fixa módulo onze sobre os primeiros doze dígitos, de modo que um dígito digitado errado ou um par trocado costuma ser rejeitado antes de o identificador ser armazenado ou comparado. Esta capacidade implementa apenas essa soma de verificação. O modo compute aceita exatamente doze dígitos —data, região e série sem o verificador— e devolve o dígito mod-11 mais a string completa de treze dígitos. O modo validate aceita treze dígitos (espaços ou hífens opcionais) e informa se o dígito final coincide com o valor esperado recalculado.
Como o dígito verificador JMBG da antiga Iugoslávia é calculado
Pela especificação padrão do JMBG compartilhada pelas antigas repúblicas iugoslavas, o dígito verificador é um valor ponderado módulo onze calculado sobre os primeiros doze dígitos do número. Esses doze dígitos são o bloco de data de sete dígitos DDMMYYY (dia, mês e os três últimos dígitos do ano de nascimento), o código de região de dois dígitos e o serial de três dígitos atribuído naquele dia e região.
Cada uma das doze posições é multiplicada por um peso fixo da sequência repetida sete, seis, cinco, quatro, três, dois —assim os pesos são exatamente 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 da esquerda para a direita. Os doze produtos são somados; toma-se o resto dessa soma módulo onze; o verificador provisório é onze menos esse resto. Se o valor provisório for dez ou onze, o dígito verificador publicado é zero; caso contrário, é o próprio valor provisório.
A validação recalcula o dígito esperado a partir da carga de doze dígitos e o compara com o décimo terceiro dígito do número enviado. Um exemplo educacional conhecido é a base 180198071000 (data de nascimento 18 de janeiro de 1980, região 71, serial 000), que produz o dígito verificador 5 e o JMBG completo 1801980710005. Outro exemplo comum é 010100650000 com dígito verificador 6.
O algoritmo é determinístico e local: sem chamada a registro populacional, sem relógio e sem aleatoriedade. Em relação a ferramentas genéricas mod-11 ou de personnummer sueco, a intenção de busca aqui é estreita: quem precisa de uma calculadora de dígito verificador JMBG para bases data-região-série ou de um verificador do número único de cidadão iugoslavo de treze dígitos, não de uma ferramenta de cartão de pagamento ou de número pessoal nórdico.
Onde dígitos verificadores JMBG se encaixam em fluxos balcânicos e da diáspora
Bancos e fintechs que operam na Sérvia, Bósnia e Herzegovina, Montenegro, Macedônia do Norte e mercados relacionados validam valores JMBG ou EMBG de treze dígitos na abertura de conta para que uma única transposição não crie um cliente fantasma e um registro KYC rejeitado. Jobs ETL que carregam arquivos mestres de clientes ou funcionários percorrem cada coluna JMBG em um feed CSV ou XML, chamam o modo validate e colocam em quarentena linhas onde valid é false —capturando tanto edições humanas quanto bugs de um em geradores.
Sistemas municipais e escolares costumam aceitar formas com hífen e compactas; remover espaços e hífens antes da checagem de dígitos mantém o contrato simples sem inventar um segundo algoritmo. Aplicações da diáspora —formulários de visto, apps de remessa e portais de dupla cidadania— frequentemente recebem valores JMBG digitados por pessoas que emigraram há décadas; um portão leve de checksum costuma ser a primeira linha de defesa antes de qualquer chamada cara a um registro.
Não trate um JMBG que passa a verificação como prova de que o titular está vivo em um registro populacional, tem documento de identidade nacional válido ou está autorizado a um serviço; só prova que o dígito mod-11 é consistente com a data, a região e o serial sob os pesos oficiais da antiga Iugoslávia.
Casos de uso
Auditar colunas JMBG em dados mestres
Valide em lote cada JMBG ou EMBG em um CSV de CRM, EHR ou folha e coloque em quarentena linhas cujo dígito verificador já não coincida com o valor esperado recalculado.
Perguntas frequentes
O que é um dígito verificador JMBG?
É o décimo terceiro dígito do número único de cidadão da antiga Iugoslávia, calculado com um algoritmo ponderado mod-11 sobre a data de sete dígitos, a região de dois e o serial de três, para que erros de digitação e de leitura costumem ser detectados antes de o número ser armazenado.
O que acontece com comprimento errado, letras ou pontuação estranha?
Tarefas de validação com falha não são cobradas.
A ferramenta de dígito verificador JMBG é gratuita?
A ferramenta do navegador é gratuita e roda localmente.
O que significam os 13 dígitos de um JMBG?
Os sete primeiros são a data de nascimento: dia, mês e os três últimos algarismos do ano. Depois vêm dois da região de registro, três de um número de série e, por fim, o dígito verificador. Em 1801980710005, 18 é o dia, 01 o mês e 71 a região.
Um JMBG válido prova que a pessoa existe?
Não. Um dígito verificador correto só mostra que os 13 dígitos são coerentes. Nenhum cadastro de população é consultado, então isso não diz se a pessoa está viva, registrada ou tem direito a algum serviço.
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/jmbg \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"180198071000"}'const res = await fetch("https://api.kit.forhosting.com/enc/jmbg", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "180198071000"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/jmbg",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "180198071000"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/jmbg", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"180198071000"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"180198071000"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/jmbg", 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": "180198071000"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.jmbg",
"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
Corpos não numéricos e comprimentos incorretos falham com invalid_input em vez de um recorte silencioso. A mesma aritmética pura roda grátis no navegador e no preço publicado da API, sem consulta a registro e sem afirmar que um checksum válido signifique que a pessoa está viva, registrada ou autorizada a qualquer serviço.
Contrato de entrada, modos e comportamento de erro
Envie um campo number que contenha o corpo do JMBG. Comprimento errado é um erro explícito que nomeia o modo e o comprimento enviado —doze para compute, treze para validate— para que formulários cliente mostrem uma mensagem precisa sem adivinhar. Strings vazias, number ausente e valores de mode inválidos falham antes de qualquer soma ponderada e não são cobrados. Uma string bem formada que simplesmente tem o dígito verificador errado devolve valid false sem lançar erro. Espaços e hífens são removidos para que formas comuns como 1801980-71-000-5 ou grupos espaçados sejam aceitas após a normalização; outra pontuação e letras são rejeitadas como entrada não numérica com invalid_input, para que um valor silenciosamente recortado nunca chegue ao armazenamento. O modo compute é o padrão: o motor exige exatamente doze dígitos, devolve check_digit como string de um caractere, devolve with_check como o JMBG completo de treze dígitos que você pode imprimir ou persistir, e também devolve day, month, year3, date (DDMMYYY), region e serial para trilhas de auditoria. O modo validate aceita exatamente treze dígitos; a resposta informa valid true quando o dígito final coincide com expected_check_digit recalculado, e sempre inclui payload (os doze dígitos ponderados), check_digit, expected_check_digit, os mesmos campos estruturais, length e o rótulo de algoritmo jmbg-mod11 com a string de pesos. Aliases como jmbg, embg, digits e code são aceitos para o mesmo campo de carga, de modo que integrações que já usam nomes regionais não precisem renomear. Como o caminho é parse puro sem relógio, fonte aleatória ou rede, o mesmo corpo JSON sempre produz o mesmo resultado JSON na ferramenta gratuita do navegador e na API a US$ 0,002 por solicitação bem-sucedida.
Onde dígitos verificadores JMBG se encaixam em fluxos balcânicos e da diáspora
Portais de saúde e sistemas de farmácia recalculam expected_check_digit quando uma clínica lê um número por telefone ou cola de um cartão digitalizado, capturando erros de digitação antes de arquivar um prontuário ou uma receita. Empregadores e fornecedores de folha completam bases de doze dígitos em sandboxes com o modo compute e depois armazenam with_check em funcionários de teste que devem parecer identificadores de produção.
Casos de integração
Completar uma base JMBG de 12 dígitos para fixtures de teste
Chame o modo compute com DDMMYYY mais região e serial, armazene with_check e use o JMBG de treze dígitos em registros de teste de KYC, folha ou saúde em sandbox.
Validar números únicos de cidadão digitados ou importados
Quando um formulário, arquivo bancário ou feed de RH enviar treze dígitos, chame o modo validate e bloqueie a inscrição se valid for false, mostrando expected_check_digit para corrigir um único erro de digitação.
Perguntas técnicas
Como calcular um dígito verificador JMBG com esta API?
Faça POST com number em exatamente doze dígitos (DDMMYYY mais região e serial) e mode compute (ou omita mode). A resposta inclui check_digit e with_check (o JMBG completo de treze dígitos).
Como validar um JMBG completo de treze dígitos?
Faça POST com a string de dígitos (espaços ou hífens opcionais) e mode validate. A resposta inclui valid, check_digit, expected_check_digit e payload (os doze dígitos ponderados).