Changelog
Novedades de la API, SDKs y dashboard. Las versiones siguen SemVer: los breaking changes siempre incrementan el major.
v1.5.0 — 2026-10-08
Added
- Pagos y
cobros con cruce: campo
cruce(líneascuenta_id,monto,tercero_id,descripcion) para cancelar documentos contra cuentas contables en vez de caja/bancos. Exigemedio"15", sincuenta_dinero_id, Σ líneas igual amontoal centavo y aplicado completo (no deja anticipo). La respuesta traecruce_lineas. - Anticipos a proveedores
(espejo de los de clientes):
GET /api/v1/pagos-proveedor/anticipos,POST /api/v1/pagos-proveedor/{id}/aplicar-anticipoyDELETE /api/v1/pagos-proveedor/{id}/aplicaciones/{aplicacion_id}. El pago traemonto_anticipoysaldo_anticipo; cada aplicación,liquidacion_id,desde_anticipoyfecha_aplicacion. - Fechas contables: cambiar la fecha
de un registro ya hecho con
PATCH …/fechaen pagos, cobros, transacciones bancarias, transferencias y movimientos manuales. Mueve el dinero y el asiento (sin rehacerlo) y responde{ fecha, asiento_movido, avisos }. - Las anulaciones aceptan una
fechaopcional para el reverso: en el body de pagos, cobros, transacciones y transferencias; como query enDELETE /api/v1/compras/{id}y al deshacer aplicaciones de anticipos. Reglas: no futura, no antes del documento, período abierto y fuera de una conciliación bancaria cerrada (400). - Propina en facturas: campo
propina(≥ 0), solo para empresas marcadas como restaurante, bar u hotel. Suma al total y aimporteTotal, va en<propina>del XML y se imprime en el RIDE. No se admite enPOST /api/v1/facturas/lote. POST /api/v1/retenciones/{id}/reenviar: re-encola una retenciónDEVUELTA,RECHAZADOo colgada. Una retención que quedó enBORRADORde una versión anterior responde409(anúlala y emítela de nuevo).- Líneas que restan del
total en egresos e ingresos bancarios:
contrario: trueenlineas[]lleva la línea al otro lado del asiento (p. ej. intereses netos de la retención). Total = Σ normales − Σ contrarias > 0. PATCH /api/v1/compras/{id}aceptafecha_emisionpara corregir la fecha de emisión.
Changed
- Todos los XML (factura, NC, ND, guía,
retención y liquidación) llevan en
infoAdicionalel campoRUC Proveedor=0993411199001, el proveedor del sistema, exigido por el SRI desde el 26-sep-2026. No tienes que enviarlo. POST /api/v1/pagos-proveedor:aplicacionespuede ir vacío y Σmonto_aplicadopuede ser menor quemonto; la diferencia queda como anticipo. Antes Σ tenía que cuadrar conmonto; los clientes que ya lo hacían no cambian su comportamiento.- Cobros y pagos sin
cuenta_dinero_idusan la única cuenta activa del tipo del medio (01caja,16/19tarjeta,20banco). Si hay varias o ninguna, se registran sin cuenta como antes. - La
fechade cobros, pagos, transacciones bancarias, transferencias y movimientos manuales ya no puede ser futura ni caer en un período contable cerrado (400). Sinfecha, el reverso de anular un cobro, pago, transacción o transferencia usa la fecha del documento si su período sigue abierto (antes, la de hoy). - Reenviar una nota de crédito,
nota de débito o
liquidación en
BORRADORla emite con la fecha del día y pasa por el cupo del plan (402). Un rechazado se re-emite con el ambiente SRI y la numeración vigentes. Lo mismo paraPUT /api/v1/facturas/{id}cones_borrador: false. POST /api/v1/retencionesyPOST /api/v1/guias-remisioncones_borrador: trueresponden400: se emiten al crearlas.- Todas las descargas CSV (
?format=csvde facturas, compras, retenciones, estado de cuenta y reportes) empiezan con el BOM UTF-8 para que Excel muestre bien las tildes. Si lees el CSV por código, usautf-8-sig. GET /api/v1/reportes/declaracion-103incluye el casillero 302 (relación de dependencia) calculado con los roles de pago del mes, salvo si filtras por sucursal.
También son nuevos, solo en el dashboard (no se pueden usar con API key): impuesto a la renta en relación de dependencia (gastos personales, formulario 107 y RDEP), estados financieros, REBEFICS, y fechas elegibles en asientos manuales y activos fijos.
v1.4.0 — 2026-09-22
Added
- Servidor MCP en
https://api.emitoo.io/mcp: 24 herramientas de solo lectura (comprobantes, ventas por período, resumen fiscal, clientes, servicios, compras, cobros y pagos) para Claude, ChatGPT, Cursor, Claude Code o cualquier cliente MCP. Una conexión = una empresa. Planes de pago. - OAuth 2.1 para hosts MCP: registro dinámico (
/register), PKCE,resource(RFC 8707) y revocación. El consentimiento lo da un administrador de la empresa enapp.emitoo.io/conectar. - API keys de tipo
mcp(prefijofmk_): solo permisos de lectura, vencen a los 90 días, se crean en API keys → Asistentes IA.GET /api/v1/api-keys?tipo=api|mcplas separa. - Una API key mandada como
Authorization: Bearer fpk_…ahora se reconoce (antes se interpretaba como sesión de usuario). - Recurso
reportesdisponible para permisos de API key (solo lectura).
Fixed
GET /api/v1/auth/mecon API key respondía 500; ahora devuelve la key, su empresa ysolo_lectura.
v1.3.0 — 2026-09-15
Added
- Egresos e ingresos bancarios:
POST /api/v1/cuentas-dinero/{id}/transaccionescon líneas por cuenta contable, marca de deducible por línea y comprobante PDF; listado, detalle y anulación. - Libro de la cuenta:
GET /api/v1/cuentas-dinero/{id}/librocon saldo anterior, saldo acumulado y el documento de origen de cada movimiento. - Conciliación bancaria: crear, marcar movimientos, cerrar, reabrir y PDF. Los movimientos de una conciliación cerrada quedan bloqueados.
- Anular transferencias:
POST /api/v1/cuentas-dinero/transferencias/{movimiento_id}/anular. - Anticipos de clientes:
GET /api/v1/cobros/anticipos,POST /api/v1/cobros/{id}/aplicar-anticipoyDELETE /api/v1/cobros/{id}/aplicaciones/{aplicacion_id}. - Campos nuevos en
CuentaDinero:cuenta_contable_id,cuenta_contable_efectiva_id,saldo_contable(y sus códigos/nombres). GET /api/v1/facturasaceptaq(texto),cliente_idycon_saldo, además dedesde,hasta,estado,limityoffset.GET /api/v1/facturas/resumen: tablero de ventas (hoy, semana, mes, serie de 30 días, pendientes ante el SRI, cartera, top de clientes).- SDKs 0.2.0 (Go, Node, Python) con todo lo anterior. Ver SDKs.
Changed
POST /api/v1/cobros:aplicacionespuede ir vacío y Σmonto_aplicadopuede ser menor quemonto; la diferencia queda como anticipo. Los clientes que ya enviaban Σ = monto no cambian su comportamiento. El cobro traemonto_anticipoysaldo_anticipo; cada aplicación,desde_anticipoyfecha_aplicacion.- Los movimientos de dinero traen
conciliacion_id,anulado_enyanulado_motivo;origen_tiposumatransaccion_bancaria,nominayactivo_fijo. - Anular un cobro, pago, egreso o transferencia cuyo movimiento está en una conciliación
cerrada responde
409. Cambiarsaldo_inicialde una cuenta con conciliaciones cerradas, también.
v1.2.0 — 2025-08-12
Added
- Endpoint
POST /api/v1/workflows/{id}/runcon flagasincronopara devolver 202. - Nodo
telegramen workflows. - Lookup de clientes por cédula (antes solo RUC).
Changed
- Nuevo modelo de planes anuales: Gratis (200 comprobantes/año + API de prueba 90 días), Negocio ($190/año, 6.000 comprobantes) y Empresarial (personalizado por volumen). Rate limit unificado: 120 RPM por API key.
- El payload de
factura.rechazadaahora incluye el campointentos.
v1.1.0 — 2025-07-20
Added
- Idempotencia con
Idempotency-Keyen facturas y retenciones. - Endpoint
GET /api/v1/facturas/{id}/rideconIf-None-Matchpara ETags. - Soporte para
X-Emitoo-Deliveryen reintentos (idempotency de webhooks).
Fixed
- El endpoint
POST /api/v1/facturasya no aceptacantidad = 0con precio unitario > 0.
v1.0.0 — 2025-07-01
Lanzamiento público de Emitoo. Esta es la primera versión estable.
Highlights
- API REST
/api/v1con OpenAPI 3.1 autogenerada. - OpenAPI 3.1 pública en
/api/v1/public/openapi.jsonpara generar clientes tipados. - Webhooks firmados con HMAC-SHA256.
- Motor de workflows con 8 tipos de nodo.
- RBAC dinámico por path + método HTTP.
- Auditoría por request con 30 días de retención.