Cobra un pago dentro de tu sitio
Agrega un paso de Pago para que el visitante pague con tarjeta, PIX o boleto sin salir de tu flujo, y para que el flujo reaccione a lo que realmente pasó.
Necesitarás: Una conexión de pago configurada en Configuración → Conexiones de Pago.
Un formulario conversacional puede cobrar algo en medio de la conversación — una entrada para un evento, un libro en un lanzamiento, una seña de una reserva. El visitante responde tus preguntas, va a la página de checkout de la propia pasarela, paga y vuelve a tu flujo en el paso que elegiste.
El paso que hace eso es una acción con el tipo de acción Pago.
#Agrega el paso
- En el Flow Designer, suelta un paso de Acción donde debe ocurrir el pago.
- Ábrelo y pon Tipo de Acción en Pago.
- Elige la Conexión, o déjala en Predeterminada de la cuenta.
- Elige el Gateway — Stripe o Mercado Pago.
- Completa Importe, Moneda y Descripción.
- En Dónde vuelve el comprador, elige los tres pasos en los que puede caer el comprador.

El campo del paso 4 aparece como Gateway, en inglés: el diseñador no traduce ese rótulo. Es el mismo concepto que la pasarela de la que habla el resto de este artículo.
Guardar Lead va antes del paso de pago, no después. Quien abandona el checkout debería seguir siendo un lead — ese es casi todo el sentido de cobrar dentro de un flujo en lugar de hacerlo en una página de precios.
#El importe es el total, nunca un precio unitario
Un número entero pelado se lee como la unidad más pequeña de la moneda — centavos. Ese es el formato que la gente equivoca:
| Lo que escribes | Lo que se cobra |
|---|---|
190000 |
R$ 1.900,00 |
1900.00 |
R$ 1.900,00 |
1900,00 |
R$ 1.900,00 |
R$ 1.900,00 |
Rechazado. No se abre ningún checkout y no se crea ningún pedido. |
Los símbolos de moneda nunca se aceptan. Las variables y FLOW.CALCULATE() sí —
así que FLOW.CALCULATE($QUANTITY * 1900) es la forma normal de cobrar por una
cantidad que eligió el visitante, porque calcula el total por ti.
Moneda ofrece BRL, USD, EUR, GBP, ARS, MXN, CLP y COP.
En Métodos de pago puedes marcar Tarjeta, PIX y Boleto. Déjalos todos sin marcar para ofrecer todo lo que admita la pasarela.
#Las cuatro salidas — esta es la parte para leer dos veces
Un paso de pago tiene cuatro maneras de salir, y solo una de ellas es una línea que tú dibujas en el lienzo.
| Salida | Cuándo se toma |
|---|---|
| Si se paga → paso | La pasarela devolvió al comprador y el pago está confirmado |
| Si se cancela → paso | El comprador abandonó el checkout, o el pago falló o caducó |
| Mientras está pendiente → paso | El dinero todavía no se acreditó — PIX y boleto |
| La flecha de salida del propio paso | Solo cuando no se pudo crear el checkout |
Dale a cada resultado su propia pantalla. Nunca apuntes pendiente a la misma pantalla que pagado: decirle a un comprador cuyo boleto todavía no se acreditó que su pago se completó es lo peor que puede hacer este paso, y está a una lista desplegable compartida de distancia.
Mientras está pendiente no es opcional en la práctica. Sin ese paso, un comprador que realmente pagó por PIX cae en tu pantalla de cancelación.
#El pago lo confirmamos nosotros, no el navegador
Que el comprador llegue de vuelta a una URL no prueba nada — los enlaces se comparten, se reenvían y se recargan. Tayon confirma el pago con la propia pasarela antes de tratar un pedido como pagado, y sigue revisando los pedidos abiertos después, que es la razón por la que un boleto pagado a la mañana siguiente igual termina marcado como Pagado.
Por eso también es seguro usar Etiqueta al pagar. La etiqueta se aplica al contacto una vez que el pago está confirmado de verdad, y una sola vez, sin importar cuántas veces recargue la página el comprador.
#Qué puede leer el resto del flujo
Después de que el paso se ejecuta, el flujo cuenta con un conjunto de variables
que puede mostrar en una pantalla o evaluar en una división. Todas empiezan con
el Prefijo de variables que definas en el paso, que es PAYMENT si no lo
cambias.
| Variable | Qué contiene |
|---|---|
$PAYMENTSTATUS |
created, pending, paid, failed, canceled, expired, refunded, error o unknown |
$PAYMENTORDER |
La referencia del pedido |
$PAYMENTGATEWAY |
stripe o mercadopago |
$PAYMENTAMOUNT / $PAYMENTAMOUNTFMT |
El importe en la unidad más pequeña, y ese mismo importe ya formateado |
$PAYMENTCURRENCY |
La moneda |
$PAYMENTQUANTITY |
La cantidad que registraste |
$PAYMENTERROR |
Por qué no se pudo crear un checkout |
A propósito no hay ninguna variable con la dirección del checkout. El paso envía al visitante ahí por su cuenta; nunca tienes que manejar el enlace.
Datos del pagador funciona al revés: toma los nombres de identificadores
que recogiste antes — EMAIL, NAME, CPF — no valores que escribas. Si los
completas, el comprador no vuelve a escribir lo que ya te dijo. Si los dejas en
blanco, los pide la pasarela.
#Cómo probarlo
La vista previa no puede crear un checkout real, así que un paso de pago en vista previa muestra un selector de resultado: pagado, pendiente, cancelado o error. Elige uno y la vista previa continúa exactamente en el paso donde lo haría el flujo publicado, con las mismas variables definidas. Revisa los cuatro caminos antes de publicar.
#Cuando no funciona
- El paso avanzó en lugar de abrir un checkout. Algo impidió que se creara
el checkout. Mira
$PAYMENTERROR—no_connectionyno_keysignifican que la conexión falta o está incompleta, ybad_amountsignifica que el importe no tenía un formato aceptado. - Se rechazó un importe. Quita el símbolo de moneda.
R$ 1.900,00nunca funciona;190000sí. - Compradores que pagaron cayeron en la pantalla de cancelación. No tienes paso Mientras está pendiente, y pagaron por PIX o boleto.
- El pedido se queda en Pendiente de pago para siempre. La pasarela no nos está avisando que el pago se acreditó. Revisa que la dirección del webhook de la conexión siga siendo la que registraste en el panel de tu pasarela — consulta Conecta Stripe o Mercado Pago.
- Quieres ver qué pasó de verdad. Todos los pedidos, pagados o no, están en la pantalla Pagos.
Actualizado: