El descuento suelto es fácil de publicar y difícil de controlar. Sale en una historia, se reenvía, lo usa quien no era el cliente objetivo y al cierre de caja nadie explica el hueco. La recompensa canjeable pide puntos que ya se ganaron con compras. El costo se paga con historial, no con un código copiado.
En Pídeme cada recompensa tiene nombre, costo en puntos, tipo (producto o descuento), canal y estado. El admin lista las activas. El cliente las ve en el sheet y en el portal.

La diferencia en la operación
- Cupón suelto: cualquiera lo manda, no hay saldo, no hay tope por persona salvo que lo recuerdes.
- Canje de puntos: el cliente consulta el WhatsApp, el sistema mira la cartera y descuenta. Si no alcanza, el botón no sale.
En la tienda de ejemplo hay cinco premios reales: bebida a 25, papas a 45, pizza a 50, 10% a 60 y pizza mediana a 100. El cliente con 78 puntos puede tomar los cuatro primeros. El de 100 no. Eso es un techo, no un cartel.

Dónde se aplica
El canje no termina en un sticker. En checkout el pedido sigue el flujo de siempre: datos, total, confirmación. Si el premio es un porcentaje, entra como línea de descuento. Si es un producto, el motor lo trata como ítem de recompensa.

En el admin, Canjes y el libro de puntos dejan el movimiento en negativo. Resumen muestra “puntos canjeados” aparte de “puntos en circulación”. Si alguien reclama que “me debían un refresco”, hay fila, no una captura de chat.
Cuándo sí usar un descuento suelto
Una temporada corta, un plato que se va a vencer, un día de lluvia. Eso es Promociones, otro módulo. No lo mezcles con el club: la promoción empuja hoy; la fidelización premia volver. El hub Promoción, fidelización y control los separa a propósito.
Costo real, no el de menú
Un 10% sobre un ticket de 10 USD son 1 USD de caja, cada vez, para quien tenga el código. Un 10% canjeado a 60 puntos, con 1 pt/USD, pide 60 USD de historial. El 10% sigue costando 1 USD en esa visita, pero solo llega quien ya compró antes. El cupón suelto no pide ese peaje.
Si el `discount_value` de un porcentaje queda vacío, no hay milagro: el canje no calcula solo. Hay que poner el valor o usar un producto con costo conocido.
Otra diferencia: el stock. Una recompensa puede llevar límite. Cuando se acaba, deja de salir en el sheet. Un código de Instagram no se agota solo; se agota cuando alguien del equipo se acuerda de borrar la historia.
Si el cliente canjea y el pedido se anula, el libro tiene que cuadrar. Por eso existe la sincronización de compras recientes en el resumen: no para “hacer magia”, sino para rehacer acreditaciones cuando el estado de la orden cambia.
La landing del club de fidelización junta estas pantallas. Si estás armando el programa desde cero, empieza por el artículo de montaje y sigue con el de puntos.