POS Bridge — promos del local: líneas en $0 y precios rebajados
Sin cambios en el contrato: mismos campos, mismas respuestas. Cambia lo que puede venir
en una línea del pedido.
- Promos del local. El local puede cargar en Xenda un regalo por compra (“comprando 1 kg te regalamos 1/4 kg”), un 2x1 / 3x2, o un descuento en % (sobre un producto o sobre todo el pedido), válidos ciertos días y, si quiere, solo pagando en efectivo. El bot las ofrece y las aplica al cotizar.
- Qué ves en
GET /v1/orders. El regalo o las unidades gratis llegan como una línea más enlineas, con tucodigo,precio_unitario: 0,subtotal: 0y el nombre de la promo entre paréntesis ennombre. Con un descuento,precio_unitarioviene ya rebajado.totalypago.montolas contemplan: nunca hay líneas negativas ni un campo de descuento aparte. - Qué necesitás de tu lado. Que tu sistema acepte una línea con
precio_unitarioysubtotalen 0 dentro de un pedido contotalmayor a 0. No cambia nada más.
POS Bridge — puesta en producción de una sucursal y cierres desde Xenda
Sin cambios en la API: mismo contrato, mismas respuestas. Cambia lo que el local puede
hacer del lado Xenda y se completa la documentación.
- El local solo puede cerrar pedidos desde Xenda. En una sucursal conectada a un
POS, la plataforma Xenda ya no deja aceptar, rechazar ni mover pasos intermedios:
solo marcar
entregadoo cancelar. Los estados los mueve tu sistema. Si llega un evento tuyo después de ese cierre, recibe el400 invalid_transitionde siempre. - Corrección en Estados — tiempos automáticos. La guía decía que un pedido pendiente expira “por defecto a los 15 minutos”. No es así: la cancelación de pendientes y el cierre de pedidos en curso son opciones de cada local y vienen apagadas. La sección explica qué ve tu POS si el local las activa.
- Guía nueva: Pasar una sucursal a producción (en la Introducción): qué credenciales recibís, carga inicial por API o CSV, cómo se configura qué productos llevan sabores, prueba de punta a punta y cómo cambiar una key sin corte.
POST /v1/test/orders: aclarado que funciona con cualquier key de sucursal y que en una sucursal real el pedido es real.
POS Bridge — backlog visible, reintentos y semántica de errores
GET /v1/orders: la respuesta sumatotal(cuántos pedidos hay en ese estado, no solo los de esta página) yhas_more. Antes, con 35 pendientes veías lo mismo que con 20 y nada te indicaba pedirpage=2.POST /v1/orders/{order_id}/status: un evento rechazado ya no consume suevent_id. Si el request falla por validación (por ejemplo, falta elmotivo), podés corregirlo y reintentar con el mismo id, y esta vez se aplica. Antes ese reintento devolvíaduplicate: truesin aplicar el cambio.- Guía nueva en Estados: qué significa cada código de error (
400/403rate-limit /403key inválida /404) y cuál conviene reintentar, más una nota sobre las cancelaciones que no salen de tu POS (el cliente cancela, o expira el pedido) y cómo detectarlas.
POS Bridge — monto del pago y guía de nulls
GET /v1/orders: el objetopagosumamonto(igual atotal, envío incluido;0si no hay total) — para calcular el vuelto en pagos en efectivo.- Nueva guía “Qué puede venir en null” en el quickstart: qué campos del pedido
pueden llegar en
nully qué default usar en cada caso. El OpenAPI marca ahora todos los campos anulables (nullable: true), incluidocliente.nombre.
POS Bridge — pedidos de prueba
POST /v1/test/orders — generá pedidos de prueba en tu sucursal sandbox usando
tus códigos de producto y sabor. Mismo circuito de validación y cotización que el
bot; el pedido nace pendiente y aparece en tu próximo poll con todos los campos
(domicilio, teléfono separado, pago, costo de envío). Pensado para que pruebes el
ciclo completo sin esperar a que el bot esté conectado.POS Bridge — pago, fecha legible y aceptación implícita
Segunda ronda de feedback de integración, aplicada.
GET /v1/orders: nuevo objetopago(modo: en_entrega | online,pagado) para el cierre de caja — hoy todo naceen_entrega; cuando un local active pago online por WhatsApp llegaráonline / pagado: truesin cambios de contrato.GET /v1/orders: nuevo campocosto_envio(fijo por local, incluido entotal) ycreated_at_iso(ISO 8601 con zona del local) junto al epoch existente.POST /v1/orders/{order_id}/status: aceptación implícita —listo,asignadooentregadosobre un pedidopendientelo acepta y lo mueve en un solo evento. Los pedidos cerrados siguen siendo inmutables.
POS Bridge — domicilio y teléfono estructurados
Feedback de la primera ronda de integración, aplicado.
GET /v1/orders: cada pedido incluye ahoradomicilioestructurado (calle,numero,piso_depto,localidad,referencia) además dedelivery_addresscompleto como respaldo.GET /v1/orders: el teléfono del cliente viene también separado entelefono_pais(default"54"),telefono_areaytelefono_numero(limpio, sin guiones ni espacios).POST /v1/orders/{order_id}/status: nuevo eventoasignado— si tu flujo asigna repartidor directo tras aceptar, podés saltearlisto(en_preparacion → asignado → entregado).GET /v1/orders?status=: se pueden consultar tambiénasignadoyen_camino.
POS Bridge v1
Lanzamiento del POS Bridge — integración de sistemas de punto de venta con el
módulo de pedidos por WhatsApp.
POST /v1/catalog/itemsyPOST /v1/catalog/options: sincronización de catálogo con idempotencia porevent_id, orden poroccurred_aty errores por ítem.GET /v1/orders: polling de pedidos con las líneas en códigos del POS.POST /v1/orders/{order_id}/status: aceptar / rechazar / listo / entregado / cancelar, con transiciones validadas.GET /v1/sync-log: auditoría de sincronizaciones.- Key por sucursal (
X-API-Key) y sandbox con sucursal demo.
v1.0
Lanzamiento inicial de la Partner API.
POST /campaigns: envío de templates con idempotencia yexternal_ref.- Soporte de templates con header multimedia (imagen, video y PDF) vía
header_media_url. GET /campaigns/{campaign_id}: estado del envío por destinatario.- Webhook
reply.received: respuestas de clientes concampaign_id+external_ref.

