API SRI para facturación electrónica
Capa REST sobre los webservices SOAP del SRI Ecuador. Esquema offline vigente, los 3 modos A/B/C, transmisión inmediata 2026 y manejo estructurado de errores SRI. Sin armar XMLs ni firmar XAdES-BES por tu cuenta.
import { Factuplan } from "factuplan"
const factuplan = new Factuplan(process.env.FACTUPLAN_API_KEY!, {
ruc: "0993378150001",
})
try {
const factura = await factuplan.invoices.create({
customer: {
identificationType: "RUC",
identification: "0950194407001",
legalName: "Cliente Demo S.A.",
email: "facturas@cliente.ec",
},
items: [
{
description: "Servicio de consultoría",
quantity: 1,
unitPrice: 500,
taxType: "IVA_RATE",
tax: 15,
},
],
sendEmail: true,
})
console.log("Clave de acceso SRI:", factura.accessKey) // 49 dígitos
console.log("Estado SRI:", factura.status) // AUTHORIZED
} catch (err) {
if (err instanceof FactuplanSRIError) {
// Error específico del SRI con código del catálogo
console.error("SRI rechazó:", err.sriCode, err.sriMessage)
// Ej: { sriCode: "43", sriMessage: "CLAVE DE ACCESO REGISTRADA" }
}
}Por qué usar API de Factuplan en lugar de integrar directo con el SRI
La API REST del SRI no existe — el SRI expone webservices SOAP con XMLs firmados XAdES-BES. Integrar directo es desarrollo de 2-6 meses con un team experto. Factuplan te entrega esa capa.
Esquema offline SRI desde 2022
Implementación completa del esquema offline vigente desde 2022 con la Ficha Técnica v2.32 (noviembre 2025). Generación de XML, firma XAdES-BES con tu P12, envío al SRI y manejo de respuestas — todo manejado por la API.
Modos A, B y C del SRI
Soporte de los 3 modos definidos por el SRI: Modo A (Factuplan firma + autoriza + envía email), Modo B (tú generas XML, nosotros firmamos y autorizamos), Modo C (tú gestionas transmisión al SRI). Misma API key para los 3.
Transmisión inmediata 2026
Cumple por defecto con la Resolución NAC-DGERCGC25-00000017: todos los comprobantes (facturas, NC, ND, retenciones, guías) se transmiten al SRI en tiempo real, antes de iniciar la operación.
Manejo estructurado de errores SRI
Respuestas JSON con el código de error del catálogo SRI (sriCode), mensaje, observaciones detalladas y posibles correcciones. Sin parsear respuestas SOAP heterogéneas como con la API directa del SRI.
Firma electrónica gestionada
Carga tu P12 una vez en el dashboard de Factuplan. La firma se almacena cifrada con AES-256-GCM aislada por cuenta. Cada XML enviado al SRI se firma automáticamente sin que tu app vea el certificado.
Clave de acceso de 49 dígitos generada
Factuplan calcula la clave de acceso correctamente con dígito verificador módulo 11. Sin errores 43 del SRI por claves mal generadas, sin código aleatorio repetido, sin estructuras incorrectas.
Operaciones SRI soportadas
Cobertura completa del catálogo del SRI Ecuador. Todos los comprobantes electrónicos + ciclo de vida (emisión, consulta, anulación).
| Método | Endpoint | Operación |
|---|---|---|
| POST | /v1/developer/invoices | Emitir factura electrónica al SRI |
| POST | /v1/developer/credit-notes | Emitir nota de crédito (con documento sustento vinculado) |
| POST | /v1/developer/debit-notes | Emitir nota de débito |
| POST | /v1/developer/waybills | Emitir guía de remisión con transmisión inmediata 2026 |
| POST | /v1/developer/withholdings | Emitir comprobante de retención |
| POST | /v1/developer/purchase-liquidations | Emitir liquidación de compra de bienes y servicios |
| GET | /v1/developer/invoices/:id | Obtener estado SRI de un comprobante (PPR, AUT, RECHAZADO) |
| POST | /v1/developer/invoices/:id/void | Anular factura emitiendo NC del 100% del monto (no aplica a consumidor final desde 2026) |
Referencia técnica completa con schemas, payloads y respuestas en /docs/api.
Validaciones SRI manejadas automáticamente
La API valida localmente lo que el SRI rechazaría y devuelve errores estructurados cuando aplica.
Validaciones locales antes de enviar al SRI
- Dígito verificador del RUC del cliente (módulo 10/11 según tipo)
- Tipo de identificación correcto (RUC=13 dígitos, cédula=10)
- Tarifas de IVA del catálogo SRI (0%, 5%, 8%, 15%, exento, no objeto)
- Códigos ICE e IRBPNR del catálogo según producto
- Cálculo correcto del IVA en cascada con ICE/IRBPNR
- Tope consumidor final según régimen (USD 50 / USD 200 RIMPE)
- Secuenciales consecutivos sin saltos ni duplicados
- Clave de acceso de 49 dígitos con módulo 11 correcto
Errores del SRI manejados
- Error 35: firma electrónica inválida (certificado vencido)
- Error 39: firmas no coinciden (RUC del certificado distinto al emisor)
- Error 43: clave de acceso no cumple con formato (módulo 11 mal)
- Error 45: datos de emisor incorrectos (establecimiento no registrado)
- Error 50: secuencial duplicado (ya emitido antes)
- Error 52: comprobante referenciado no existe (NC sin factura válida)
- Error 60: establecimiento cerrado en el SRI
- Error 70: XML no cumple el schema XSD del SRI
Estados de comprobantes en el SRI
Los 4 estados posibles bajo el esquema offline. Tu API recibe el estado actual en cada response y vía webhooks cuando cambia.
PPREn procesamiento
El SRI recibió el XML y está validando. Máximo legal 24 horas; típicamente 2-5 segundos en horarios normales.
AUTAutorizado
El SRI validó todo y el comprobante quedó registrado con número de autorización = clave de acceso de 49 dígitos.
REJECTEDRechazado
El SRI rechazó por incumplir validaciones (firma, datos, secuencial, etc.). Debe corregirse y reenviarse con secuencial nuevo.
RETURNEDDevuelto
El SRI no pudo procesar el XML por errores estructurales (XML mal formado, schema incorrecto). Igual que rechazado para efectos prácticos.
¿Estás evaluando si Factuplan API te conviene?
Esta página cubre el ángulo integración técnica con el SRI. Para la propuesta comercial general (pricing, casos de uso, comparativa con otras APIs), revisa la landing comercial de la API. Para la referencia técnica detallada de cada endpoint, abre las docs.
Landing comercial /api
Propuesta de valor, comparativa con otras APIs ecuatorianas, pricing y casos de uso por vertical.
Ver landingDocs técnicas /docs/api
Referencia completa con schemas JSON, validaciones, códigos de error y ejemplos por endpoint.
Abrir docsHub developers
Acceso rápido a Docs, SDK Node/TS, Postman Collection, snippets en 6 lenguajes, changelog y comunidad.
Ver hub¿Qué hace exactamente la API de Factuplan con el SRI?
Factuplan API es una capa sobre los webservices SOAP del SRI Ecuador que simplifica la integración a una API REST moderna con JSON. Internamente: 1) Recibe tu request JSON con datos de la operación; 2) Valida datos localmente (dígito verificador RUC, tarifas IVA, tope consumidor final, etc.); 3) Genera el XML según la Ficha Técnica del SRI v2.32; 4) Firma el XML con XAdES-BES usando tu certificado P12 cargado en el workspace; 5) Envía al webservice SOAP del SRI (recepción + autorización); 6) Parsea la respuesta y la devuelve en JSON estructurado con el código de error del SRI si aplica; 7) Genera el RIDE PDF y envía email al cliente si lo configuras. Todo el proceso es de 2-5 segundos típicos.
¿Cuál es la diferencia entre integrar directamente con el SRI vs usar Factuplan API?
Integrar directo con el SRI requiere: 1) Cliente SOAP en tu stack (XML, WSDL, namespaces); 2) Generación manual de XMLs respetando schemas XSD del SRI y la Ficha Técnica v2.32; 3) Firma XAdES-BES con librerías de criptografía (extraer P12, firmar con SHA-256, agregar timestamp, validar canónicamente); 4) Cálculo manual de la clave de acceso de 49 dígitos con módulo 11; 5) Manejo de errores SOAP con códigos del SRI mal documentados; 6) Reintentos cuando el SRI cae; 7) Generación del RIDE PDF y envío de email. Es desarrollo de 2-6 meses con un team experto. Factuplan API te entrega todo eso en una API REST estándar que llamas desde cualquier lenguaje en minutos.
¿Cuáles son los modos A, B y C del SRI?
Son las 3 formas de operar definidas por el SRI: Modo A (recomendado, default en Factuplan): el sistema de facturación electrónica genera el XML, lo firma con tu P12, lo autoriza ante el SRI y genera el RIDE PDF — flujo end-to-end automatizado. Modo B: tú generas el XML por tu cuenta (útil si tu ERP ya tiene un generador de XMLs SRI) y se lo envías a Factuplan, que lo firma y autoriza. Modo C: tú generas Y firmas el XML con tu propia integración criptográfica, y Factuplan solo gestiona la transmisión al SRI. Los 3 modos usan la misma API key y se eligen por endpoint o parámetro según convenga a tu arquitectura. La mayoría de integraciones usan Modo A porque es más simple.
¿Qué pasa si el SRI está caído y necesito facturar?
El SRI define un mecanismo de contingencia: emites el comprobante con tipo de emisión 2 (en lugar de 1 = normal) en la clave de acceso, entregas el RIDE preliminar al cliente, y cuando el SRI vuelve, reenvías el XML para autorización formal. Factuplan API maneja esto automáticamente: si detecta que el SRI no responde, activa modo contingencia, devuelve el comprobante en estado PENDING con la clave de acceso de 49 dígitos generada, y cuando el SRI vuelve a estar disponible, reenvía la cola pendiente. Tu app puede operar normalmente sin bloquear ventas durante caídas del SRI. Recibes el evento invoice.authorized vía webhook cuando el SRI finalmente autoriza.
¿Cómo verifico el estado SRI de un comprobante después de emitirlo?
Tres formas: 1) Asincrónica via webhooks: configuras tu endpoint en Dashboard → Developer → Webhooks y recibes invoice.authorized o invoice.rejected con la respuesta completa del SRI cuando esté lista. Es lo recomendado para producción. 2) Sincrónica via GET /v1/developer/invoices/:id que retorna el estado actual y, si fue rechazado, el sriCode y sriMessage. 3) Manual con la herramienta /herramientas/verificar-factura-sri usando la clave de acceso de 49 dígitos. El estado AUT confirma que el SRI registró el comprobante exitosamente; PPR es transitorio (esperando autorización); REJECTED/RETURNED requieren corregir y reenviar con secuencial nuevo.
¿Qué errores del SRI maneja la API automáticamente?
Factuplan API valida localmente antes de enviar al SRI para evitar errores comunes: dígito verificador del RUC del cliente (rechazo evitado), tarifa IVA fuera de catálogo, secuencial duplicado (detectado contra tu histórico), tope de consumidor final excedido, formato de clave de acceso incorrecto. Para errores del SRI que llegan en la respuesta (firma vencida, certificado emitido para otro RUC, datos del establecimiento desactualizados, etc.), la API devuelve un FactuplanSRIError con sriCode del catálogo SRI y sugerencia de corrección. No te rechaza silenciosamente — siempre sabes exactamente qué pasó y cómo arreglarlo.
¿Puedo emitir todos los comprobantes electrónicos del SRI?
Sí. La API soporta los 6 tipos de comprobantes electrónicos definidos por el SRI: facturas (código 01), liquidaciones de compra de bienes y servicios (03), notas de crédito (04), notas de débito (05), guías de remisión (06) y comprobantes de retención (07). Cada tipo tiene su endpoint REST dedicado (/v1/developer/invoices, /credit-notes, /debit-notes, /waybills, /withholdings, /purchase-liquidations) con el payload específico que define la Ficha Técnica del SRI. Todos pasan por el mismo flujo de firma y autorización, con la misma autorización oficial del SRI y la misma clave de acceso de 49 dígitos.
¿La API funciona en sandbox sin firma electrónica real?
Sí. Con una API key de pruebas (prefijo ak_test_*) la API genera comprobantes ficticios que NO se envían al SRI real — la firma se simula y la 'autorización' se simula con clave de acceso ficticia. Los comprobantes de sandbox se eliminan automáticamente cada hora para mantener el ambiente limpio. Esto permite que developers prueben la integración completa sin necesidad de obtener firma electrónica P12 ni RUC activo. Cuando estés listo para producción, cambias la API key por ak_live_*, cargas tu firma real en el dashboard y los comprobantes empiezan a enviarse al SRI real con autorización oficial.
Empieza a facturar electrónicamente hoy
1 mes gratis al comprar tu firma electrónica con FirmaOK. Sin tarjeta de crédito.
- Empresas activas
- +1.000
- Calificación clientes
- 4.9/5
- Tiempo de onboarding
- <1 día
- Disponibilidad SRI
- 24/7
- Configuración en minutos
- Cancela cuando quieras
- Soporte en español ecuatoriano
