Skip to main content

Evento checkout.session.completed

Disparado quando o comprador conclui o confirm da checkout session na página hospedada ou em um frontend custom. data.object contém a sessão completa já com o customer resolvido e, quando houver pagamento, com payment_data preenchido para o método escolhido. Use este evento para marcar que a sessão foi finalizada pelo comprador. Para cartão aprovado de forma síncrona, ele já pode indicar pagamento confirmado. Para PIX e boleto, completed significa que o comprador recebeu as instruções de pagamento; a confirmação financeira chega depois por checkout.session.async.payment.succeeded.
Webhooks devem ser a fonte confiável para liberar produto, serviço ou acesso. Leia sempre payment_status junto com payment_data.payment_method antes de concluir a entrega.
No checkout hospedado, a primeira tentativa deste evento é imediata. A Chargefy aguarda um 2xx por até 10 segundos antes de redirecionar para a success_url; sem confirmação, libera o redirect e mantém o evento na fila para novas tentativas. Persista e deduplique o evento antes de responder 2xx.
Para transformar esse comportamento em uma experiência clara para o comprador, veja Após receber com um Checkout. O guia cobre a tela de ativação, polling no seu backend, trials e reconciliação pela API.

Quando acontece

Como processar

  • Registre o id do evento (evt_*) para processar o webhook de forma idempotente.
  • Use data.object.id como chave da checkout session no seu sistema.
  • Salve data.object.customer, que é resolvido no confirm e aparece preenchido deste evento em diante.
  • Para payment_status: "paid", marque o pedido como pago e libere o produto ou serviço.
  • Para payment_status: "unpaid" com pix ou boleto, marque o pedido como aguardando pagamento e espere o evento assíncrono de sucesso.
  • Para payment_status: "no_payment_required", conclua o fluxo sem cobrança imediata conforme a regra da sessão.

Campos importantes

Variações de pagamento

Exemplo de payload

data.object.payment_data traz os campos do método (PIX QR, boleto barcode ou parcelas do cartão). Veja POST .../confirm para cada variante.