Dígito de control JMBG
Los 12 dígitos 180198071000 llevan el dígito de control 5, así que el JMBG completo es 1801980710005. Complete o revise el número único de ciudadano usado en Serbia, Bosnia y Herzegovina, Montenegro y Macedonia del Norte antes de que un error cree un registro duplicado. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Número
- 180198071000
- Modo de cálculo
- Compute
- Entrada
- 180198071000
- Día
- 18
- Mes
- 01
El JMBG (Jedinstveni matični broj građana), a menudo traducido como número único de ciudadano maestro, es el identificador personal de trece dígitos introducido en la antigua República Federativa Socialista de Yugoslavia y aún usado —a veces bajo nombres afines como EMBG— en los estados sucesores para el registro civil, la fiscalidad, la sanidad, la banca y el empleo. El número agrupa la fecha de nacimiento como día-mes-año (siete dígitos: DDMMYYY con año de tres cifras), un código de región de dos dígitos del lugar de registro, un serial de tres dígitos dentro de ese día y región, y un único dígito de control final. Ese dígito de control no es arbitrario: se obtiene con una suma ponderada fija módulo once sobre los primeros doce dígitos, de modo que un dígito mal tecleado o un par intercambiado suele rechazarse antes de almacenar o emparejar el identificador. Esta capacidad implementa únicamente esa suma de verificación. El modo compute acepta exactamente doce dígitos —fecha, región y serie sin el control— y devuelve el dígito mod-11 más la cadena completa de trece dígitos. El modo validate acepta trece dígitos (espacios o guiones opcionales) e indica si el dígito final coincide con el valor esperado recalculado.
Cómo se calcula el dígito de control JMBG yugoslavo
Según la especificación estándar del JMBG compartida por las antiguas repúblicas yugoslavas, el dígito de control es un valor ponderado módulo once calculado sobre los primeros doce dígitos del número. Esos doce dígitos son el bloque de fecha de siete dígitos DDMMYYY (día, mes y los tres últimos dígitos del año de nacimiento), el código de región de dos dígitos y el serial de tres dígitos asignado dentro de ese día y región.
Cada una de las doce posiciones se multiplica por un peso fijo de la secuencia repetida siete, seis, cinco, cuatro, tres, dos —de modo que los pesos son exactamente 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 de izquierda a derecha. Se suman los doce productos; se toma el resto de esa suma módulo once; el control provisional es once menos ese resto. Si el valor provisional es diez u once, el dígito de control publicado es cero; en caso contrario es el propio valor provisional.
La validación recalcula el dígito esperado a partir de la carga de doce dígitos y lo compara con el decimotercer dígito del número enviado. Un ejemplo educativo conocido es la base 180198071000 (fecha de nacimiento 18 de enero de 1980, región 71, serial 000), que produce el dígito de control 5 y el JMBG completo 1801980710005. Otro ejemplo habitual es 010100650000 con dígito de control 6.
El algoritmo es determinista y local: sin llamada a un registro de población, sin reloj y sin aleatoriedad. Frente a herramientas genéricas mod-11 o de personnummer sueco, la intención de búsqueda aquí es estrecha: quien necesita una calculadora de dígito de control JMBG para bases de fecha-región-serie o un verificador del número único de ciudadano yugoslavo de trece dígitos, no una herramienta de tarjeta de pago ni de número personal nórdico.
Dónde encajan los dígitos de control JMBG en flujos balcánicos y de la diáspora
Bancos y fintechs que operan en Serbia, Bosnia y Herzegovina, Montenegro, Macedonia del Norte y mercados afines validan valores JMBG o EMBG de trece dígitos al abrir una cuenta para que una sola transposición no cree un cliente fantasma y un registro KYC rechazado. Trabajos ETL que cargan archivos maestros de clientes o empleados recorren cada columna JMBG de un feed CSV o XML, llaman al modo validate y ponen en cuarentena las filas donde valid es false —capturando tanto ediciones humanas como errores de uno en generadores.
Sistemas municipales y escolares suelen aceptar formas con guiones y compactas; eliminar espacios y guiones antes de la comprobación de dígitos mantiene el contrato simple sin inventar un segundo algoritmo. Aplicaciones de la diáspora —formularios de visado, apps de remesas y portales de doble ciudadanía— reciben con frecuencia valores JMBG tecleados por personas que emigraron hace décadas; una puerta ligera de checksum suele ser la primera línea de defensa antes de cualquier consulta costosa a un registro.
No trate un JMBG que pasa la comprobación como prueba de que el titular está vivo en un registro de población, tiene un documento de identidad nacional válido o está autorizado para un servicio; solo demuestra que el dígito mod-11 es coherente con la fecha, la región y el serial bajo los pesos oficiales de la antigua Yugoslavia.
Qué puede hacer con ella
Auditar columnas JMBG en datos maestros
Valide en lote cada JMBG o EMBG de un CSV de CRM, EHR o nómina y ponga en cuarentena las filas cuyo dígito de control ya no coincida con el valor esperado recalculado.
Preguntas frecuentes
¿Qué es un dígito de control JMBG?
Es el decimotercer dígito del número único de ciudadano de la antigua Yugoslavia, calculado con un algoritmo ponderado mod-11 sobre la fecha de siete dígitos, la región de dos y el serial de tres, de modo que los errores de tecleo y de escaneo suelen detectarse antes de almacenar el número.
¿Qué ocurre con longitud incorrecta, letras o puntuación extraña?
Las tareas de validación fallidas no se facturan.
¿Es gratuita la herramienta de dígito de control JMBG?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Qué significan los 13 dígitos de un JMBG?
Los siete primeros son la fecha de nacimiento: día, mes y las tres últimas cifras del año. Siguen dos de la región de registro, tres de un número de serie y, al final, el dígito de control. En 1801980710005, 18 es el día, 01 el mes y 71 la región.
¿Cómo se calcula el dígito de control del JMBG?
Multiplique los 12 dígitos por los pesos 7, 6, 5, 4, 3, 2 repetidos dos veces, sume los productos y tome el resto de dividir entre 11. Once menos ese resto es el dígito de control; si sale 10 u 11, el dígito es 0.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"number": "180198071000"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.jmbg",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Cuerpos no numéricos y longitudes incorrectas fallan con invalid_input en lugar de un recorte silencioso. La misma aritmética pura se ejecuta gratis en el navegador y al precio publicado de la API, sin consulta a un registro y sin afirmar que un checksum válido implique que la persona esté viva, registrada o autorizada para un servicio.
Contrato de entrada, modos y comportamiento ante errores
Envíe un campo number que contenga el cuerpo del JMBG. Una longitud incorrecta es un error explícito que nombra el modo y la longitud enviada —doce para compute, trece para validate— de forma que los formularios cliente puedan mostrar un mensaje preciso sin adivinar. Cadenas vacías, number ausente y valores de mode no válidos fallan antes de cualquier suma ponderada y no se facturan. HH. sobre un JMBG completo de un usuario o un feed de socio. Una cadena bien formada que simplemente tiene el dígito de control incorrecto devuelve valid false sin lanzar error. Se eliminan espacios y guiones para que formas habituales como 1801980-71-000-5 o grupos espaciados se acepten tras la normalización; otra puntuación y letras se rechazan como entrada no numérica con invalid_input, de modo que un valor recortado en silencio no llegue al almacenamiento. El modo compute es el predeterminado: el motor exige exactamente doce dígitos, devuelve check_digit como cadena de un carácter, devuelve with_check como el JMBG completo de trece dígitos que puede imprimir o persistir, y también devuelve day, month, year3, date (DDMMYYY), region y serial para pistas de auditoría. El modo validate acepta exactamente trece dígitos; la respuesta indica valid true cuando el dígito final coincide con expected_check_digit recalculado, e incluye siempre payload (los doce dígitos ponderados), check_digit, expected_check_digit, los mismos campos estructurales, length y la etiqueta de algoritmo jmbg-mod11 con la cadena de pesos. Alias como jmbg, embg, digits y code se aceptan para el mismo campo de carga, de modo que las integraciones que ya usan nombres regionales no necesiten renombrar. Como la ruta es parse puro sin reloj, fuente aleatoria ni red, el mismo cuerpo JSON siempre produce el mismo resultado JSON en la herramienta gratuita del navegador y en la API a $0.002 por solicitud correcta.
Dónde encajan los dígitos de control JMBG en flujos balcánicos y de la diáspora
Portales sanitarios y sistemas de farmacia recalculan expected_check_digit cuando una clínica lee un número por teléfono o lo pega desde un documento escaneado, detectando errores de tecleo antes de archivar una historia clínica o una receta. Empleadores y proveedores de nómina completan bases de doce dígitos en sandboxes con el modo compute y luego almacenan with_check en empleados de prueba que deben parecer identificadores de producción.
Casos de integración
Completar una base JMBG de 12 dígitos para fixtures de prueba
Llame al modo compute con DDMMYYY más región y serial, guarde with_check y use el JMBG de trece dígitos en registros de prueba de KYC, nómina o sanidad en sandbox.
Validar números únicos de ciudadano tecleados o importados
Cuando un formulario, archivo bancario o feed de RR. HH. envíe trece dígitos, llame al modo validate y bloquee el alta si valid es false, mostrando expected_check_digit para corregir un solo error de tecleo.
Preguntas técnicas
¿Cómo se calcula un dígito de control JMBG con esta API?
Haga POST con number en exactamente doce dígitos (DDMMYYY más región y serial) y mode compute (o omita mode). La respuesta incluye check_digit y with_check (el JMBG completo de trece dígitos).
¿Cómo se valida un JMBG completo de trece dígitos?
Haga POST con la cadena de dígitos (espacios o guiones opcionales) y mode validate. La respuesta incluye valid, check_digit, expected_check_digit y payload (los doce dígitos ponderados).