Verifica CPR Danimarca
Inserisca 0707610018 e vedrà che è un CPR danese valido di una donna nata il 7 luglio 1961, con il controllo modulo 11 superato. Accetta anche la forma con trattino, come 070761-0018. Utile per aperture di conto e anagrafiche del personale. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Numero
- 0707610018
- Input
- 0707610018
- Data di nascita
- 1961-07-07
- Giorno
- 7
- Mese
- 7
Il numero CPR danese (personnummer del Det Centrale Personregister) è l'identificativo civile nazionale usato per fiscalità, sanità, banche, lavoro e la maggior parte dei moduli pubblici in Danimarca. Nella forma abituale ha dieci cifre: sei per la data di nascita come giorno-mese-anno (DDMMYY) e quattro di serie che codificano indizi di secolo, una sequenza e una cifra di controllo finale. I numeri classici applicano una somma ponderata di modulo undici su tutte e dieci le cifre, così che un solo errore di digitazione viene di solito rifiutato prima di memorizzare o abbinare l'identificativo. Questa capacità valida solo quella struttura. Verifica che la data incorporata sia un giorno di calendario reale secondo le regole ufficiali di secolo della settima cifra, indica se la somma classica di modulo undici si divide in modo esatto e restituisce la data di nascita in ISO più il genere inferito dall'ultima cifra (dispari maschio, pari femmina). Sono accettate forme con trattino come DDMMYY-XXXX dopo la normalizzazione.
Come è strutturato e controllato un numero CPR danese
Secondo la prassi danese di anagrafe civile, un personnummer CPR ha dieci cifre scritte in forma compatta come DDMMYYXXXX oppure con un trattino dopo la data come DDMMYY-XXXX. Le posizioni uno e due sono il giorno di nascita, tre e quattro il mese, cinque e sei l'anno a due cifre.
La settima cifra partecipa alla risoluzione del secolo per ricostruire l'anno di nascita a quattro cifre senza un campo secolo separato: le cifre da zero a tre mappano su millenovecento più l'anno a due cifre; le cifre quattro e nove mappano su duemila quando l'anno è trentasei o meno e altrimenti restano in millenovecento; le cifre da cinque a otto mappano su duemila quando l'anno è cinquantasette o meno e altrimenti su milleottocento per le coorti più antiche.
Una volta noto l'anno completo, la capacità verifica che il giorno esista in quel mese, incluso il ventinove febbraio solo negli anni bisestili gregoriani, con aritmetica pura e senza l'orologio dell'host. La regola classica di controllo moltiplica le dieci cifre per i pesi fissi quattro, tre, due, sette, sei, cinque, quattro, tre, due e uno, ed esige che la somma ponderata sia divisibile per undici. L'ultima cifra indica anche il genere: dispari per maschio e pari per femmina.
Un esempio noto è zero sette zero sette sei uno zero zero uno otto, nato il sette luglio millenovecentosessantuno, femmina, con somma classica corretta.
Dove i controlli CPR danesi si inseriscono nei flussi reali
Banche e fintech validano valori CPR a dieci cifre all'apertura del conto affinché una sola trasposizione non crei un cliente fantasma né un dossier KYC rifiutato. I job ETL che caricano file master di clienti o dipendenti danesi scorrono ogni colonna CPR in un feed CSV o XML, chiamano questa capacità e mettono in quarantena le righe dove valid è false, intercettando sia le modifiche umane sia gli errori di uno nei generatori.
I sistemi comunali e scolastici accettano spesso sia le forme con trattino sia quelle compatte; rimuovere spazi e trattini prima del controllo delle cifre mantiene il contratto semplice senza inventare un secondo algoritmo.
Non consideri un CPR con controllo superato come prova che il titolare sia vivo nel registro di popolazione, abbia una tessera sanitaria danese o sia autorizzato a un servizio; dimostra solo che la data è valida nel calendario secondo le regole di secolo e che la cifra classica di modulo undici è coerente con i pesi ufficiali quando quella regola vale ancora.
Casi d'uso
Validare un CPR danese digitato nei moduli di onboarding
Quando una registrazione, un KYC bancario o un modulo HR raccoglie un personnummer, chiami il controllo e blocchi l'invio se valid è false, mostrando comunque la data di nascita ISO estratta per la correzione.
Auditare le colonne CPR nei dati master danesi
Validi in batch ogni CPR di un CSV di CRM, EHR o payroll e metta in quarantena le righe la cui data è impossibile o il cui controllo classico di modulo undici non coincide più.
Domande frequenti
Cosa valida il controllo CPR della Danimarca?
Verifica che un personnummer danese a dieci cifre contenga una data di nascita di calendario reale (secolo dalla settima cifra) e che il controllo ponderato classico mod-11 su tutte e dieci le cifre sia corretto.
Quale formato deve inviare?
Invii dieci cifre DDMMYYXXXX, opzionalmente con trattino o spazi (ad esempio 070761-0018). Dopo la rimozione di spazi e trattini il corpo deve essere esattamente dieci cifre 0–9.
Quanto costa il controllo CPR della Danimarca?
Lo strumento nel browser è gratuito e gira in locale.
Un CPR autentico può non superare il controllo modulo 11?
Sì. I numeri rilasciati dopo l'allentamento della regola nell'ottobre 2007 possono essere autentici anche se la somma modulo 11 non torna. Lo strumento riporta quel controllo a parte, così lei può applicare una regola rigida o accettare la sola data.
Come si ricava l'anno di nascita completo?
Dalla settima cifra e dall'anno a due cifre. Da 0 a 3 indicano gli anni 1900; 4 e 9 gli anni 2000 fino al 36, altrimenti i 1900; da 5 a 8 gli anni 2000 fino al 57, altrimenti i 1800.
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/cpr-denmark \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"0707610018"}'const res = await fetch("https://api.kit.forhosting.com/enc/cpr-denmark", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "0707610018"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/cpr-denmark",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "0707610018"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/cpr-denmark", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"0707610018"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"0707610018"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/cpr-denmark", 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": "0707610018"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.cpr_denmark",
"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
Lunghezza errata, corpi non numerici e date impossibili falliscono con invalid_input invece di un taglio silenzioso. La stessa aritmetica pura gira gratis nel browser e al prezzo API pubblicato, senza consultazione del registro di popolazione e senza affermare che un controllo superato dimostri che la persona sia viva, registrata o autorizzata a un servizio.
Come è strutturato e controllato un numero CPR danese
I numeri emessi dopo il allentamento dell'ottobre duemilasette possono essere ufficiali anche se la somma di modulo undici fallisce; questo strumento continua a segnalare mod11_valid così chi chiama può applicare una politica rigorosa o solo di data.
Contratto di ingresso, forma della risposta ed errori
Dopo la normalizzazione il motore richiede esattamente dieci cifre. Analizza giorno, mese e anno a due cifre, risolve l'anno completo dalla settima cifra e rifiuta date di calendario impossibili con un messaggio chiaro che nomina il giorno o il mese errato. Lunghezza errata dopo lo strip, stringhe vuote, number assente e corpi senza cifre falliscono prima di qualsiasi somma di controllo e non vengono fatturati. Invii un corpo JSON con un campo number obbligatorio che contenga il corpo del CPR. Spazi e trattini vengono rimossi così le forme danesi abituali come zero sette zero sette sei uno trattino zero zero uno otto sono accettate dopo la normalizzazione; altra punteggiatura e lettere sono rifiutate come input non numerico con invalid_input, affinché un valore ripulito in silenzio non raggiunga mai l'archiviazione. Con una data reale la risposta include sempre input come la stringa normalizzata di dieci cifre, valid true solo quando passa anche il controllo classico di modulo undici, birth_date come stringa ISO anno-mese-giorno, day, month e year come interi, date come il frammento di sei cifre DDMMYY, serial come la coda di quattro cifre, gender come male o female, mod11_valid come specchio booleano della somma di controllo, check_digit come l'ultimo carattere, length dieci e algorithm denmark-cpr-mod11. Una stringa ben formata con data reale ma cifra di controllo errata restituisce valid false e mod11_valid false senza lanciare errore, così i moduli possono mostrare la data estratta e comunque bloccare l'iscrizione. Si accettano alias come cpr, digits, text, value, code e id per lo stesso campo di payload, così le integrazioni che già usano nomi danesi non devono rinominare. Poiché il percorso è parse puro senza orologio, fonte casuale né 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. Preferisca questo endpoint quando condiziona un modulo, un file KYC, un import HR o un ingresso sanitario a un CPR digitato da un utente o da un feed partner e ha bisogno, in una sola chiamata, del controllo della data e del controllo classico.
Dove i controlli CPR danesi si inseriscono nei flussi reali
I portali sanitari e i sistemi di farmacia ricalcolano birth_date e mod11_valid quando una clinica legge un numero al telefono o lo incolla da una tessera scansionata, intercettando errori di digitazione prima di archiviare una voce di cartella o una ricetta. I test di integrazione affermano birth_date e gender su campioni fissi affinché le librerie di moduli, le stampanti di etichette e questa API non divergono.
Casi di integrazione
Fissare fixture per test di sanità e payroll
Usi campioni validi noti come 0707610018 per pazienti e dipendenti di sandbox, affermando birth_date, gender e mod11_valid affinché i dati di test restino stabili tra le versioni.
Domande tecniche
Cosa succede se il controllo mod-11 fallisce ma la data è reale?
L'attività termina con successo con valid false e mod11_valid false, e continua a restituire birth_date e gender. I CPR successivi al 2007 possono essere ufficiali senza somma classica corretta; usi mod11_valid se le serve una politica più flessibile.
Quando si ottiene invalid_input?
Number assente, stringa vuota, caratteri non numerici dopo lo strip, lunghezza diversa da dieci o una data di calendario impossibile (mese o giorno errati) falliscono con invalid_input e non vengono fatturati.