Receber um pagamento dentro do seu site
Adicione uma etapa de Pagamento para o visitante pagar com cartão, PIX ou boleto sem sair do fluxo, e faça o fluxo reagir ao que realmente aconteceu.
Você vai precisar: Uma conexão de pagamento configurada em Configuração → Conexões de Pagamento.
Um formulário conversacional pode cobrar por alguma coisa no meio da conversa — um ingresso de evento, um livro em um lançamento, um sinal de reserva. O visitante responde às suas perguntas, é levado à página de checkout do próprio gateway, paga e volta para o seu fluxo na etapa que você escolheu.
A etapa que faz isso é uma ação com o tipo Pagamento.
#Adicione a etapa
- No Flow Designer, solte uma etapa de Ação no ponto em que o pagamento deve acontecer.
- Abra-a e defina o Tipo de Ação como Pagamento.
- Escolha a Conexão, ou deixe em Padrão da conta.
- Escolha o Gateway — Stripe ou Mercado Pago.
- Preencha Valor, Moeda e Descrição.
- Em Para onde o comprador volta, escolha as três etapas em que ele pode cair.

Salvar Lead vem antes da etapa de pagamento, não depois. Quem abandona o checkout deve continuar sendo um lead — é praticamente esse o sentido de cobrar dentro de um fluxo em vez de cobrar em uma página de preços.
#O valor é o total, nunca um preço unitário
Um número inteiro puro é lido como a menor unidade da moeda — centavos. É esse o formato em que as pessoas erram:
| O que você digita | O que é cobrado |
|---|---|
190000 |
R$ 1.900,00 |
1900.00 |
R$ 1.900,00 |
1900,00 |
R$ 1.900,00 |
R$ 1.900,00 |
Recusado. Nenhum checkout abre e nenhum pedido é criado. |
Símbolos de moeda nunca são aceitos. Variáveis e FLOW.CALCULATE() são — então
FLOW.CALCULATE($QUANTITY * 1900) é a forma normal de cobrar por uma quantidade
que o visitante escolheu, porque faz o total para você.
Moeda oferece BRL, USD, EUR, GBP, ARS, MXN, CLP e COP.
Em Formas de pagamento você pode marcar Cartão, PIX e Boleto. Deixe tudo desmarcado para oferecer todas as formas que o gateway aceita.
#As quatro saídas — esta é a parte para ler duas vezes
Uma etapa de pagamento tem quatro saídas, e só uma delas é uma linha que você desenha no quadro.
| Saída | Quando é usada |
|---|---|
| Se pago → etapa | O gateway devolveu o comprador e o pagamento está confirmado |
| Se cancelado → etapa | O comprador desistiu do checkout, ou o pagamento falhou ou expirou |
| Enquanto pendente → etapa | O dinheiro ainda não foi compensado — PIX e boleto |
| A seta que sai da própria etapa | Só quando o checkout não pôde sequer ser criado |
Dê a cada resultado a sua própria tela. Nunca aponte pendente para a mesma tela de pago: dizer a um comprador cujo boleto ainda não compensou que o pagamento dele foi aprovado é a pior coisa que esta etapa pode fazer, e está a uma lista suspensa compartilhada de distância.
Enquanto pendente não é opcional na prática. Sem essa etapa, quem realmente pagou por PIX cai na sua tela de cancelamento.
#Quem confirma o pagamento somos nós, não o navegador
O comprador chegar de volta a uma URL não prova nada — links são compartilhados, encaminhados e recarregados. O Tayon confirma o pagamento com o próprio gateway antes de tratar um pedido como pago, e continua verificando os pedidos em aberto depois disso — é assim que um boleto pago na manhã seguinte ainda acaba marcado como Pago.
É também por isso que Tag quando pago é seguro de usar. A tag é aplicada ao contato assim que o pagamento é de fato confirmado, e apenas uma vez, não importa quantas vezes o comprador recarregue a página.
#O que o resto do fluxo consegue ler
Depois que a etapa roda, o fluxo passa a ter um conjunto de variáveis que ele
pode exibir em uma tela ou testar em uma divisão. Todas começam com o Prefixo
das variáveis definido na etapa, que é PAYMENT a menos que você mude.
| Variável | O que guarda |
|---|---|
$PAYMENTSTATUS |
created, pending, paid, failed, canceled, expired, refunded, error ou unknown |
$PAYMENTORDER |
A referência do pedido |
$PAYMENTGATEWAY |
stripe ou mercadopago |
$PAYMENTAMOUNT / $PAYMENTAMOUNTFMT |
O valor na menor unidade, e o mesmo valor formatado |
$PAYMENTCURRENCY |
A moeda |
$PAYMENTQUANTITY |
A quantidade que você registrou |
$PAYMENTERROR |
Por que um checkout não pôde ser criado |
De propósito, não existe variável guardando o endereço do checkout. A própria etapa manda o visitante para lá; você nunca precisa lidar com o link.
Dados do pagador funciona ao contrário: ele recebe os nomes dos
identificadores que você coletou antes — EMAIL, NAME, CPF — e não valores
digitados. Preencha e o comprador não redigita o que já contou a você. Deixe em
branco e o gateway pergunta.
#Como testar
A pré-visualização não consegue criar um checkout de verdade, então uma etapa de pagamento em pré-visualização mostra um seletor de resultado — pago, pendente, cancelado ou erro. Escolha um e a pré-visualização segue exatamente na etapa em que o fluxo publicado seguiria, com as mesmas variáveis definidas. Confira os quatro caminhos antes de publicar.
#Quando não funciona
- A etapa avançou em vez de abrir um checkout. Alguma coisa impediu a
criação do checkout. Olhe
$PAYMENTERROR—no_connectioneno_keysignificam que a conexão está faltando ou incompleta,bad_amountsignifica que o valor não estava em um formato aceito. - Um valor foi recusado. Tire o símbolo da moeda.
R$ 1.900,00nunca funciona;190000funciona. - Compradores que pagaram caíram na tela de cancelamento. Você não tem etapa Enquanto pendente, e eles pagaram por PIX ou boleto.
- O pedido fica em Aguardando pagamento para sempre. O gateway não está nos avisando que o pagamento compensou. Confira se o endereço de webhook da conexão ainda é o mesmo cadastrado no painel do seu gateway — veja Conectar o Stripe ou o Mercado Pago.
- Você quer ver o que aconteceu de verdade. Todo pedido, pago ou não, está na tela Pagamentos.
Atualizado: