Docs / Changelog
Recursos

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íneas cuenta_id, monto, tercero_id, descripcion) para cancelar documentos contra cuentas contables en vez de caja/bancos. Exige medio "15", sin cuenta_dinero_id, Σ líneas igual a monto al centavo y aplicado completo (no deja anticipo). La respuesta trae cruce_lineas.
  • Anticipos a proveedores (espejo de los de clientes): GET /api/v1/pagos-proveedor/anticipos, POST /api/v1/pagos-proveedor/{id}/aplicar-anticipo y DELETE /api/v1/pagos-proveedor/{id}/aplicaciones/{aplicacion_id}. El pago trae monto_anticipo y saldo_anticipo; cada aplicación, liquidacion_id, desde_anticipo y fecha_aplicacion.
  • Fechas contables: cambiar la fecha de un registro ya hecho con PATCH …/fecha en 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 fecha opcional para el reverso: en el body de pagos, cobros, transacciones y transferencias; como query en DELETE /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 a importeTotal, va en <propina> del XML y se imprime en el RIDE. No se admite en POST /api/v1/facturas/lote.
  • POST /api/v1/retenciones/{id}/reenviar: re-encola una retención DEVUELTA, RECHAZADO o colgada. Una retención que quedó en BORRADOR de una versión anterior responde 409 (anúlala y emítela de nuevo).
  • Líneas que restan del total en egresos e ingresos bancarios: contrario: true en lineas[] 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} acepta fecha_emision para corregir la fecha de emisión.

Changed

  • Todos los XML (factura, NC, ND, guía, retención y liquidación) llevan en infoAdicional el campo RUC Proveedor = 0993411199001, el proveedor del sistema, exigido por el SRI desde el 26-sep-2026. No tienes que enviarlo.
  • POST /api/v1/pagos-proveedor: aplicaciones puede ir vacío y Σ monto_aplicado puede ser menor que monto; la diferencia queda como anticipo. Antes Σ tenía que cuadrar con monto; los clientes que ya lo hacían no cambian su comportamiento.
  • Cobros y pagos sin cuenta_dinero_id usan la única cuenta activa del tipo del medio (01 caja, 16/19 tarjeta, 20 banco). Si hay varias o ninguna, se registran sin cuenta como antes.
  • La fecha de cobros, pagos, transacciones bancarias, transferencias y movimientos manuales ya no puede ser futura ni caer en un período contable cerrado (400). Sin fecha, 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 BORRADOR la 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 para PUT /api/v1/facturas/{id} con es_borrador: false.
  • POST /api/v1/retenciones y POST /api/v1/guias-remision con es_borrador: true responden 400: se emiten al crearlas.
  • Todas las descargas CSV (?format=csv de 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, usa utf-8-sig.
  • GET /api/v1/reportes/declaracion-103 incluye 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 en app.emitoo.io/conectar.
  • API keys de tipo mcp (prefijo fmk_): solo permisos de lectura, vencen a los 90 días, se crean en API keys → Asistentes IA. GET /api/v1/api-keys?tipo=api|mcp las separa.
  • Una API key mandada como Authorization: Bearer fpk_… ahora se reconoce (antes se interpretaba como sesión de usuario).
  • Recurso reportes disponible para permisos de API key (solo lectura).

Fixed

  • GET /api/v1/auth/me con API key respondía 500; ahora devuelve la key, su empresa y solo_lectura.

v1.3.0 — 2026-09-15

Added

  • Egresos e ingresos bancarios: POST /api/v1/cuentas-dinero/{id}/transacciones con 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}/libro con 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-anticipo y DELETE /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/facturas acepta q (texto), cliente_id y con_saldo, además de desde, hasta, estado, limit y offset.
  • 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: aplicaciones puede ir vacío y Σ monto_aplicado puede ser menor que monto; la diferencia queda como anticipo. Los clientes que ya enviaban Σ = monto no cambian su comportamiento. El cobro trae monto_anticipo y saldo_anticipo; cada aplicación, desde_anticipo y fecha_aplicacion.
  • Los movimientos de dinero traen conciliacion_id, anulado_en y anulado_motivo; origen_tipo suma transaccion_bancaria, nomina y activo_fijo.
  • Anular un cobro, pago, egreso o transferencia cuyo movimiento está en una conciliación cerrada responde 409. Cambiar saldo_inicial de una cuenta con conciliaciones cerradas, también.

v1.2.0 — 2025-08-12

Added

  • Endpoint POST /api/v1/workflows/{id}/run con flag asincrono para devolver 202.
  • Nodo telegram en 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.rechazada ahora incluye el campo intentos.

v1.1.0 — 2025-07-20

Added

  • Idempotencia con Idempotency-Key en facturas y retenciones.
  • Endpoint GET /api/v1/facturas/{id}/ride con If-None-Match para ETags.
  • Soporte para X-Emitoo-Delivery en reintentos (idempotency de webhooks).

Fixed

  • El endpoint POST /api/v1/facturas ya no acepta cantidad = 0 con 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/v1 con OpenAPI 3.1 autogenerada.
  • OpenAPI 3.1 pública en /api/v1/public/openapi.json para 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.