Cifra di controllo JMBG
Le 12 cifre 180198071000 ricevono la cifra di controllo 5, quindi il JMBG completo è 1801980710005. Completi o verifichi il numero unico di cittadino usato in Serbia, Bosnia ed Erzegovina, Montenegro e Macedonia del Nord prima che un errore crei un record duplicato. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Numero
- 180198071000
- Modalità di calcolo
- Compute
- Input
- 180198071000
- Giorno
- 18
- Mese
- 01
Il JMBG (Jedinstveni matični broj građana), spesso tradotto come numero unico maestro di cittadino, è l'identificativo personale a tredici cifre introdotto nell'ex Repubblica Socialista Federale di Jugoslavia e ancora usato —talvolta con nomi affini come EMBG— negli Stati successori per anagrafe, fiscalità, sanità, banche e lavoro. Il numero raggruppa la data di nascita come giorno-mese-anno (sette cifre: DDMMYYY con anno a tre cifre), un codice regione a due cifre del luogo di registrazione, un seriale a tre cifre entro quel giorno e regione, e un'unica cifra di controllo finale. Quella cifra di controllo non è arbitraria: è prodotta da una somma ponderata fissa modulo undici sui primi dodici cifre, così che una cifra digitata male o una coppia scambiata sia di solito rifiutata prima che l'identificativo sia memorizzato o abbinato. Questa capacità implementa soltanto quel checksum. La modalità compute accetta esattamente dodici cifre —data, regione e seriale senza il controllo— e restituisce la cifra mod-11 più la stringa completa a tredici cifre. La modalità validate accetta tredici cifre (spazi o trattini opzionali) e indica se la cifra finale coincide con il valore atteso ricalcolato.
Come si calcola la cifra di controllo JMBG jugoslava
Secondo la specifica standard del JMBG condivisa dalle ex repubbliche jugoslave, la cifra di controllo è un valore ponderato modulo undici calcolato sui primi dodici cifre del numero. Quei dodici cifre sono il blocco data a sette cifre DDMMYYY (giorno, mese e le ultime tre cifre dell'anno di nascita), il codice regione a due cifre e il seriale a tre cifre assegnato in quel giorno e regione.
Ciascuna delle dodici posizioni è moltiplicata per un peso fisso della sequenza ripetuta sette, sei, cinque, quattro, tre, due —quindi i pesi sono esattamente 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 da sinistra a destra. I dodici prodotti si sommano; si prende il resto di quella somma modulo undici; il controllo provvisorio è undici meno quel resto. Se il valore provvisorio è dieci o undici, la cifra di controllo pubblicata è zero; altrimenti è il valore provvisorio stesso.
Un esempio didattico noto è la base 180198071000 (data di nascita 18 gennaio 1980, regione 71, seriale 000), che produce la cifra di controllo 5 e il JMBG completo 1801980710005. L'algoritmo è deterministico e locale: nessuna chiamata a un registro di popolazione, nessun orologio e nessuna casualità.
Rispetto a strumenti generici mod-11 o personnummer svedese, l'intento di ricerca qui è stretto: chi ha bisogno di una calcolatrice della cifra di controllo JMBG per basi data-regione-seriale o di un verificatore del numero unico di cittadino jugoslavo a tredici cifre, non di uno strumento per carte di pagamento o numeri personali nordici.
Dove le cifre di controllo JMBG si inseriscono nei flussi balcanici e della diaspora
Banche e fintech che operano in Serbia, Bosnia ed Erzegovina, Montenegro, Macedonia del Nord e mercati correlati convalidano valori JMBG o EMBG a tredici cifre all'apertura del conto affinché una sola trasposizione non crei un cliente fantasma e un record KYC respinto. Job ETL che caricano file master di clienti o dipendenti scorrono ogni colonna JMBG in un feed CSV o XML, chiamano la modalità validate e mettono in quarantena le righe dove valid è false —intercettando sia modifiche umane sia bug di uno nei generatori.
Sistemi comunali e scolastici spesso accettano sia forme con trattino sia compatte; rimuovere spazi e trattini prima del controllo delle cifre mantiene il contratto semplice senza inventare un secondo algoritmo. Applicazioni della diaspora —moduli per visti, app di rimesse e portali di doppia cittadinanza— ricevono di frequente valori JMBG digitati da persone partite decenni fa; un gate leggero di checksum è spesso la prima linea di difesa prima di qualsiasi chiamata costosa a un registro.
Non consideri un JMBG che supera il controllo come prova che il titolare sia vivo in un registro di popolazione, possieda un documento d'identità nazionale valido o sia autorizzato a un servizio; dimostra solo che la cifra mod-11 è coerente con data, regione e seriale secondo i pesi ufficiali dell'ex Jugoslavia.
Casi d'uso
Auditare le colonne JMBG nei dati master
Convalidi in batch ogni JMBG o EMBG in un CSV di CRM, EHR o payroll e metta in quarantena le righe la cui cifra di controllo non coincide più con il valore atteso ricalcolato.
Domande frequenti
Che cos'è una cifra di controllo JMBG?
È la tredicesima cifra del numero unico di cittadino dell'ex Jugoslavia, calcolata con un algoritmo ponderato mod-11 sulla data a sette cifre, la regione a due e il seriale a tre, così che errori di digitazione e di scansione siano di solito intercettati prima che il numero sia memorizzato.
Cosa succede con lunghezza errata, lettere o punteggiatura strana?
Le attività di convalida fallite non sono fatturate.
Lo strumento della cifra di controllo JMBG è gratuito?
Lo strumento del browser è gratuito e gira in locale.
Come si calcola la cifra di controllo del JMBG?
Moltiplichi le 12 cifre per i pesi 7, 6, 5, 4, 3, 2 ripetuti due volte, sommi i prodotti e prenda il resto della divisione per 11. Undici meno quel resto è la cifra di controllo; se risulta 10 o 11, la cifra è 0.
Il JMBG è lo stesso numero dell'EMBG?
Sì, EMBG è un nome affine usato in alcuni Stati successori. Il numero ha la stessa struttura a 13 cifre e la stessa cifra di controllo, quindi si calcola e si verifica allo stesso modo.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"number": "180198071000"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.jmbg",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Corpi non numerici e lunghezze errate falliscono con invalid_input invece di un troncamento silenzioso. La stessa aritmetica pura gira gratis nel browser e al prezzo API pubblicato, senza consultazione di registro e senza affermare che un checksum valido dimostri che la persona sia viva, registrata o autorizzata a un servizio.
Come si calcola la cifra di controllo JMBG jugoslava
La convalida ricalcola la cifra attesa dal payload a dodici cifre e la confronta con la tredicesima cifra del numero inviato.
Contratto di input, modalità e comportamento degli errori
Invii un campo number che contenga il corpo del JMBG. Una lunghezza errata è un errore esplicito che nomina la modalità e la lunghezza inviata —dodici per compute, tredici per validate— così che i moduli client possano mostrare un messaggio preciso senza indovinare. Stringhe vuote, number mancante e valori di mode non validi falliscono prima di qualsiasi somma ponderata e non sono fatturati. Una stringa ben formata che ha semplicemente la cifra di controllo sbagliata restituisce valid false senza sollevare un'eccezione. Spazi e trattini vengono rimossi così che forme di visualizzazione comuni come 1801980-71-000-5 o gruppi spaziati siano accettate dopo la normalizzazione; altra punteggiatura e lettere sono rifiutate come input non numerico con invalid_input, affinché un valore silenziosamente troncato non raggiunga mai lo storage. La modalità compute è il default: il motore richiede esattamente dodici cifre, restituisce check_digit come stringa di un carattere, restituisce with_check come il JMBG completo a tredici cifre che Lei può stampare o persistere, e restituisce anche day, month, year3, date (DDMMYYY), region e serial per le tracce di audit. La modalità validate accetta esattamente tredici cifre; la risposta indica valid true quando la cifra finale coincide con expected_check_digit ricalcolato, e include sempre payload (le dodici cifre ponderate), check_digit, expected_check_digit, gli stessi campi strutturali, length e l'etichetta di algoritmo jmbg-mod11 con la stringa dei pesi. Alias come jmbg, embg, digits e code sono accettati per lo stesso campo di payload, così le integrazioni che già usano nomi regionali non devono rinominare. Poiché il percorso è parse puro senza orologio, sorgente casuale o rete, lo stesso corpo JSON produce sempre lo stesso risultato JSON sullo strumento gratuito del browser e sull'API a $0.002 per richiesta riuscita.
Dove le cifre di controllo JMBG si inseriscono nei flussi balcanici e della diaspora
Portali sanitari e sistemi di farmacia ricalcolano expected_check_digit quando una clinica legge un numero al telefono o lo incolla da un documento scansionato, intercettando errori di battitura prima di archiviare una cartella clinica o una ricetta. Datori di lavoro e fornitori di payroll completano basi a dodici cifre in sandbox con la modalità compute, poi memorizzano with_check in dipendenti di test che devono somigliare a identificativi di produzione.
Casi di integrazione
Completare una base JMBG a 12 cifre per fixture di test
Chiami la modalità compute con DDMMYYY più regione e seriale, memorizzi with_check e usi il JMBG a tredici cifre in record di test KYC, payroll o sanità in sandbox.
Convalidare numeri unici di cittadino digitati o importati
Quando un modulo, un file bancario o un feed HR invia tredici cifre, chiami la modalità validate e blocchi l'iscrizione se valid è false, mostrando expected_check_digit per correggere un solo errore di battitura.
Domande tecniche
Come si calcola una cifra di controllo JMBG con questa API?
Invii un POST con number impostato a esattamente dodici cifre (DDMMYYY più regione e seriale) e mode compute (o ometta mode). La risposta include check_digit e with_check (il JMBG completo a tredici cifre).
Come si convalida un JMBG completo a tredici cifre?
Invii un POST con la stringa di cifre (spazi o trattini opzionali) e mode validate. La risposta include valid, check_digit, expected_check_digit e payload (le dodici cifre ponderate).