Últimos cambios a la API de Handy

La API de Handy es actualizada con mejoras de vez en cuando.

Hacemos todo lo posible para que sean mejoras que NO rompen integraciones ya desarrolladas. Si esto llegar a suceder, te lo haremos saber, pero es muy raro

Los cambios que pueden romper integraciones, aparecen en rojo.

Si quieres monitorear los cambios, puedes usar nuestro feed de RSS: changes.rss

Octubre 2026
  • API v2

    Endpoint de conciliación de pedidos

    Se agregó GET /salesOrder/{salesOrderId}/reconciliation, que devuelve en una sola llamada el estado de conciliación de un pedido: las entregas asociadas con los cobros que se les aplicaron y, cuando el pedido es una venta en ruta, si tiene cobros asociados y si ya está pagado totalmente.

    La respuesta trae cuatro bloques: salesOrder, deliveries, routeSale (es null si el pedido no es venta en ruta) y summary, que resume el veredicto en hasDelivery, hasPayment, fullyPaid y pendingBalance.

    Puntos a tener en cuenta al consumirlo:

    • Para decidir si está pagado usa summary.fullyPaid o routeSale.pendingBalance, no paymentStatus: en ventas en ruta a crédito anteriores al motor de cobros ese campo puede venir en null.
    • Las entregas canceladas se incluyen con deleted en true para poder revertir el asiento; los contadores de summary ya las excluyen.
    • Una entrega con consolidated en true lleva varios pedidos, y entonces sus montos corresponden a toda la entrega y no solo al pedido consultado.
    • creditNotesApplied es el monto cubierto con notas de crédito: una entrega o venta puede quedar pagada sin un solo cobro.

    Fecha de creación del pedido en los cobros de /paymentLog

    En la respuesta de GET /paymentLog y GET /paymentLog/{id} se agregó la fecha de creación del pedido a los cobros aplicados:

    • En salesOrderPayments[], dentro de salesOrder: dateCreated y mobileDateCreated.
    • En deliveryPayments[], dentro de delivery: el arreglo salesOrdersInfo con { id, dateCreated, mobileDateCreated } por cada pedido de la entrega.

    delivery.salesOrders no cambia: sigue siendo la lista de identificadores.

Septiembre 2026
  • API v2

    Más información de promociones y descuentos por producto

    Promociones (/promotion):

    • Se agregaron los campos status (active, paused o finished) y rangeType (regular o dynamic).
    • Nuevo endpoint GET /promotion/{id} para obtener una sola promoción.

    Descuentos por producto (/productDiscount):

    • Se agregaron los campos customerZones y customerCategories con el id y la description de cada zona y categoría. Los campos customerZonesIds y customerCategoriesIds se conservan.
    • Se documentaron GET /productDiscount/{id}, GET /product/{code}/productDiscount y los atributos zones, categories, showDatesRanges, startDateValid y endDateValid para crear y actualizar.
Julio 2026
  • API v2

    Endpoints para crear, editar y deshabilitar pagos

    Se agregaron tres endpoints sobre /paymentLog para administrar cobranzas:

    • POST /paymentLog — crea un pago. Valida el type (cash por default, check, wire_transfer, debit_card, credit_card) y bloquea con 422 los pagos que excedan el saldo del cliente cuando la compañía no permite sobrepago.
    • PUT /paymentLog/{id} — edita un pago. Igual que en la web, deshabilita el pago original y crea uno nuevo con editedFrom apuntando al original; la respuesta es el pago nuevo.
    • POST /paymentLog/disable/{id} — deshabilita un pago (operación de una sola vía, idempotente).