Skip to main content
Son permisos explícitos: una integración solo los tiene si el administrador los marca uno por uno en Integraciones externas. Las integraciones existentes no los reciben automáticamente.
  • Solo los productos físicos manejan inventario; los servicios no aparecen en existencias ni se pueden ajustar o transferir.
  • Todo se limita al negocio de la integración: una sucursal, producto o transferencia de otro negocio responde 404.
  • unit_cost es siempre el costo del producto (no el precio de venta). Los ajustes y transferencias quedan listos para contabilizarse a costo desde Procesar documentos.
  • Las escrituras aceptan el encabezado Idempotency-Key. Envíalo siempre para no duplicar un ajuste o una transferencia al reintentar.

Consultar existencias

Consultar movimientos

  • type: in (entrada) u out (salida). quantity siempre es positiva.
  • source: adjustment, transfer, sale, purchase o null (movimientos antiguos sin origen registrado).
  • unit_cost puede ser null en movimientos anteriores a esta versión.

Consultar lotes

Los lotes se ordenan por fecha de vencimiento. Cada elemento:
days_to_expire es negativo si el lote ya venció.

Alertas

Reúne en una sola llamada el stock bajo, los lotes por vencer y los vencidos con existencia (hasta 500 de cada tipo).
low_stock usa el formato de existencias y los lotes el de lotes.

Registrar ajuste

Registra un faltante/merma (out) o un sobrante (in) y actualiza la existencia de inmediato. El movimiento guarda el costo unitario del producto en ese momento.
Respuesta 201: el movimiento y la existencia actualizada.
El ajuste no valida la existencia disponible: un faltante mayor que la existencia deja el producto en negativo. Consulta existencias antes si tu proceso lo requiere.
Errores

Transferencias entre sucursales

Una transferencia tiene tres estados:

Crear transferencia

Crea la transferencia en estado pending. Con "complete": true además la completa en la misma llamada.
Respuesta 201
items[].unit_cost es el costo del producto al crear la transferencia y total_cost es la suma de cantidad × costo.
Con complete: true, crear y completar es una sola operación: si la transferencia no puede completarse (por ejemplo, el stock cambió), la respuesta es un error y no queda ninguna transferencia creada. Puedes corregir y reintentar la misma llamada.

Completar transferencia

Sin cuerpo. Mueve la existencia de forma atómica: descuenta en origen (solo si aún hay existencia suficiente) y suma en destino. Responde 200 con la transferencia en estado completed. Producto en la sucursal destino: se busca por SKU; si no existe, por código de barras; si tampoco existe, se crea una copia del producto en el destino (mismo SKU, nombre, categoría, unidad, precio e impuestos) con existencia 0 antes de sumar la entrada.

Cancelar transferencia

Sin cuerpo. Solo para transferencias pending; no mueve existencias. Responde 200 con la transferencia en estado cancelled. Errores de transferencias

Consultar transferencias

El listado es paginado (data + pagination) con el mismo formato de la respuesta de creación. El detalle devuelve un solo objeto o 404 si no existe o es de otro negocio.