/qr/generate/{qr_type} — Generar QR
Crea una nueva transacción y genera la información necesaria para mostrar (DYN) o asociar (HYB) el código QR.
Endpoint
https://api-integrationcheckout-uat.yappycloud.com/v1https://api-checkout.yappy.cloud/v1/qr/generate/{qr_type}Donde qr_type es:
DYN— QR dinámico (generado en pantalla de caja, único por transacción).HYB— QR híbrido (asocia una orden activa al QR estático impreso físicamente).
Body
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
body.charge_amount.sub_total | number | sí | Subtotal de la venta |
body.charge_amount.tax | number | sí | Impuesto (ITBMS) |
body.charge_amount.tip | number | sí | Propina. Default: 0 |
body.charge_amount.discount | number | sí | Descuento. Default: 0 |
body.charge_amount.total | number | sí | Total a cobrar. Debe ser igual a sub_total + tax + tip − discount |
body.order_id | string | no | Identificador interno del comercio asociado a la orden. 15 caracteres máximo. |
body.description | string | no | Descripción de la venta (ver reglas de sanitización). 64 caracteres máximo. |
Body de ejemplo
{
"body": {
"charge_amount": {
"sub_total": 200.52,
"tax": 2.21,
"tip": 0,
"discount": 0,
"total": 202.73
},
"order_id": "ORD-2026-00125",
"description": "Almuerzo mesa 5"
}
}
Response 200 OK
{
"status": {
"code": "YP-0000",
"description": "Se ha realizado la ejecución del servicio correctamente"
},
"body": {
"date": "2026-05-15T08:15:32.500",
"transactionId": "ORJBL-14890537",
"hash": "z9y8x7w6v5u4t3s2r1q0p9o8"
}
}
Solo aparece cuando qr_type=DYN. Es la cadena alfanumérica que necesitas para renderizar el
QR dinámico en la pantalla de la caja.
Para qr_type=HYB no se devuelve hash porque el QR físico impreso ya existe y solo necesitas
el transactionId para asociar la orden activa al QR.
La suma sub_total + tax + tip − discount debe ser exactamente igual a total (con 2 decimales).
Redondea correctamente antes de enviar para evitar errores de precisión de punto flotante.
Llamada de ejemplo
const resp = await fetch("{{BASE_URL}}/qr/generate/DYN", {
method: "POST",
headers: {
"api-key": process.env.YAPPY_API_KEY,
"secret-key": process.env.YAPPY_SECRET_KEY,
"authorization": sessionToken,
"Content-Type": "application/json"
},
body: JSON.stringify({
body: {
charge_amount: {
sub_total: 200.52,
tax: 2.21,
tip: 0,
discount: 0,
total: 202.73
},
order_id: "ORD-2026-00125",
description: "Almuerzo mesa 5"
}
})
});
const { body } = await resp.json();
const { transactionId, hash } = body;
// Usa `hash` para renderizar el QR en pantalla