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

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

  • Gratis hasta 120 comprobantes al año, sin tarjeta.
  • SDKs oficiales en TypeScript, Python y Go.
  • Servidor MCP: conecta Claude o ChatGPT a tus datos, solo lectura.
  • Soporta ambiente de pruebas del ente tributario.
curl https://api.emitoo.io/api/v1/facturas/ \
  -X POST \
  -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, y un servidor MCP para que Claude, ChatGPT o tu agente consulten tus datos.

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, webhook, manual), 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"
  }
}
Servidor MCP · Asistentes IA

Tu asistente IA, conectado a tus comprobantes.

Emitoo expone un servidor MCP. Claude, ChatGPT, Cursor o tu propio agente consultan facturas, ventas, clientes, compras y cobros en lenguaje natural. Solo lectura: ninguna herramienta emite ni modifica nada.

Claude.ai y ChatGPT

Pega la URL como conector. El host se registra solo (OAuth 2.1 + PKCE) y un administrador de la empresa aprueba en el panel. Sin claves que copiar.

Claude Code, Cursor, Claude Desktop

Crea una conexión en el panel y pega la clave fmk_… como Bearer. Un comando o tres líneas de JSON.

Tu propio agente

MCP estándar sobre Streamable HTTP: discovery well-known, registro dinámico y 24 herramientas anotadas readOnlyHint. Funciona con cualquier cliente MCP.

  • Solo lectura
  • OAuth 2.1 + PKCE
  • 24 herramientas
  • Una empresa por conexión
  • Auditado
Documentación del servidor MCP
claude mcp
$ claude mcp add --transport http emitoo https://api.emitoo.io/mcp \
    --header "Authorization: Bearer fmk_…"

> ¿Cuánto facturé en septiembre y quién me debe?

  ⚙ ventas_periodo(desde="2026-09-01", hasta="2026-09-30")
  ⚙ listar_facturas(con_saldo=true)

  En septiembre facturaste $18.240,50 en 32 facturas autorizadas.
  Tienes $2.310,00 por cobrar en 4 facturas: ACME S.A. ($1.500,00,
  vence el 30/09), Ferretería Norte ($810,00)…
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…
  • 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.

La API y las automatizaciones están incluidas en todos los planes, incluido el gratis. El ambiente de pruebas no consume cupo, y tus documentos nunca se bloquean.

Gratis

Para empezar a facturar sin pagar nada.

$0 / año

120 comprobantes/año 10 al mes

Crear cuenta gratis
  • API REST y automatizaciones incluidas
  • Proformas y reportes
  • 2 usuarios · 1 sucursal
  • Ambiente de pruebas ilimitado y gratis
  • Portal de documentos para tus clientes

Sin tarjeta. Te avisamos al 80% del cupo; al llegar al 100% solo se pausa la emisión — tus documentos siguen disponibles.

Facturación

Para quien solo necesita emitir y controlar lo que entra y sale.

$120 / año

1.200 comprobantes/año 120 al mes o $12/mes

Empezar
  • Todo lo del plan Gratis
  • Compras y cuentas por pagar
  • Cobros y cartera
  • 3 usuarios · 1 sucursal
  • RUC adicional: $60/año

15 días de prueba. Durante la prueba se emite contra el ambiente de pruebas del SRI.

Contable

Reemplaza el sistema contable, no solo el facturador.

$420 / año

12.000 comprobantes/año 1.000 al mes o $45/mes

Empezar
  • Todo lo del plan Pyme
  • Contabilidad completa y balances
  • ATS y formulario 101
  • Nómina
  • 10 usuarios · 5 sucursales

15 días de prueba. RUC adicional: $120/año.

Empresarial

Corporativos, plataformas y estudios contables.

$890 / año

Sin tope de comprobantes el excedente se factura por tramos o $89/mes

Hablar con ventas
  • Todo lo del plan Contable, más POS
  • Usuarios y sucursales ilimitados
  • 3 RUCs incluidos (+$100/año cada uno)
  • Excedente: $0,030 → $0,020 → $0,012 por comprobante
  • Sin bloqueo por volumen

El precio por comprobante baja con tu volumen: $0,030 hasta 120.000, $0,020 hasta 600.000 y $0,012 en adelante.

¿Qué pasa cuando llego al cupo de mi plan?

Te avisamos al 80% y al 100%. Al llegar al tope solo se pausa la emisión de comprobantes nuevos — tus documentos, descargas y el portal de tus clientes siguen funcionando. Cambias de plan y sigues donde quedaste.

¿La API cuesta aparte?

No. La API REST, los webhooks firmados y las automatizaciones están incluidas en todos los planes, incluido el gratis. Los comprobantes que emitas por API consumen el mismo cupo que los de la app.

¿Cuántos usuarios y sucursales incluye?

Depende del plan: Gratis 2 usuarios y 1 sucursal, Facturación 3 y 1, Pyme 5 y 3, Contable 10 y 5. En Empresarial son ilimitados y además incluye 3 RUCs para grupos empresariales y estudios contables.

¿El ambiente de pruebas consume mi cupo?

No. Solo cuentan los comprobantes emitidos en producción. El ambiente de pruebas del SRI es ilimitado y gratuito — útil para CI y para validar tu firma antes de salir a producción.

¿Cómo funciona la prueba de 15 días?

Los planes de pago incluyen 15 días de prueba. Durante ese periodo emites contra el ambiente de pruebas del SRI; al registrar el pago se habilita producción. Si no pagas, la cuenta cae al plan Gratis sin perder nada.

¿El plan anual sale más barato?

Sí. Pagando al año ahorras frente a doce meses sueltos: Facturación son $120 en vez de $144, y Pyme $240 en vez de $300. También puedes pagar mes a mes si prefieres.

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.