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, o template, os métodos e as regras atuais do Checkout Builder da sua organização.
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; o Checkout Builder descreve 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

As configurações do Checkout Builder pertencem à organização e são lidas no carregamento da página. Se você alterar um método ou campo obrigatório, a nova regra vale no próximo carregamento, inclusive para sessões já criadas.

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.

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.
Quando existe um endpoint inscrito em checkout.session.completed, a Chargefy aguarda um 2xx por até 10 segundos antes do redirect. Se o endpoint demorar ou falhar, o redirect continua; a entrega do webhook será tentada novamente.

Segurança do fluxo

Quando a interface precisa ficar no seu produto

O client_secret não renderiza um formulário nem um iframe. Ele é a credencial pública daquela sessão. Se você escolher esse caminho, sua equipe assume a interface, os estados de loading, erro, retry e acessibilidade.

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.

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.