Skip to main content
O campo event está presente em todos os payloads e identifica o tipo de notificação recebida.

Referência de eventos

EventoDescriçãoTrigger
purchase_approvedCompra aprovadaPagamento único ou recorrente aprovado
purchase_refusedCompra recusadaTentativa de pagamento recusada
pix_geradoPix geradoQR Code Pix criado, aguardando pagamento
boleto_geradoBoleto geradoBoleto emitido, aguardando pagamento
picpay_geradoPicPay geradoCobrança PicPay criada, aguardando pagamento
refundReembolsoPedido reembolsado
chargebackChargebackDisputa de pagamento iniciada pelo cliente
subscription_canceledCancelamentoAssinatura recorrente cancelada
subscription_renewedRenovaçãoAssinatura recorrente renovada com sucesso
checkout_abandonmentAbandono de checkoutCliente preencheu dados mas não finalizou a compra

Como usar

{
  "secret": "sua-chave",
  "event": "purchase_approved",
  "data": { ... }
}
No seu servidor, filtre pelo campo event para rotear cada notificação:
app.post('/webhook', (req, res) => {
  const { secret, event, data } = req.body

  // Valide o secret primeiro
  if (secret !== process.env.WEBHOOK_SECRET) {
    return res.status(401).end()
  }

  switch (event) {
    case 'purchase_approved':
      handlePurchaseApproved(data)
      break
    case 'subscription_canceled':
      handleCancellation(data)
      break
    case 'checkout_abandonment':
      handleAbandonedCart(data)
      break
    // ...
  }

  res.status(200).end()
})
Sempre retorne uma resposta HTTP 200 o mais rápido possível. Se precisar de processamento demorado, salve o payload em uma fila e processe de forma assíncrona.