Skip to main content
Hoje a Pagou expõe três famílias públicas de webhook. Pagamentos e assinaturas usam envelope com event. Transferências usam envelope de payout com type.

Comparação de envelopes

Exemplo de webhook de pagamento

data.informations devolve o array informations que você enviou ao criar a transação via API; só aparece quando você enviou entradas customizadas. Veja Eventos de Pagamento. Os eventos de transação também trazem data.customer (name, email e phone do comprador — nunca o documento), data.products (os itens comprados, na mesma forma do endpoint de detalhe da transação) e data.attribution (UTMs de campanha, click IDs de anúncio, o par de afiliado src/sck, a URL de checkout derivada por nós e a declarada, e a de origem). Todos são opcionais: customer e attribution podem vir null, products pode vir vazio, e o attribution vem sempre null em transações criadas pela API. Veja Eventos de Pagamento.

Exemplo de webhook de transferência

Exemplo de webhook de assinatura

Assinaturas com Pix Automático usam o mesmo envelope. As cobranças delas chegam só como eventos de assinatura, sem evento transaction.*, e o primeiro evento depende de haver período de teste. Veja a sequência do Pix Automático em Webhooks de assinatura.

Verificando a assinatura HMAC

Quando um webhook tem Token de Segurança, verifique estes headers antes de confiar no corpo: A chave do HMAC é o Token de Segurança. A mensagem é o timestamp, um . e o corpo HTTP exato:
rawBody é o corpo HTTP exato que você recebeu. Um webhook sem Token de Segurança vai sem assinatura. Postbacks de notify_url vão sem assinatura. Defina o Token de Segurança no painel em Configurações → Integrações ao criar ou editar o webhook. O campo diz “Gerado automaticamente se vazio.” Deixe em branco para gerar automaticamente. Reconciliar o recurso com GET continua recomendado. Uma verificação executável está no exemplo de webhooks em TypeScript.

Resposta de ACK

Erro comum de ingestão

Como corrigir: exija o id de topo, faça deduplicação por esse valor, responda 200 OK rapidamente e processe de forma assíncrona.

Guia de mapeamento

  • Dirija o estado de negócio pelo status do recurso, não por suposição no front-end.
  • Roteie mudanças de ciclo de vida de assinatura por data.event_type.
  • Mapeie o evento de transferência payout.transferred para o status liquidado do recurso paid.
  • Reconcilie se seu worker cair depois do ack.

Leia a seguir

Exemplos executáveis

Veja código pronto e testável para este fluxo em Exemplos de Webhooks — executável em sete linguagens no sandbox.