Especificación de los endpoints de VenPOS que Yapu consume. Todas las peticiones son POST en JSON y van a una sola URL por función (el product_id va en el cuerpo). Actualizado: 2026-08-25.
Cada tienda de VenPOS tiene un token único. Se envía en el header:
Authorization: Bearer <token_de_la_tienda>POST https://venpos.app/functions/yappuGetMenu
Respuesta 200:
{
"tenant": {
"business_name": "Mi Tienda",
"base_currency": "USD",
"tax_mode": "incluido",
"tax_rate": 0.16
},
"products": [
{
"id": "VP-001",
"name": "Coca Cola 500ml",
"description": "Bebida refrescante",
"price": 1.50,
"image_url": "https://venpos.app/img/001.jpg",
"category": "Bebidas",
"sku": "CC500",
"active": true,
"stock": 24,
"is_weighable": false,
"unit": "und",
"unit_type": "liquido",
"tax_rate": 0.16
}
]
}POST https://venpos.app/functions/yappuReducestock — Crea la venta en VenPOS con canal Yappu (aparece en Dashboard y Reportes como venta normal; el inventario baja igual que en el POS).
Petición (una llamada por producto del carrito):
{
"product_id": "VP-001",
"quantity": 2,
"reference": "ORD-482910",
"order_id": "abc123",
"customer": {
"name": "María Pérez",
"phone": "0412-1234567",
"address": "Av. Principal, Edif. ..."
},
"delivery": {
"address": "Av. Principal, Edif. ...",
"notes": "dejar en portería"
}
}Respuesta 200:
{ "ok": true, "stock": 22, "sale_id": "...", "sale_number": "VTA-...", "reference": "ORD-482910" }(reference, product_id) repetido no descuenta dos veces.order_id y mismo reference (difieren por product_id).POST https://venpos.app/functions/yappuRestorestock
{
"product_id": "VP-001",
"quantity": 2,
"reference": "ORD-482910",
"order_id": "abc123"
}Respuesta 200:
{ "ok": true, "stock": 24, "reference": "ORD-482910" }Repone el inventario y quita el ítem de la venta: si la venta queda vacía = refunded; si quedan ítems = partial_refund.
401 — Token inválido o vencido.404 — Producto no existe.422 — Stock insuficiente { available, requested }.Tres endpoints POST (yappuGetMenu, yappuReducestock, yappuRestorestock) bajo https://venpos.app/functions, con token Bearer por tienda e idempotencia por (reference, product_id). Yapu lee el inventario y descuenta; VenPOS conserva la titularidad del inventario y registra las ventas con canal Yappu.
Yapu.app · Documento técnico de integración con VenPOS