Facturación electrónica · Ecuador

Emite comprobantes electrónicos
desde tu código, en minutos.

API REST, webhooks firmados y automatizaciones visuales. Diseñado para developers que no quieren pelearse con SOAP, claves de acceso ni timeouts del ente tributario.

  • Gratis hasta 200 comprobantes al año, sin tarjeta.
  • SDKs oficiales en TypeScript, Python y Go.
  • Soporta ambiente de pruebas del ente tributario.
emitir-factura.sh 200 OK
curl -X POST https://api.emitoo.io/api/v1/facturas/ \
  -H "X-API-Key: $EMITOO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tipo_identificacion": "04",
    "identificacion": "0991234567001",
    "razon_social": "ACME S.A.",
    "detalles": [
      { "codigo_principal": "LIC-1", "descripcion": "Licencia mensual",
        "cantidad": 1, "precio_unitario": 75.00, "tarifa_iva": 15 }
    ]
  }'

POST /api/v1/facturas · respuesta inmediata con la factura en estado PENDIENTE.

Features

Todo lo que necesitas para
emitir, firmar y automatizar.

Diseñado para engineers: la lógica del ente tributario (XML, firma digital, SOAP) vive en el backend. Tú solo consumes una API limpia.

API REST primero

Endpoints REST versionados (/api/v1) con OpenAPI 3.1 generada automáticamente. SDKs oficiales en TypeScript, Python y Go; autenticación por API keys con prefijo fpk_…

Async por diseño

POST retorna en milisegundos con la factura en estado PENDIENTE. El envío al ente tributario corre en background — sin timeouts en tu cliente. Polling o webhooks para enterarte.

Webhooks firmados

Recibe factura.autorizada, factura.rechazada, cliente.creado y más en tu endpoint, con firma HMAC y reintentos automáticos. Idempotency-Key para reintentos seguros.

Automatizaciones tipo n8n

Editor visual de workflows: triggers (evento, cron, webhook), nodos HTTP, condicionales, transformaciones JS, envío de email/RIDE, notificaciones Slack/WhatsApp/Telegram.

RBAC dinámico

Roles con permisos por path + método HTTP, modificables en caliente desde la API. Multi-tenant con aislamiento por sucursal y scope por usuario.

Auditoría completa

Cada request queda registrada: actor, método, recurso, status, IP, user-agent y duración. Filtrable y consultable. Tus API keys, tus reglas, tu trazabilidad.

API Reference

Una API limpia. La lógica del ente tributario, abstraída.

OpenAPI 3.1 autogenerada, versionada en /api/v1, idempotente con Idempotency-Key. Auth por API keys fpk_… atadas a un rol.

  • POST /api/v1/facturas Crear comprobante (async)
  • GET /api/v1/facturas/{id} Obtener factura
  • GET /api/v1/facturas/{id}/status Estado de procesamiento
  • POST /api/v1/facturas/{id}/reenviar Reintentar envío
  • GET /api/v1/facturas/{id}/ride RIDE en PDF
  • POST /api/v1/facturas/{id}/email Enviar comprobante por email

Webhook firmado — listo para producción

Cada evento incluye X-Emitoo-Signature (HMAC-SHA256) para que puedas verificar el origen sin dudar.

factura.autorizada.json webhook
// POST https://tu-app.com/webhooks/emitoo
// X-Emitoo-Signature: t=1719700000,v1=4f3b…
// X-Emitoo-Event:   factura.autorizada
{
  "event": "factura.autorizada",
  "data": {
    "factura_id": 177,
    "numero": "001-001-000000177",
    "clave_acceso": "2907202507…",
    "autorizacion": "2025072909123456789012345678901234567890123",
    "total": 172.50,
    "cliente": { "ruc": "0991234567001" },
    "ride_url": "/api/v1/facturas/177/ride"
  }
}
Arquitectura

Tolerante a la latencia del ente tributario, de extremo a extremo.

Tu cliente nunca espera un timeout del ente tributario. El procesamiento corre en segundo plano; tú recibes el resultado por webhook o polling.

  1. 01 Tu código POST /api/v1/facturas
  2. 02 Emitoo API Guarda PENDIENTE · < 50 ms
  3. 03 Worker XML + firma digital
  4. 04 Ente tributario SOAP recepción → autorización

Estados de un comprobante

  1. PENDIENTERecibida por la API, en cola para el ente tributario.
  2. PROCESANDOFirma XAdES-BES y SOAP en curso.
  3. AUTORIZADOEnte tributario devolvió número de autorización + RIDE disponible.
  4. RECHAZADOEnte tributario rechazó; body con motivo, retry con un POST /reenviar.
Workflows

Automatiza el ciclo de facturación
sin escribir backend a medida.

Editor visual estilo n8n, alimentado por los mismos eventos que disparan los webhooks. Corre en un worker dedicado con historial por ejecución.

Triggers

  • Evento factura.autorizada, factura.rechazada, cliente.creado…
  • Cron Ejecución programada (APScheduler en worker dedicado).
  • Webhook Trigger por HTTP entrante con verificación de firma.
  • Manual POST /workflows/{id}/run desde tu código o dashboard.

Nodos de acción

  • HTTP / Webhook Llama cualquier endpoint o recibe webhooks.
  • Email Envía RIDE y comprobantes con plantilla.
  • JS Sandbox Transforma payloads con JavaScript aislado.
  • Condicional Branching basado en reglas del payload.
  • Espera Delay o wait until condition.
  • Slack / Telegram Notificaciones al canal que uses.

Ejecución con reintentos y dead-letter.

Cada run persiste inputs y outputs por nodo, con duración, estado y error. Worker desacoplado (BlockingScheduler, instancia única) que no bloquea la API.

Probar el editor
Seguridad

Pensado para producción, no para demos.

Firma criptográfica real, claves con hash, permisos granulares y verificación de webhooks con timing-safe equality.

Certificado nunca sale del backend

El .p12 y su contraseña viven en el servidor (volumen/secreto + variables de entorno). Ni el frontend ni la API pública los tocan.

API keys con prefijo visible

Tokens fpk_… atados a un rol, con hash en BD, expiración y revocación. Se muestran una sola vez al crearlas.

Permisos por path + método

RBAC dinámico, modificable en caliente vía PUT /roles/{id}/permissions. Sin redeploys para cambiar quién accede a qué.

Auditoría por request

Cada llamada registra actor, recurso, status, IP, user-agent y duración. Filtrable desde la API o el panel admin.

Webhooks firmados HMAC

Cabecera X-Emitoo-Signature (HMAC-SHA256) en cada evento saliente. Reintentos con backoff exponencial.

Idempotency-Key

POST idempotentes con tu propio Idempotency-Key. Reintentos seguros aunque el cliente reciba timeout.

verify-webhook.ts snippet
// Verificar la firma de un webhook con el SDK
import { verificarFirma } from "emitoo";

app.post(
  "/webhooks/emitoo",
  express.raw({ type: "*/*" }),
  async (req, res) => {
    const valida = await verificarFirma({
      header: req.headers["x-emitoo-signature"],
      body: req.body, // cuerpo crudo, sin parsear
      secret: process.env.EMITOO_WEBHOOK_SECRET,
    });
    if (!valida) return res.status(401).end();

    const evento = JSON.parse(req.body.toString());
    // evento.evento === "factura.autorizada"
    res.sendStatus(200);
  },
);

// HMAC-SHA256 en tiempo constante + anti-replay de 5 min.
// Disponible también: emitoo.verificar_firma (Python)
// y emitoo.VerificarFirma (Go).
Pricing

Empieza gratis. Escala cuando lo necesites.

Planes anuales, sin sorpresas. El ambiente de pruebas es gratis e ilimitado siempre, y tus documentos y descargas nunca se bloquean.

Gratis

Para emprendedores y para integrar la API con calma.

$0 / año

200 comprobantes/año incluidos

Crear cuenta gratis
  • 200 comprobantes al año (de cualquier tipo)
  • API completa de prueba por 90 días
  • Ambiente de pruebas ilimitado y gratis siempre
  • Contabilidad automática, inventario y POS incluidos
  • Portal de documentos para tus clientes
  • Webhooks firmados y automatizaciones

Te avisamos al 80% del cupo. Al llegar al 100% solo se pausa la emisión de nuevos comprobantes — tus documentos siguen disponibles.

Empresarial

Para corporativos, plataformas y estudios contables.

Personalizado / anual

Desde $990/año — el precio por comprobante baja con tu volumen

Contactar con ventas
  • 36.000 comprobantes/año incluidos y sin bloqueo por volumen
  • Excedente por tramos: baja hasta $0.012 por comprobante
  • Multi-RUC (grupos empresariales y estudios contables)
  • SLA 99.9% y soporte prioritario
  • Sandbox ilimitado para tu equipo de desarrollo
  • Onboarding dedicado y factura consolidada

Cuéntanos tu volumen y armamos el plan: fee base anual + consumo por tramos, multi-RUC y SLA por contrato.

¿Qué pasa cuando llego a los 200 comprobantes gratis?

Te avisamos al 80% y al 100%. Al llegar al cupo solo se pausa la emisión de comprobantes nuevos — tus documentos, descargas y el portal de tus clientes siguen funcionando siempre. Pasas a Negocio en un clic ($190/año) y sigues donde quedaste.

¿Cómo funciona el API en el plan gratis?

Tienes la API completa por 90 días desde tu primer comprobante real emitido por API — tiempo de sobra para integrar y probar. El ambiente de pruebas no consume el trial ni el cupo.

¿Cobran por usuario o por sucursal?

No. Usuarios y sucursales son ilimitados en todos los planes; en Empresarial también se incluyen varios RUCs (grupos empresariales y estudios contables).

¿Puedo emitir en ambiente de pruebas sin consumir mi cupo?

Sí. El ambiente de pruebas del ente tributario es ilimitado y gratuito — útil para CI y para validar tu firma XAdES-BES antes de salir a producción.

Contacto

Hablemos.

Te respondemos en menos de 24 horas hábiles. Para devoluciones técnicas, WhatsApp es más rápido; para ventas y onboarding, el formulario.

Envíanos un mensaje

Te contestamos al correo. Si es sobre el plan Empresarial, te contactamos por WhatsApp también.

Protegido por reCAPTCHA v3 · Privacidad · Términos

Empieza hoy

Tu próxima factura electrónica,
en cinco líneas de código.

Crea una cuenta, genera tu API key fpk_… y emite tu primer comprobante contra el ambiente de pruebas del ente tributario.