Chiffre contrôle SIN Canada
La base 04645428 reçoit le chiffre de contrôle 6 : le SIN complet est donc 046454286. Saisissez huit chiffres pour calculer le chiffre Luhn ou neuf pour valider un numéro complet, et repérez les fautes de frappe avant un feuillet fiscal ou une fiche de paie. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Nombre
- 04645428
- Mode de calcul
- Compute
- Entrée
- 04645428
- Chiffre de contrôle
- 6
- Avec chiffre de contrôle
- 046454286
Le numéro d'assurance sociale canadien (SIN) est un identifiant à neuf chiffres utilisé pour les déclarations fiscales, l'emploi, les prestations et de nombreux systèmes gouvernementaux et de paie au Canada. Les huit premiers chiffres forment la base délivrée à la personne ; le neuvième est un chiffre de contrôle produit par l'algorithme de Luhn afin de détecter les erreurs d'un chiffre et la plupart des inversions avant le stockage ou la transmission. Cette capacité n'implémente que cette règle Luhn officielle : le mode compute accepte exactement huit chiffres de base et renvoie le chiffre de contrôle plus le SIN complet à neuf ; le mode validate accepte un SIN complet à neuf et indique si le chiffre final correspond à la valeur attendue recalculée.
Comment le chiffre de contrôle Luhn du SIN canadien est calculé
Selon la règle de type Service Canada pour les Social Insurance Numbers, un SIN comporte toujours neuf chiffres décimaux. Les positions un à huit forment l'identifiant de base ; la position neuf est le chiffre de contrôle.
Pour le calculer, prenez la base de huit chiffres et appliquez l'algorithme Luhn classique double-add-double depuis la droite de cette base : doublez chaque second chiffre en commençant par le chiffre de base le plus à droite, car une fois le contrôle ajouté ce chiffre de base occupe la position deux depuis la droite de la séquence complète à neuf. Lorsque le double d'un chiffre est supérieur à neuf, soustrayez neuf (de façon équivalente, additionnez les dizaines et les unités du produit).
Additionnez chaque valeur pondérée ; le chiffre de contrôle est dix moins cette somme modulo dix, modulo dix à nouveau, afin que la séquence complète à neuf y compris le contrôle ait un total Luhn divisible par dix. La validation recalcule le chiffre attendu à partir des huit premiers caractères et le compare au neuvième chiffre du SIN soumis. L'algorithme est déterministe et local : pas d'appel à un registre gouvernemental, pas d'horloge et pas d'aléa.
Cet outil ne résout pas les SIN en noms, ne prouve pas qu'un numéro est actuellement attribué et ne contacte ni Service Canada ni l'ARC : il prouve seulement que la chaîne de chiffres est bien formée selon la règle Luhn des Social Insurance Numbers canadiens.
Par rapport aux outils Luhn génériques de carte, NPI ou IMEI, l'intention de recherche ici est étroite : ceux qui ont besoin d'un calculateur de chiffre de contrôle SIN canadien pour des bases de huit chiffres ou d'un vérificateur de Social Insurance Number à neuf, et non d'un outil de paiement, de santé ou d'appareil.
Où les chiffres de contrôle du SIN canadien s'insèrent dans les flux réels
Les éditeurs de paie et de HRIS reçoivent des bases internes de huit chiffres dans des sandboxes d'onboarding et doivent ajouter le chiffre de contrôle Luhn officiel avant qu'un SIN n'apparaisse sur des feuillets fiscaux, des formulaires de dépôt direct ou des dossiers employés. Les logiciels fiscaux et les administrateurs de prestations valident les SIN à neuf chiffres à l'entrée afin qu'une seule transposition ne crée pas un employé fantôme ni un envoi T4 ou ROE rejeté.
Les jobs ETL qui chargent les fichiers maîtres employés parcourent chaque colonne SIN d'un CSV ou d'un flux RH, appellent le mode validate et mettent en quarantaine les lignes où valid est false — capturant à la fois les éditions humaines et les bugs de générateurs.
Ne traitez pas un SIN qui passe le contrôle comme preuve que le numéro est actuellement attribué par Service Canada, que le titulaire est éligible à une prestation ou que l'identité a été vérifiée ; cela prouve seulement que le chiffre Luhn est cohérent avec la base sous les poids utilisés pour les Social Insurance Numbers canadiens. Traitez les vrais SIN comme des données personnelles sensibles : chiffrez au repos, limitez l'accès et n'enregistrez jamais les numéros complets dans la télémétrie applicative.
Cas d’usage
Auditer les colonnes SIN dans les données maîtres employés
Validez par lots chaque SIN à neuf chiffres dans un CSV de paie, de prestations ou de fiscalité 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 que le chiffre de contrôle d'un SIN canadien ?
C'est le neuvième chiffre d'un Social Insurance Number canadien, calculé avec l'algorithme de Luhn sur les huit premiers, afin que les erreurs de saisie et de scan soient en général détectées avant le stockage ou le dépôt du numéro.
Que se passe-t-il avec une longueur incorrecte, des lettres ou des tirets ?
Les tâches de validation en échec ne sont pas facturées.
Comment se calcule le chiffre de contrôle du SIN ?
En partant du dernier chiffre de la base, on double un chiffre sur deux et on retire 9 à tout résultat supérieur à 9. On additionne toutes les valeurs ; le chiffre de contrôle amène le total au multiple de dix suivant. Pour 04645428, c'est 6.
Un SIN valide a-t-il forcément été attribué ?
Non. Un chiffre de contrôle correct montre seulement que le numéro est bien formé. L'outil n'interroge aucun registre public : il ne peut pas dire si le SIN a été attribué, s'il est actif ou s'il appartient à la personne qui l'a donné.
Comment valider un SIN complet à neuf chiffres ?
Choisissez la validation et saisissez les neuf chiffres. L'outil recalcule le chiffre de contrôle à partir des huit premiers, le compare au dernier et indique s'ils concordent, avec le chiffre attendu.
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/sin-canada \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"04645428"}'const res = await fetch("https://api.kit.forhosting.com/enc/sin-canada", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "04645428"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/sin-canada",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "04645428"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/sin-canada", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"04645428"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"04645428"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/sin-canada", 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": "04645428"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.sin_canada",
"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 entrées non numériques et les longueurs incorrectes échouent avec invalid_input au lieu d'un nettoyage silencieux, afin que vous ne persistiez jamais un identifiant à demi nettoyé. La même arithmétique pure s'exécute gratuitement dans le navigateur et au prix API publié, sans appel réseau aux registres gouvernementaux et sans prétendre qu'un checksum valide signifie que le SIN est actif, délivré ou exempt de fraude.
Contrat d'entrée, modes et comportement d'erreur
Envoyez un champ number qui ne contient que les caractères de zéro à neuf. Une longueur incorrecte est une erreur explicite qui nomme le mode et la longueur envoyée —huit pour compute, neuf pour validate— afin que les formulaires clients puissent afficher « il faut huit chiffres » sans deviner. Chaînes vides, number manquant et valeurs de mode invalides échouent avant toute somme Luhn et ne sont pas facturés. Les tâches de validation qui rejettent une forme incorrecte ne sont pas facturées ; une chaîne bien formée de neuf chiffres qui a simplement le mauvais chiffre de contrôle renvoie valid false sans lever d'exception. Ne traitez jamais cet outil comme un moyen d'inventer de vrais SIN pour des personnes vivantes : n'utilisez que des bases synthétiques ou autorisées en développement, et stockez les vrais SIN selon vos politiques de confidentialité et de sécurité. Espaces, tirets, lettres et points décimaux sont rejetés comme entrée non numérique avec invalid_input afin qu'une valeur silencieusement tronquée n'atteigne jamais le stockage. Le mode validate exige exactement neuf chiffres ; la réponse indique valid true lorsque le chiffre final correspond à l'expected_check_digit recalculé, et inclut toujours payload (les huit premiers chiffres), check_digit, expected_check_digit et length neuf. Des alias tels que digits, sin et code sont acceptés pour le même champ de charge utile afin que les intégrations qui parlent déjà « sin » n'aient pas à renommer. Comme le chemin est un parse pur 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 du SIN canadien s'insèrent dans les flux réels
Les équipes de prestations et d'assurance-emploi recalculent expected_check_digit lorsqu'un client lit un numéro au téléphone ou le colle depuis un PDF, capturant les fautes de frappe avant l'envoi d'un dossier de demande.
Cas d'intégration
Compléter une base SIN de 8 chiffres pour fixtures de paie
Appelez le mode compute avec la base de huit chiffres, stockez with_check et utilisez le SIN à neuf dans des dossiers de paie de test, des feuillets fiscaux ou des employés sandbox.
Valider des SIN saisis ou importés à l'entrée
Lorsqu'un formulaire, un fichier HRIS ou un flux partenaire envoie neuf chiffres, appelez le mode validate et bloquez l'inscription si valid est false, en affichant expected_check_digit pour corriger une faute d'un seul chiffre.
Questions techniques
Comment calculer un chiffre de contrôle SIN avec cette API ?
Envoyez un POST avec number égal à exactement huit chiffres et mode compute (ou omettez mode). La réponse inclut check_digit et with_check (le SIN complet à neuf chiffres).
Comment valider un SIN complet à neuf chiffres ?
Envoyez un POST avec la chaîne de neuf chiffres et mode validate. La réponse inclut valid, check_digit, expected_check_digit et payload (les chiffres sans le dernier).
L'outil de chiffre de contrôle du SIN canadien 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.