Chiffre de contrôle JMBG
Les 12 chiffres 180198071000 reçoivent le chiffre de contrôle 5 : le JMBG complet est donc 1801980710005. Complétez ou vérifiez le numéro unique de citoyen utilisé en Serbie, en Bosnie-Herzégovine, au Monténégro et en Macédoine du Nord avant qu'une faute ne crée un doublon. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Nombre
- 180198071000
- Mode de calcul
- Compute
- Entrée
- 180198071000
- Jour
- 18
- Mois
- 01
Le JMBG (Jedinstveni matični broj građana), souvent traduit par numéro unique de citoyen maître, est l'identifiant personnel à treize chiffres introduit dans l'ancienne République fédérative socialiste de Yougoslavie et encore utilisé —parfois sous des noms apparentés comme EMBG— dans les États successeurs pour l'état civil, la fiscalité, la santé, la banque et l'emploi. Le numéro regroupe une date de naissance jour-mois-année (sept chiffres : DDMMYYY avec une année à trois chiffres), un code de région à deux chiffres du lieu d'enregistrement, un serial à trois chiffres pour ce jour et cette région, et un unique chiffre de contrôle final. Ce chiffre de contrôle n'est pas arbitraire : il est produit par une somme pondérée fixe modulo onze sur les douze premiers chiffres, de sorte qu'un chiffre mal saisi ou une paire permutée est en général rejeté avant le stockage ou le rapprochement de l'identifiant. Cette capacité n'implémente que cette somme de contrôle. Le mode compute accepte exactement douze chiffres —date, région et serial sans le contrôle— et renvoie le chiffre mod-11 plus la chaîne complète à treize chiffres. Le mode validate accepte treize chiffres (espaces ou tirets optionnels) et indique si le chiffre final correspond à la valeur attendue recalculée.
Comment le chiffre de contrôle JMBG yougoslave est calculé
Selon la spécification standard du JMBG partagée par les anciennes républiques yougoslaves, le chiffre de contrôle est une valeur pondérée modulo onze calculée sur les douze premiers chiffres du numéro. Ces douze chiffres sont le bloc de date à sept chiffres DDMMYYY (jour, mois et les trois derniers chiffres de l'année de naissance), le code de région à deux chiffres et le serial à trois chiffres attribué pour ce jour et cette région.
Chacune des douze positions est multipliée par un poids fixe de la séquence répétée sept, six, cinq, quatre, trois, deux —les poids sont donc exactement 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 de gauche à droite. Les douze produits sont additionnés ; le reste de cette somme modulo onze est pris ; le contrôle provisoire est onze moins ce reste. Si la valeur provisoire vaut dix ou onze, le chiffre de contrôle publié est zéro ; sinon c'est la valeur provisoire elle-même.
La validation recalcule le chiffre attendu à partir de la charge utile de douze chiffres et le compare au treizième chiffre du numéro soumis. Un exemple pédagogique connu est la base 180198071000 (date de naissance 18 janvier 1980, région 71, serial 000), qui produit le chiffre de contrôle 5 et le JMBG complet 1801980710005. L'algorithme est déterministe et local : aucun appel à un registre de population, aucune horloge et aucune aléatoire.
Par rapport aux outils génériques mod-11 ou personnummer suédois, l'intention de recherche ici est étroite : les personnes qui ont besoin d'une calculatrice de chiffre de contrôle JMBG pour des bases date-région-serial ou d'un vérificateur du numéro unique de citoyen yougoslave à treize chiffres, non d'un outil de carte de paiement ou de numéro personnel nordique.
Où les chiffres de contrôle JMBG s'intègrent aux flux balkaniques et de la diaspora
Les banques et fintechs opérant en Serbie, en Bosnie-Herzégovine, au Monténégro, en Macédoine du Nord et sur les marchés connexes valident les valeurs JMBG ou EMBG à treize chiffres à l'ouverture de compte afin qu'une seule transposition ne crée pas un client fantôme et un dossier KYC rejeté.
Les jobs ETL qui chargent des fichiers maîtres clients ou employés parcourent chaque colonne JMBG d'un flux CSV ou XML, appellent le mode validate et mettent en quarantaine les lignes où valid est false —capturant à la fois les éditions humaines et les bugs d'un dans les générateurs. Les systèmes municipaux et scolaires acceptent souvent les formes avec tirets et compactes ; retirer espaces et tirets avant le contrôle de chiffres garde le contrat simple sans inventer un second algorithme.
Les applications de la diaspora —formulaires de visa, applications de transfert et portails de double nationalité— reçoivent fréquemment des valeurs JMBG saisies par des personnes parties il y a des décennies ; une barrière légère de checksum est souvent la première ligne de défense avant tout appel coûteux à un registre.
Ne traitez pas un JMBG qui passe le contrôle comme preuve que le titulaire est vivant dans un registre de population, possède une carte d'identité nationale valide ou est autorisé à un service ; cela prouve seulement que le chiffre mod-11 est cohérent avec la date, la région et le serial sous les poids officiels de l'ancienne Yougoslavie.
Cas d’usage
Auditer les colonnes JMBG dans les données de référence
Validez en lot chaque JMBG ou EMBG d'un CSV CRM, EHR ou paie et mettez en quarantaine les lignes dont le chiffre de contrôle ne correspond plus à la valeur attendue recalculée.
Questions fréquentes
Qu'est-ce qu'un chiffre de contrôle JMBG ?
C'est le treizième chiffre du numéro unique de citoyen de l'ancienne Yougoslavie, calculé avec un algorithme pondéré mod-11 sur la date à sept chiffres, la région à deux et le serial à trois, afin que les erreurs de saisie et de lecture soient en général détectées avant le stockage du numéro.
Que se passe-t-il en cas de mauvaise longueur, de lettres ou de ponctuation inhabituelle ?
Les tâches de validation échouées ne sont pas facturées.
Que signifient les 13 chiffres d'un JMBG ?
Les sept premiers donnent la date de naissance : jour, mois et trois derniers chiffres de l'année. Viennent ensuite deux chiffres de région d'enregistrement, trois de numéro de série, puis le chiffre de contrôle. Dans 1801980710005, 18 est le jour, 01 le mois et 71 la région.
Comment le chiffre de contrôle JMBG est-il calculé ?
Multipliez les 12 chiffres par les poids 7, 6, 5, 4, 3, 2 répétés deux fois, additionnez les produits et prenez le reste de la division par 11. Onze moins ce reste donne le chiffre de contrôle ; s'il vaut 10 ou 11, le chiffre est 0.
Un JMBG valide prouve-t-il que la personne existe ?
Non. Un chiffre de contrôle correct montre seulement que les 13 chiffres sont cohérents. Aucun registre de population n'est consulté : cela ne dit pas si la personne est vivante, enregistrée ou a droit à un service.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"number": "180198071000"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.jmbg",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Les corps non numériques et les longueurs incorrectes échouent avec invalid_input au lieu d'un filtrage silencieux. La même arithmétique pure s'exécute gratuitement dans le navigateur et au prix API publié, sans consultation de registre et sans prétendre qu'un checksum valide prouve que la personne est vivante, enregistrée ou autorisée à un service.
Contrat d'entrée, modes et comportement d'erreur
Envoyez un champ number contenant le corps du JMBG. Une longueur incorrecte est une erreur explicite qui nomme le mode et la longueur envoyée —douze pour compute, treize pour validate— afin que les formulaires clients affichent un message précis sans deviner. Les chaînes vides, le number manquant et les valeurs de mode invalides échouent avant toute somme pondérée et ne sont pas facturés. Une chaîne bien formée qui a simplement le mauvais chiffre de contrôle renvoie valid false sans lever d'exception. Les espaces et tirets sont retirés afin que des formes d'affichage courantes comme 1801980-71-000-5 ou des groupes espacés soient acceptées après normalisation ; toute autre ponctuation et les lettres sont rejetées comme entrée non numérique avec invalid_input, pour qu'une valeur silencieusement tronquée n'atteigne jamais le stockage. Le mode compute est le défaut : le moteur exige exactement douze chiffres, renvoie check_digit comme chaîne d'un caractère, renvoie with_check comme le JMBG complet à treize chiffres que vous pouvez imprimer ou persister, et renvoie aussi day, month, year3, date (DDMMYYY), region et serial pour les pistes d'audit. Le mode validate accepte exactement treize chiffres ; la réponse indique valid true lorsque le chiffre final correspond à expected_check_digit recalculé, et inclut toujours payload (les douze chiffres pondérés), check_digit, expected_check_digit, les mêmes champs structurels, length et l'étiquette d'algorithme jmbg-mod11 avec la chaîne de poids. Les alias jmbg, embg, digits et code sont acceptés pour le même champ de charge utile, de sorte que les intégrations qui parlent déjà des noms régionaux n'aient pas besoin de renommer. Comme le chemin est purement parse sans horloge, source aléatoire ni réseau, le même corps JSON produit toujours le même résultat JSON sur l'outil gratuit du navigateur et sur l'API à $0.002 par requête réussie.
Où les chiffres de contrôle JMBG s'intègrent aux flux balkaniques et de la diaspora
Les portails de santé et les systèmes de pharmacie recalculent expected_check_digit lorsqu'une clinique lit un numéro au téléphone ou le colle depuis une carte scannée, capturant les fautes de frappe avant l'archivage d'un dossier ou d'une ordonnance. Les employeurs et éditeurs de paie complètent des bases à douze chiffres en sandbox avec le mode compute, puis stockent with_check dans des employés de test qui doivent ressembler à des identifiants de production.
Cas d'intégration
Compléter une base JMBG à 12 chiffres pour des fixtures de test
Appelez le mode compute avec DDMMYYY plus région et serial, stockez with_check et utilisez le JMBG à treize chiffres dans des dossiers de test KYC, paie ou santé en sandbox.
Valider des numéros uniques de citoyen saisis ou importés
Lorsqu'un formulaire, un fichier bancaire ou un flux RH envoie treize chiffres, appelez le mode validate et bloquez l'inscription si valid est false, en affichant expected_check_digit pour corriger une seule faute de frappe.
Questions techniques
Comment calculer un chiffre de contrôle JMBG avec cette API ?
Envoyez un POST avec number égal à exactement douze chiffres (DDMMYYY plus région et serial) et mode compute (ou omettez mode). La réponse inclut check_digit et with_check (le JMBG complet à treize chiffres).
Comment valider un JMBG complet à treize chiffres ?
Envoyez un POST avec la chaîne de chiffres (espaces ou tirets optionnels) et mode validate. La réponse inclut valid, check_digit, expected_check_digit et payload (les douze chiffres pondérés).
L'outil de chiffre de contrôle JMBG est-il gratuit ?
L'outil navigateur est gratuit et s'exécute localement. Les appels API utilisent le solde prépayé KIT au prix de base publié $0.002 ; une entrée invalide n'est jamais facturée.