Skip to main content
O checkout conecta o que será vendido, a página apresentada ao comprador e o resultado financeiro da tentativa. Na experiência hospedada, sua aplicação cria uma Checkout Session e a Chargefy cuida da coleta e da confirmação; seu backend acompanha o resultado por webhook.
Uma Checkout Session representa uma tentativa de compra. Ela não substitui o Payment Intent, a invoice ou a subscription que registram o resultado financeiro e a recorrência.

O lifecycle do checkout hospedado

1

Sua aplicação inicia a compra

O backend cria uma Checkout Session com os itens, URLs de retorno e dados opcionais do customer. Se a oferta vem de um Payment Link, cada acesso ao link cria uma sessão nova automaticamente.
2

A Chargefy abre a página

A resposta contém uma url. Ao redirecionar o navegador, a página carrega a identidade e o template atuais da organização. Os métodos, os campos obrigatórios e as condições de parcelamento são os que ficaram guardados quando a sessão foi criada.
3

O comprador conclui o formulário

A página coleta os dados exigidos pelo método escolhido, tokeniza o cartão no navegador e permite corrigir recusas ou campos inválidos sem expor sua API key.
4

A Chargefy coordena o pagamento

Cartão normalmente é confirmado na hora. Pix e boleto entregam os dados de pagamento e aguardam compensação. Em uma venda recorrente, a confirmação também materializa a subscription e a invoice quando aplicável.
5

Seu backend conclui o pedido

Webhooks informam o estado confiável da sessão. Seu sistema deduplica o evento, confirma o resultado financeiro e só então libera produto, reserva ou acesso.
Página de checkout hospedada pela Chargefy com resumo do pedido, cartão, Pix e boleto

Página hospedada com resumo do pedido, dados do comprador e métodos de pagamento.

A Checkout Session é o contrato da página

Seu backend descreve a compra; a marca e o Checkout Builder da organização descrevem a experiência. O request não transporta cores, fonte ou layout.
A resposta é o objeto completo da sessão. Estes são os campos que conectam o backend ao navegador:
O header Idempotency-Key evita criar mais de uma sessão quando sua rota recebe o mesmo pedido novamente por timeout ou retry.

Como os objetos se encaixam

A Checkout Session organiza a tentativa, mas não é o livro-razão do pagamento. Para conciliação, combine payment_status, o Payment Intent relacionado, a invoice quando existir e os eventos recebidos.

O que a página resolve

A apresentação é lida no carregamento da página: a marca da organização (logo, cores, fonte, tema e cantos), em Configurações → Marca, e a composição do Checkout Builder (template, produto e resumo), em Configurações → Checkout. As regras transacionais — métodos, campos obrigatórios e parcelamento — são congeladas em cada sessão na criação: alterar o Builder vale para as sessões criadas dali em diante, nunca para as já abertas. Veja Configurar sua página de checkout.

Pagamento único e assinatura

O mode é derivado dos itens. Você não o envia no request.
Uma sessão não aceita misturar itens recorrentes e avulsos. Modele todos os itens como one_time ou todos como recorrentes; uma combinação mista retorna 400.
Em assinaturas, subscription_data pode definir trial, data de encerramento e o comportamento quando o trial termina sem método de pagamento. O cartão coletado fica associado ao customer para as próximas cobranças quando a assinatura precisa dele. Para apenas salvar um cartão sem cobrar, use um Setup Intent, não uma Checkout Session de pagamento.

Customer e dados do comprador

A resolução acontece dentro da mesma organização e do mesmo ambiente. A Chargefy não usa metadata para decidir identidade; esse objeto continua opcional, livre e controlado pela sua aplicação.

Cartão, Pix e boleto não terminam ao mesmo tempo

Por isso, a sessão separa o estado da página do estado do dinheiro:

Expiração e novas tentativas

Toda Checkout Session nasce com validade fixa de 24 horas. Você também pode expirar uma sessão aberta antes desse prazo. Uma sessão complete ou expired é terminal: não volta a open. Para uma nova tentativa, crie outra sessão. Use um identificador do seu sistema em metadata para correlacionar sessões diferentes ao mesmo carrinho ou pedido, sem tornar nenhuma chave específica obrigatória. Dentro de uma sessão open, o comprador tenta quantas vezes precisar sem sair da página. Um cartão recusado devolve o payment_intent para requires_payment_method e a próxima tentativa nasce como uma nova charge no mesmo intent; nenhuma sessão ou intent extra é criada. Enquanto uma tentativa ainda está sendo confirmada, um novo envio é recusado com payment_in_progress e a página hospedada acompanha o resultado sozinha. Sua integração não precisa tratar nada disso: o webhook continua sendo a fonte do desfecho.

Conclua a transação pelo webhook

A success_url melhora a experiência do comprador, mas não comprova pagamento. Seu backend deve verificar a assinatura do webhook, persistir o event.id com unicidade e confirmar o estado financeiro antes de liberar o pedido.
A Chargefy persiste e enfileira checkout.session.completed antes de responder ao checkout, mas não aguarda a rede do seu endpoint. Na tela de sucesso, o comprador pode usar Redirecionar agora desde o primeiro momento; sem ação, ele segue para a success_url após 10 segundos. Se seu produto ainda estiver liberando acesso, a página de destino deve consultar seu backend e manter o gate até o fulfillment terminar.

Segurança do fluxo

Quando a interface precisa ficar no seu produto

Um ui_mode: "embedded" — o checkout da Chargefy renderizado dentro do seu site via SDK, autorizado pelo client_secret da sessão — está a caminho. Até lá, a experiência 100% sua é o caminho white-label acima.

Chargefy for Platforms

Esta seção só se aplica a contas com o produto Chargefy for Platforms habilitado. Nesse produto, uma plataforma opera pagamentos para suas organizações filhas.
O lifecycle não muda. A API key da plataforma envia o header Organization para selecionar a organização filha; produtos, preços e customers da sessão precisam pertencer a ela. A página usa o Checkout Builder dessa organização e o webhook carrega seu ID no campo top-level organization. A marca da página pode ser a da organização filha ou a da própria plataforma, conforme Marca e domínio próprio da plataforma.

Próximos passos

Criar a primeira página

Implemente o fluxo hospedado do backend ao webhook.

Entender Checkout Sessions

Aprofunde itens, customers, expiração, métodos, estados e eventos.

Após receber com um Checkout

Conecte retorno, webhook, worker e reconciliação.

Criar um checkout white-label

Construa a interface dentro do seu produto com tokenização no navegador.