xnd_...). En los
ejemplos, reemplazá $KEY por tu key.
La sucursal demo ya tiene catálogo cargado y un pedido pendiente esperándote —
tu primer
GET /v1/orders devuelve un pedido real.1. Mirá el pedido pendiente
lineas vienen con tus códigos (codigo), listas
para matchear contra tu base:
Qué puede venir en
null — tratá estos campos como opcionales y poné tu propio
valor por defecto:delivery_addressy todo el objetodomicilio(calle,numero,piso_depto,localidad,referencia): en retiro por el local (delivery_type: "pick_up") vienen todos en null; en envíos,piso_deptoyreferenciason opcionales, y si el domicilio no pudo separarse los campos vienen null con el texto completo endelivery_address.cliente.nombre: si el cliente no dio su nombre — mostrá “Cliente”.cliente.telefono_pais/telefono_area/telefono_numero: null solo en pedidos anteriores a julio 2026; los nuevos vienen siempre poblados.lineas[].codigoyopciones[].codigo: null si el producto o sabor se cargó a mano en Xenda (sin código tuyo). Con el catálogo sincronizado desde tu POS, siempre vienen.
pago.modo default "en_entrega",
pago.pagado default false, pago.monto y costo_envio default 0.2. Aceptalo
{"order_id": 83, "status": "en_preparacion"} — aceptar mueve el pedido
directo a en preparación (y en producción dispara la notificación de WhatsApp al
cliente).
3. Marcalo listo y entregado
4. Empujá un cambio de precio
{"accepted": 1, "rejected": [], "skipped_stale": 0}. Desde ese momento el
bot cotiza el kilo a $16.000.
Alta y modificación son el mismo request: es un upsert por
codigo. Si el
codigo no existe lo creamos, si existe lo actualizamos — la distinción la hacemos
nosotros. Mandá siempre el objeto completo del producto.5. Probá los reintentos (idempotencia)
Repetí el request anterior con el mismoevent_id:
event_id es
siempre seguro.
6. Auditá tus sincronizaciones
Eso es todo el ciclo. Los detalles finos (estados, transiciones válidas, reglas de sincronización) están en Estados del pedido y en la referencia de la API.

