Dígito control SIN Canadá
La base 04645428 recibe el dígito de control 6, así que el SIN completo es 046454286. Escriba ocho dígitos para calcular el dígito Luhn o nueve para validar un número completo, y frene las erratas antes de que lleguen a un formulario fiscal o de nómina. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Número
- 04645428
- Modo de cálculo
- Compute
- Entrada
- 04645428
- Dígito de control
- 6
- Con dígito de control
- 046454286
El Número de Seguro Social canadiense (SIN) es un identificador de nueve dígitos usado en declaraciones fiscales, empleo, prestaciones y muchos sistemas gubernamentales y de nómina en Canadá. Los ocho primeros dígitos forman la base emitida a la persona; el noveno es un dígito de control del algoritmo de Luhn para detectar errores de un dígito y la mayoría de las transposiciones antes de almacenar o transmitir el número. Esta capacidad implementa únicamente esa regla oficial Luhn: el modo compute acepta exactamente ocho dígitos base y devuelve el dígito de control más el SIN completo de nueve; el modo validate acepta un SIN completo de nueve e indica si el dígito final coincide con el valor esperado recalculado.
Cómo se calcula el dígito de control Luhn del SIN canadiense
Según la regla al estilo de Service Canada para los Social Insurance Numbers, un SIN tiene siempre nueve dígitos decimales. Las posiciones uno a ocho forman el identificador base; la posición nueve es el dígito de control.
Para calcularlo, tome la base de ocho dígitos y aplique el algoritmo clásico double-add-double de Luhn desde la derecha de esa base: duplique cada segundo dígito empezando por el dígito base más a la derecha, porque una vez añadido el de control ese dígito base ocupa la posición dos desde la derecha de la secuencia completa de nueve. Cuando el doble de un dígito es mayor que nueve, reste nueve (de forma equivalente, sume las decenas y las unidades del producto).
Sume cada valor ponderado; el dígito de control es diez menos esa suma módulo diez, módulo diez otra vez, para que la secuencia completa de nueve incluyendo el de control tenga un total Luhn divisible por diez. La validación recalcula el dígito esperado a partir de los ocho primeros caracteres y lo compara con el noveno dígito del SIN enviado. El algoritmo es determinista y local: sin llamada a registro gubernamental, sin reloj y sin aleatoriedad.
Esta herramienta no resuelve SIN a nombres, no demuestra que un número esté asignado actualmente y no contacta a Service Canada ni a la CRA: solo prueba que la cadena de dígitos está bien formada según la regla Luhn de los Social Insurance Numbers canadienses.
Frente a herramientas Luhn genéricas de tarjetas, NPI o IMEI, la intención de búsqueda aquí es estrecha: quien necesita una calculadora de dígito de control del SIN canadiense para bases de ocho dígitos o un comprobador de Social Insurance Number de nueve, no una herramienta de pago, sanitaria o de dispositivo.
Dónde encajan los dígitos de control del SIN canadiense en flujos reales
Los proveedores de nómina y HRIS reciben bases internas de ocho dígitos en sandboxes de onboarding y deben añadir el dígito de control Luhn oficial antes de que un SIN aparezca en resúmenes fiscales, formularios de depósito directo o registros de empleados. El software fiscal y los administradores de prestaciones validan SIN de nueve dígitos en la entrada para que una sola transposición no cree un empleado fantasma ni un envío T4 o ROE rechazado.
Los trabajos ETL que cargan ficheros maestros de empleados recorren cada columna SIN de un CSV o de un feed de RR. HH., llaman al modo validate y ponen en cuarentena las filas donde valid es false, capturando tanto ediciones humanas como errores de generadores en uno.
No trate un SIN que pasa la comprobación como prueba de que el número esté asignado actualmente por Service Canada, de que el titular sea elegible para una prestación o de que se haya verificado la identidad; solo demuestra que el dígito Luhn es coherente con la base bajo los pesos usados para los Social Insurance Numbers canadienses. Trate los SIN reales como información personal sensible: cifre en reposo, limite el acceso y nunca registre números completos en la telemetría de la aplicación.
Qué puede hacer con ella
Auditar columnas SIN en datos maestros de empleados
Valide por lotes cada SIN de nueve dígitos en un CSV de nómina, prestaciones o impuestos y ponga en cuarentena las filas cuyo dígito de control ya no coincida con el valor esperado recalculado.
Preguntas frecuentes
¿Qué es el dígito de control de un SIN canadiense?
Es el noveno dígito de un Social Insurance Number canadiense, calculado con el algoritmo de Luhn sobre los ocho primeros, de modo que los errores de escritura y de escaneo suelen detectarse antes de almacenar o presentar el número.
¿Qué ocurre con longitud incorrecta, letras o guiones?
Las tareas de validación fallidas no se facturan.
¿Es gratuita la herramienta de dígito de control del SIN canadiense?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Cómo se calcula el dígito de control del SIN?
Empezando por el último dígito de la base, se duplica uno de cada dos y a cualquier resultado mayor que 9 se le resta 9. Se suman todos los valores y el dígito de control es el que lleva el total a un múltiplo de diez. Para 04645428 es 6.
¿Un SIN válido significa que fue emitido de verdad?
No. Un dígito de control correcto solo indica que el número está bien formado. La herramienta no consulta ningún registro del gobierno, así que no puede saber si el SIN se emitió, sigue activo o pertenece a quien lo dio.
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/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)Ejemplo de solicitud
{
"number": "04645428"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.sin_canada",
"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
La entrada no numérica y las longitudes incorrectas fallan con invalid_input en lugar de un recorte silencioso, de modo que usted nunca persista un identificador a medias. La misma aritmética pura se ejecuta gratis en el navegador y al precio publicado de la API, sin consulta de red a registros gubernamentales y sin afirmar que un checksum válido signifique que el SIN esté activo, emitido o libre de fraude.
Contrato de entrada, modos y comportamiento de error
Envíe un campo number que contenga solo caracteres del cero al nueve. Una longitud incorrecta es un error explícito que nombra el modo y la longitud enviada —ocho para compute, nueve para validate— de modo que los formularios cliente puedan mostrar «se necesitan ocho dígitos» sin adivinar. Las cadenas vacías, el number ausente y los valores de mode inválidos fallan antes de cualquier suma Luhn y no se facturan. Las tareas de validación que rechazan forma incorrecta no se cobran; una cadena bien formada de nueve dígitos que simplemente tiene el dígito de control incorrecto devuelve valid false sin lanzar error. Nunca use esta herramienta para inventar SIN reales de personas vivas: use solo bases sintéticas o autorizadas en desarrollo, y almacene los SIN reales bajo sus políticas de privacidad y seguridad. Espacios, guiones, letras y puntos decimales se rechazan como entrada no numérica con invalid_input para que un valor recortado en silencio no llegue al almacenamiento. El modo validate exige exactamente nueve dígitos; la respuesta indica valid true cuando el dígito final coincide con el expected_check_digit recalculado, e incluye siempre payload (los ocho primeros dígitos), check_digit, expected_check_digit y length nueve. Se aceptan alias como digits, sin y code para el mismo campo de carga, de forma que las integraciones que ya hablan de «sin» no necesiten renombrar. Como la ruta es parse puro sin reloj, fuente aleatoria ni red, el mismo cuerpo JSON produce siempre 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 del SIN canadiense en flujos reales
Los equipos de prestaciones y de seguro de empleo recalculan expected_check_digit cuando un cliente lee un número por teléfono o lo pega desde un PDF, capturando errores de escritura antes de enviar un archivo de reclamación. En todo flujo el contrato es el mismo: solo dígitos, longitud fija por modo, JSON estructurado que usted puede probar con goldens, comportamiento idéntico en navegador gratuito y API prepago, e invalid_input honesto cuando la cadena no es una secuencia pura de dígitos de la longitud correcta.
Casos de integración
Completar una base SIN de 8 dígitos para fixtures de nómina
Llame al modo compute con la base de ocho dígitos, almacene with_check y use el SIN de nueve en registros de nómina de prueba, resúmenes fiscales o empleados sandbox.
Validar SIN tecleados o importados en la entrada
Cuando un formulario, archivo HRIS o feed de socio envíe nueve dígitos, llame al modo validate y bloquee el alta si valid es false, mostrando expected_check_digit para corregir un error de un solo dígito.
Preguntas técnicas
¿Cómo calculo el dígito de control de un SIN con esta API?
Haga POST con number en exactamente ocho dígitos y mode compute (o omita mode). La respuesta incluye check_digit y with_check (el SIN completo de nueve dígitos).
¿Cómo valido un SIN completo de nueve dígitos?
Haga POST con la cadena de nueve dígitos y mode validate. La respuesta incluye valid, check_digit, expected_check_digit y payload (los dígitos sin el último).