POST

/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

CampoTipoRequeridoDescripción
body.charge_amount.sub_totalnumbersíSubtotal de la venta
body.charge_amount.taxnumbersíImpuesto (ITBMS)
body.charge_amount.tipnumbersíPropina. Default: 0
body.charge_amount.discountnumbersíDescuento. Default: 0
body.charge_amount.totalnumbersíTotal a cobrar. Debe ser igual a sub_total + tax + tip − discount
body.order_idstringnoIdentificador interno del comercio asociado a la orden. 15 caracteres máximo.
body.descriptionstringnoDescripció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"
  }
}
Sobre el campo hash

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.

Error común: YP-0405 "El desglose no coincide con el total"

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
¿Te fue útil esta página?