
Cómo generar la clave de acceso de 49 dígitos para el SRI
Manual paso a paso para generar la clave de acceso de 49 dígitos del SRI Ecuador: estructura, módulo 11, dígito verificador y ejemplo completo con cálculo.
La clave de acceso es la huella digital de cada comprobante electrónico en Ecuador: 49 dígitos que el SRI usa para identificar, autorizar y consultar tu factura. Si te dedicas a desarrollar un sistema de facturación, integrar con la API del SRI o entender por qué tu XML está siendo rechazado, necesitas dominar cómo se arma esa cadena.
Este manual desglosa campo por campo los 49 dígitos, explica cómo se calcula el dígito verificador con módulo 11 y cierra con un ejemplo completo que puedes correr en JavaScript.
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.
Estructura de los 49 dígitos
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.
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 cálculo crítico
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 paso a paso
- 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 resultadoEjemplo completo: armar una clave de acceso real
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 |
Paso 1: concatenar los 48 dígitos
12052026 + 01 + 1792146739001 + 2 + 001001 + 000000123 + 12345678 + 1Resultado:
120520260117921467390012001001000000123123456781(Conteo: 8 + 2 + 13 + 1 + 6 + 9 + 8 + 1 = 48 dígitos ✓)
Paso 2: aplicar el algoritmo módulo 11
const cadena48 = "120520260117921467390012001001000000123123456781"
const dv = calcularDigitoVerificador(cadena48)
console.log(`Dígito verificador: ${dv}`)Paso 3: armar la clave final
claveDeAcceso = cadena48 + dv // 49 dígitosEsa es la cadena que va al elemento <claveAcceso> del XML que envías al SRI.
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 |
¿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.
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.
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 equipoArtículos relacionados

Cómo no perder mis facturas del anterior sistema
Cambiar de software de facturación electrónica sin perder tus XMLs históricos: checklist antes de migrar, plazos del SRI y cómo pasar a Factuplan.

Métodos de pago en la factura electrónica del SRI
Códigos de forma de pago del SRI para facturas electrónicas en Ecuador: tabla completa, ejemplos por escenario y reglas de bancarización 2026.

Métodos de pago en la factura: qué medios aceptar en Ecuador 2026
Qué métodos de pago ofrecer a tus clientes en Ecuador 2026: DeUna, PayPhone, Datafast, Kushki, POS y transferencias. Comisiones reales y código SRI.
Empieza a facturar electrónicamente hoy
1 mes gratis al comprar tu firma electrónica con FirmaOK. Sin tarjeta de crédito, sin compromiso.
