Cómo generar la clave de acceso de 49 dígitos para el SRI (2026)
La clave de acceso del SRI se arma concatenando 9 campos (48 dígitos) y calculando el dígito verificador con módulo 11. Paso a paso con código JS y Python.
Para generar la clave de acceso de 49 dígitos del SRI concatena en orden los 9 campos de la Ficha Técnica —fecha, tipo de comprobante, RUC, ambiente, serie, secuencial, código numérico y tipo de emisión (48 dígitos)— y calcula el dígito verificador con módulo 11. El resultado va en el elemento <claveAcceso> del XML.
Si lo que quieres es solo verificar una clave de acceso ya emitida, ve a la guía de cómo verificar la clave de acceso de una factura en el SRI. Si lo que quieres es generarla, sigue leyendo.
Ten estos datos a mano antes de empezar
- Fecha de emisión del comprobante.
- Tipo de comprobante (factura, nota de crédito, nota de débito, retención, guía, liquidación).
- RUC del emisor completo, de 13 dígitos.
- Ambiente (pruebas o producción) y tipo de emisión (normal o contingencia).
- Establecimiento, punto de emisión y secuencial tal como están registrados en el SRI.
¿No sabes de dónde sale alguno? Ver la referencia campo por campo ↓
Paso a paso: generar la clave de acceso
Tiempo estimado: 15-30 minutos si ya tienes los datos del comprobante. El cálculo del módulo 11 está resuelto abajo en JavaScript y Python: puedes copiarlo tal cual.
Paso 1 — Reúne los 9 campos en el orden correcto
La clave de acceso no es un número aleatorio. Es la concatenación de 10 campos definidos por la Ficha Técnica de Comprobantes Electrónicos del SRI:
| # | Campo | Largo | Ejemplo |
|---|---|---|---|
| 1 | Fecha de emisión | 8 | 12052026 |
| 2 | Tipo de comprobante | 2 | 01 |
| 3 | RUC del emisor | 13 | 1792146739001 |
| 4 | Tipo de ambiente | 1 | 2 |
| 5 | Serie (estab + pto. emisión) | 6 | 001001 |
| 6 | Secuencial del comprobante | 9 | 000000123 |
| 7 | Código numérico | 8 | 12345678 |
| 8 | Tipo de emisión | 1 | 1 |
| 9 | Dígito verificador (módulo 11) | 1 | ? |
| Total | 49 |
Total real: 8 + 2 + 13 + 1 + 6 + 9 + 8 + 1 + 1 = 49 dígitos. Si tu cadena no suma exactamente 49, hay un campo con padding incorrecto.
El detalle de qué va en cada campo (formatos, padding, códigos válidos) está en la referencia campo por campo ↓.
Paso 2 — Concatena los primeros 48 dígitos
Supongamos que vas a emitir una factura con estos datos:
| Campo | Valor |
|---|---|
| Fecha | 12 de mayo de 2026 |
| Tipo de comprobante | Factura |
| RUC | 1792146739001 |
| Ambiente | Producción |
| Establecimiento | 001 |
| Punto de emisión | 001 |
| Secuencial | 123 |
| Código numérico | 12345678 |
| Tipo de emisión | Normal |
Concatena los 8 primeros campos en ese orden exacto:
12052026 + 01 + 1792146739001 + 2 + 001001 + 000000123 + 12345678 + 1Resultado:
120520260117921467390012001001000000123123456781(Conteo: 8 + 2 + 13 + 1 + 6 + 9 + 8 + 1 = 48 dígitos ✓)
Si tu cadena no mide exactamente 48 dígitos en este punto, revisa el padding con ceros de la fecha, el secuencial y la serie antes de continuar. Es el error más común.
Paso 3 — Calcula el dígito verificador con módulo 11
Este es el dígito que más cuesta entender. Es un check digit que se calcula sobre los 48 dígitos anteriores usando el algoritmo módulo 11, exactamente como funciona el dígito verificador del RUC.
El algoritmo:
- Toma los 48 dígitos anteriores (todo lo que armaste hasta el campo 8).
- Recorre los dígitos de derecha a izquierda.
- Multiplica cada dígito por un peso que cicla: 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, …
- Suma todos los productos.
- Calcula el residuo:
suma mod 11. - Aplica la regla:
- Si
11 − residuoes 10, el dígito verificador es1. - Si
11 − residuoes 11, el dígito verificador es0. - En cualquier otro caso, el dígito verificador es
11 − residuo.
- Si
Implementación en JavaScript:
function calcularDigitoVerificador(cadena48) { if (cadena48.length !== 48) { throw new Error("La cadena debe tener exactamente 48 dígitos") }
const pesos = [2, 3, 4, 5, 6, 7] let suma = 0
// Recorrer de derecha a izquierda for (let i = 0; i < cadena48.length; i++) { const digito = parseInt(cadena48[cadena48.length - 1 - i], 10) const peso = pesos[i % 6] suma += digito * peso }
const residuo = suma % 11 const resultado = 11 - residuo
if (resultado === 11) return 0 if (resultado === 10) return 1 return resultado}Implementación en Python:
def calcular_digito_verificador(cadena48: str) -> int: if len(cadena48) != 48: raise ValueError("La cadena debe tener exactamente 48 dígitos")
pesos = [2, 3, 4, 5, 6, 7] suma = sum( int(cadena48[-(i + 1)]) * pesos[i % 6] for i in range(48) ) residuo = suma % 11 resultado = 11 - residuo
if resultado == 11: return 0 if resultado == 10: return 1 return resultadoCon el ejemplo del paso anterior:
const cadena48 = "120520260117921467390012001001000000123123456781"const dv = calcularDigitoVerificador(cadena48)console.log(`Dígito verificador: ${dv}`)Paso 4 — Arma la clave final y valídala
claveDeAcceso = cadena48 + dv // 49 dígitosEsa es la cadena que va al elemento <claveAcceso> del XML que envías al SRI. Antes de enviar:
- Valida que
claveDeAcceso.length === 49. - Verifica que el dígito 26 (ambiente) coincida con el endpoint al que envías (pruebas o producción).
- Confirma que el secuencial no esté repetido en tu base de datos.
Si el SRI responde “clave de acceso inválida”, revisa la tabla de errores comunes ↓.
¿Realmente necesito armarla a mano?
No, si usas un sistema de facturación autorizado por el SRI: te lo arma automáticamente cada vez que emites un comprobante, incluyendo dígito verificador, firma XAdES-BES y envío al SRI.
Sí, si estás:
- Construyendo tu propio integrador con la API del SRI desde cero.
- Migrando datos de un sistema a otro y necesitas reconstruir claves para auditar.
- Debuggeando errores donde el SRI te dice “clave de acceso inválida” y necesitas saber qué dígito está mal.
Para todo lo demás, conviene usar un emisor autorizado y dedicar tu tiempo a tu negocio, no al módulo 11. Si te interesa cómo elegir uno, mira la guía completa de facturación electrónica y los requisitos del SRI.
Referencia campo por campo
La versión extendida de cada uno de los 9 campos: formatos, padding y códigos válidos.
Campo 1: Fecha de emisión (8 dígitos)
Formato ddmmaaaa. No es ISO ni con guiones: solo números, día primero. Padding con cero a la izquierda obligatorio.
- 12 de mayo de 2026 →
12052026 - 5 de enero de 2026 →
05012026(no5012026) - 31 de diciembre de 2025 →
31122025
Campo 2: Tipo de comprobante (2 dígitos)
Cada tipo de documento electrónico tiene su código:
| Código | Documento |
|---|---|
01 | Factura |
03 | Liquidación de compra de bienes o prestación de servicios |
04 | Nota de crédito |
05 | Nota de débito |
06 | Guía de remisión |
07 | Comprobante de retención |
Si pones 02 o cualquier otro código fuera de esa lista, el SRI rechaza el XML.
Campo 3: RUC del emisor (13 dígitos)
El RUC completo, exactamente como aparece en tu certificado de firma electrónica. Siempre 13 dígitos, terminando en 001, 002, etc., según el establecimiento.
- Persona natural:
1712345678001 - Sociedad:
1792146739001
No pongas guiones ni espacios. Si tu RUC es de persona natural y solo conoces la cédula (10 dígitos), agrégale 001 al final.
Campo 4: Tipo de ambiente (1 dígito)
| Código | Ambiente |
|---|---|
1 | Pruebas (SRI Certificación) |
2 | Producción |
Durante el desarrollo, siempre usa 1. El día que pases a producción cambias a 2. Mezclar ambientes es uno de los errores más típicos: emites con clave de pruebas y mandas al endpoint de producción, o al revés.
Campo 5: Serie (6 dígitos)
Concatenación de establecimiento (3 dígitos) + punto de emisión (3 dígitos). Ambos vienen del registro del contribuyente en el SRI.
- Establecimiento
001+ Punto de emisión001→001001 - Establecimiento
002+ Punto de emisión005→002005
Si abres una sucursal nueva, debes registrarla primero en SRI en línea (Trámites → Comprobantes → Establecimientos) y el SRI te asignará el número.
Campo 6: Secuencial del comprobante (9 dígitos)
Número consecutivo de tu facturación, por establecimiento y punto de emisión. Padding con ceros a la izquierda.
- Primera factura del punto de emisión:
000000001 - Factura número 123:
000000123 - Factura número 1.000.000:
001000000
El secuencial no puede repetirse dentro del mismo establecimiento + punto de emisión, aunque cambies de año o anules un comprobante. Si saltas un número (por ejemplo, vas del 122 al 124), el SRI no te marca error pero pierdes trazabilidad.
Campo 7: Código numérico (8 dígitos)
Número de control interno del emisor. La Ficha Técnica del SRI lo define como un número arbitrario que identifica unívocamente al comprobante dentro de tu sistema. No hay reglas estrictas sobre cómo generarlo, pero estas son las prácticas comunes:
- Aleatorio: 8 dígitos generados con un RNG (
Math.randomocrypto). - Hash truncado: primeros 8 dígitos numéricos de un UUID o hash interno.
- Secuencial paralelo: un contador independiente del secuencial oficial.
Lo importante es que no se repita para el mismo emisor en el mismo ambiente, porque la clave de acceso completa debe ser única.
Campo 8: Tipo de emisión (1 dígito)
| Código | Significado |
|---|---|
1 | Emisión normal (con conexión al SRI) |
2 | Emisión por contingencia (SRI caído o sin internet) |
El 99% de los comprobantes lleva 1. Solo se usa 2 cuando el SRI está caído y emites el comprobante físico con número de autorización propio, que luego debe regularizarse.
Campo 9: Dígito verificador (1 dígito)
El check digit calculado con módulo 11 sobre los 48 dígitos anteriores. El algoritmo completo con código está en el Paso 3 del paso a paso ↑.
Errores comunes al generar la clave de acceso
| Error | Síntoma | Solución |
|---|---|---|
Fecha en formato aaaammdd | XML rechazado con error de claveAcceso | Usar ddmmaaaa |
| Cédula de 10 dígitos en vez de RUC de 13 | Clave no valida | Concatenar 001 al final de la cédula |
| Padding de ceros faltante | Clave de menos de 49 dígitos | Validar .length === 49 antes de enviar |
Ambiente de pruebas (1) enviado a producción | SRI rechaza la autorización | Verificar que el dígito 26 coincida con el endpoint |
Dígito verificador hardcodeado en 0 | ”Clave de acceso inválida” | Implementar el módulo 11 correctamente |
| Secuencial duplicado | ”Comprobante ya autorizado” | Llevar un contador en BD con bloqueo transaccional |
Si lo que quieres es validar una clave de acceso ya generada (propia o ajena), el SRI tiene un consultor público: revisa cómo verificar la clave de acceso de una factura.
Preguntas frecuentes
¿Cuántos dígitos tiene la clave de acceso del SRI y cómo se compone?
La clave de acceso tiene exactamente 49 dígitos numéricos, formados por la concatenación de 10 campos: fecha de emisión (8), tipo de comprobante (2), RUC del emisor (13), tipo de ambiente (1), serie con establecimiento y punto de emisión (6), secuencial (9), código numérico (8), tipo de emisión (1) y dígito verificador (1) calculado con módulo 11 sobre los 48 dígitos anteriores.
¿Cómo se calcula el dígito verificador de la clave de acceso del SRI?
Se aplica el algoritmo módulo 11 sobre los 48 dígitos previos: se recorren de derecha a izquierda multiplicando cada uno por un peso que cicla en 2, 3, 4, 5, 6, 7. Se suman los productos, se calcula el residuo dividiendo entre 11 y el dígito verificador es 11 menos ese residuo. Casos especiales: si da 11 el dígito es 0, y si da 10 el dígito es 1.
¿En qué orden van los campos dentro de los 49 dígitos?
El orden fijo es: 1) fecha ddmmaaaa, 2) tipo de comprobante (01 factura, 04 nota crédito, 05 nota débito, 06 guía remisión, 07 retención, 03 liquidación), 3) RUC de 13 dígitos, 4) ambiente (1 pruebas, 2 producción), 5) establecimiento + punto de emisión, 6) secuencial de 9 dígitos, 7) código numérico de 8 dígitos, 8) tipo de emisión (1 normal, 2 contingencia), 9) dígito verificador.
¿Qué pasa si genero la clave de acceso con un dígito verificador incorrecto?
El SRI rechaza el XML antes de autorizarlo, con un error específico tipo 35 (clave de acceso inválida) o equivalente. La autorización nunca se emite, el comprobante no es válido y debes regenerar la clave con el dígito verificador correcto y reenviar. Por eso es crítico implementar el algoritmo módulo 11 exactamente como lo define la Ficha Técnica.
¿Necesito generar la clave de acceso manualmente para emitir facturas en Ecuador?
No, si usas un sistema de facturación electrónica autorizado por el SRI: el sistema arma la clave de 49 dígitos automáticamente, calcula el módulo 11, firma el XML con XAdES-BES y lo envía al SRI. Solo necesitas armarla manualmente si estás desarrollando tu propio integrador con la API del SRI desde cero o auditando claves existentes.
¿El código numérico de 8 dígitos puede ser cualquiera?
Sí, dentro de los 8 dígitos numéricos. La Ficha Técnica lo define como un número arbitrario que debe identificar de forma única al comprobante dentro del sistema del emisor. Las prácticas comunes son generarlo aleatoriamente, derivarlo de un UUID interno, o usar un contador secuencial paralelo. Lo único obligatorio es que no se repita y que respete el largo de 8 dígitos.
¿La clave de acceso cambia si emito en ambiente de pruebas o en producción?
Sí, en el dígito 26 (campo 4: tipo de ambiente). Si emites contra el ambiente de certificación o pruebas del SRI debe ser 1; si emites en producción debe ser 2. Mezclar valores genera errores de autorización: una clave con ambiente 1 enviada al endpoint de producción es rechazada y viceversa. Configura tu sistema para que cambie automáticamente al pasar a producción.
Fuentes oficiales consultadas (2026):
- Servicio de Rentas Internas — Facturación electrónica y Ficha Técnica de Comprobantes Electrónicos.
- Servicio de Rentas Internas — SRI en Línea.
Equipo Factuplan
Especialista en facturación electrónica
Equipo editorial de Factuplan, especializado en facturación electrónica y normativa tributaria del SRI.
Conocer al equipo