Skip to Content
v1.5Documentación oficial de la API LX CloudPos · estable en producción
V1ApendicesChangelog

Changelog

v1.5 — 2026-08-06 (estado actual)

Cambios que rompen compatibilidad

  • moneda en las respuestas ahora es el código ISO ("CRC" / "USD"), como siempre estuvo documentado y como se envía al emitir. Antes se devolvía el código interno ("01" / "02"): un integrador enviaba "CRC" y recibía "02". Si el código del integrador comparaba contra "01"/"02", debe ajustarse a "CRC"/"USD".

Nuevo

  • GET /api/v1/facturas/{clave}/respuesta — el XML de acuse firmado por Hacienda, que ya se guardaba pero no se podía descargar. También para factura de compra.
  • GET /api/v1/facturas-compra/{clave}/xml — no existía; únicamente estaba disponible el PDF.

Correcciones

  • Las notas de crédito y débito no se podían recuperar. La API las emitía, pero GET /facturas/{clave}, /pdf y /xml respondían 404: la búsqueda por clave solo consultaba las tablas de factura y tiquete. Ahora resuelve los cuatro tipos.

v1.4 — 2026-08-06

Cambios que rompen compatibilidad

  • N/A

Nuevo

Correcciones

  • El mensaje receptor se enviaba a Hacienda con el consecutivo vacío. Al migrar el procedimiento a PostgreSQL, el INSERT dejó de escribir numero_consecutivo, que es el campo que viaja como NumeroConsecutivoReceptor en el XML firmado. Afectaba al POS desde entonces; se corrigió en los 16 tenants antes de exponer el flujo por API.

v1.3 — 2026-08-05

Cambios que rompen compatibilidad

  • N/A

Nuevo

  • Catálogo de productos: POST /api/v1/productos (upsert por el codigo propio del integrador) y GET /api/v1/productos/{codigo}.
  • Catálogo de clientes: POST /api/v1/clientes (upsert por identificacion, con actualización parcial) y GET /api/v1/clientes/{identificacion}.
  • Catálogos de códigos: GET /api/v1/catalogos/{medios-pago, condiciones-venta, unidades-medida, actividades, puntos-venta, tipos-codigo, marcas}. Las actividades económicas, los puntos de venta y las marcas son propios del tenant y antes no existía forma de consultarlos sin solicitarlos a LX Systems.
  • Alta de marcas: POST /api/v1/marcas, upsert por nombre.
  • Dos scopes nuevos: catalogo:write y catalogo:read. Ver Scopes.
  • idPuntoVenta opcional al emitir, tanto en ventas como en facturas de compra: fija de qué stock se descuenta la venta y qué sucursal o terminal llevan el consecutivo y la clave. Omitirlo mantiene el comportamiento de v1.2.

Correcciones

  • Los cachés en memoria se discriminaban por hostname. En el POS cada tenant entra por su subdominio, pero en la API todos entran por api.pos.lxsyscr.com, así que dos tenants compartían entrada de caché: un producto resuelto por codigoProducto —con su nombre, precio y CABYS— podía cruzarse de un tenant a otro y terminar en un comprobante fiscal ajeno. No llegó a ocurrir en producción (había una sola key emitida) y se corrigió antes de que existiera la segunda.
  • POST /api/v1/productos sobre un código existente respondía con el producto sin los cambios recién aplicados durante unos 30 segundos, aunque la base de datos sí quedaba correcta. Una emisión inmediata por codigoProducto tomaba también el precio anterior.
  • Un idMarca, idProveedor o tipoCodigo inexistente al guardar un producto respondía "No se pudo guardar el producto.", sin decir qué campo estaba mal. Ahora los tres se validan antes y el error nombra el campo y dónde consultar los valores válidos.

v1.2 — 2026-08-05

Cambios que rompen compatibilidad

  • Emitir NC/ND ahora requiere el scope notas:write. Antes alcanzaba con facturas:write. Una key con facturas:write pero sin notas:write sigue emitiendo FE y TE sin problema, pero recibe 403 al enviar tipo: "NotaCredito" o "NotaDebito". La justificación de esta separación se detalla en Scopes.

Nuevo

  • Factura electrónica de compra (tipo 08) — la autofactura que se emite a nombre de un proveedor de régimen especial. Tres endpoints nuevos: POST /api/v1/facturas-compra, GET /api/v1/facturas-compra/{clave} y /pdf. Dos scopes nuevos: facturas-compra:write y facturas-compra:read.
  • El catálogo de scopes ahora se sirve como dato en vez de permanecer hardcodeado en la UI de administración — el CRM lo consume directamente desde esa fuente.

Correcciones

  • N/A

v1.1 — 2026-08-05

Cambios que rompen compatibilidad

  • idUsuario es obligatorio en POST /api/v1/facturas. Identifica al usuario del tenant al que se atribuye el comprobante en los reportes del POS. Un request sin él responde 400.

Nuevo

  • Cliente por identificación (cliente.identificacion), con alta automática si no existe: ya no es necesario sincronizar ids internos antes de facturar. Ver FacturaApiClienteDto.
  • Producto por código de catálogo (linea.codigoProducto) como alternativa a idProducto. Ver FacturaApiLineaDto.
  • Base URL definitiva: https://api.pos.lxsyscr.com
  • tipo acepta tanto el nombre ("FacturaElectronica") como el código numérico.

Correcciones

  • Los comprobantes emitidos por la API no se enviaban a Hacienda: quedaban persistidos con clave y consecutivo, pero nunca se generaba ni firmaba el XML. Ahora la emisión encola el envío y el estado final llega por webhook como está documentado.
  • Una emisión fallida podía responder 201 con clave vacía. Ahora responde 400.

v1.0 — 2026-05-15

Nuevo

  • Emisión de FE, TE, NC, ND
  • Consulta por clave
  • Descarga de PDF (regenerado al momento de la solicitud)
  • Descarga de XML firmado original
  • Reenvío por correo al cliente
  • Anulación (soft delete en BD)
  • Consulta de próximo consecutivo
  • Idempotencia vía Idempotency-Key con cache 24 h
  • Rate limit 120/min por API key
  • Webhooks HMAC-SHA256 con reintentos persistentes
  • 3 scopes granulares (facturas:read, facturas:write, facturas:anular)
  • Swagger UI público en /swagger
  • Multi-moneda CRC/USD con tipo de cambio automático

Correcciones

  • N/A (primera versión).