Saltar al contenido
Factuplan
Pantalla de laptop mostrando una secuencia de 49 dígitos numéricos resaltados sobre líneas de código, con manos de un desarrollador escribiendo

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.

· 10 min de lectura · Equipo Factuplan
Compartir:

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.

⬇ Ir directo al paso a paso

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

  1. Fecha de emisión del comprobante.
  2. Tipo de comprobante (factura, nota de crédito, nota de débito, retención, guía, liquidación).
  3. RUC del emisor completo, de 13 dígitos.
  4. Ambiente (pruebas o producción) y tipo de emisión (normal o contingencia).
  5. 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:

#CampoLargoEjemplo
1Fecha de emisión812052026
2Tipo de comprobante201
3RUC del emisor131792146739001
4Tipo de ambiente12
5Serie (estab + pto. emisión)6001001
6Secuencial del comprobante9000000123
7Código numérico812345678
8Tipo de emisión11
9Dígito verificador (módulo 11)1?
Total49

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:

CampoValor
Fecha12 de mayo de 2026
Tipo de comprobanteFactura
RUC1792146739001
AmbienteProducción
Establecimiento001
Punto de emisión001
Secuencial123
Código numérico12345678
Tipo de emisiónNormal

Concatena los 8 primeros campos en ese orden exacto:

12052026 + 01 + 1792146739001 + 2 + 001001 + 000000123 + 12345678 + 1

Resultado:

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:

  1. Toma los 48 dígitos anteriores (todo lo que armaste hasta el campo 8).
  2. Recorre los dígitos de derecha a izquierda.
  3. Multiplica cada dígito por un peso que cicla: 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, …
  4. Suma todos los productos.
  5. Calcula el residuo: suma mod 11.
  6. Aplica la regla:
    • Si 11 − residuo es 10, el dígito verificador es 1.
    • Si 11 − residuo es 11, el dígito verificador es 0.
    • En cualquier otro caso, el dígito verificador es 11 − residuo.

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 resultado

Con 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ígitos

Esa 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.

Factuplan — activa tu cuenta y emite tu primera factura electrónica autorizada por el 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 (no 5012026)
  • 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ódigoDocumento
01Factura
03Liquidación de compra de bienes o prestación de servicios
04Nota de crédito
05Nota de débito
06Guía de remisión
07Comprobante 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ódigoAmbiente
1Pruebas (SRI Certificación)
2Producció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ón 001001001
  • Establecimiento 002 + Punto de emisión 005002005

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.random o crypto).
  • 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ódigoSignificado
1Emisión normal (con conexión al SRI)
2Emisió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

ErrorSíntomaSolución
Fecha en formato aaaammddXML rechazado con error de claveAccesoUsar ddmmaaaa
Cédula de 10 dígitos en vez de RUC de 13Clave no validaConcatenar 001 al final de la cédula
Padding de ceros faltanteClave de menos de 49 dígitosValidar .length === 49 antes de enviar
Ambiente de pruebas (1) enviado a producciónSRI rechaza la autorizaciónVerificar 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):

Compartir:

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