Por que usar webhooks?
Sem webhooks, sua aplicação teria que perguntar para a API a cada segundo:“Esse pagamento já foi confirmado?”Isso é lento e ineficiente. Com webhooks, a AbacatePay avisa você imediatamente:
“O pagamento foi confirmado. Aqui estão os dados.”Assim você pode:
- atualizar o status de um pedido
- liberar acesso a um produto
- enviar e-mails automáticos
- registrar movimentações financeiras
Como funciona na prática?
-
Você cria um endpoint no seu sistema
Ex.:https://meusite.com/webhooks/abacatepay - Você cadastra esse endpoint no dashboard da AbacatePay
-
Sempre que algo importante acontece, como um pagamento aprovado:
- A AbacatePay envia um POST para a sua URL
- O POST contém o evento (ex:
checkout.completed,transparent.completed) - Seu sistema processa esse evento
Ambientes (Dev mode vs Produção)
Ambientes da AbacatePay
- Webhooks criados em Dev mode recebem eventos simulados
- Webhooks criados em Produção recebem eventos reais
Segurança dos webhooks
Webhooks precisam ser seguros — afinal, qualquer pessoa poderia tentar enviar requisições falsas para sua aplicação. Por isso, recomendamos duas camadas de proteção: 1. Secret na URL — cada webhook tem uma chave secreta que vai junto com a URL. Seu sistema verifica se essa chave está correta antes de processar o evento. 2. Assinatura digital (HMAC) — a AbacatePay assina cada evento que envia. Seu sistema pode confirmar que o evento realmente veio da AbacatePay e que não foi alterado no caminho. É o mesmo método usado por Stripe, PayPal, Shopify e GitHub.A configuração de segurança é feita pelo seu desenvolvedor. Veja a documentação técnica completa na página de segurança de webhooks.
Ver implementação — Secret na URL (Node.js)
Ver implementação — Secret na URL (Node.js)
Cada webhook tem um secret único, que vai na query string da URL:
https://meusite.com/webhook/abacatepay?webhookSecret=SEU_SECRETVer implementação — Validação HMAC (Node.js)
Ver implementação — Validação HMAC (Node.js)
Cada webhook enviado pela AbacatePay inclui uma assinatura no header
X-Webhook-Signature gerada com HMAC-SHA256.Criando um webhook no dashboard
1
Acesse a seção de Webhooks

Abra a área de Webhooks
É aqui que você cria e gerencia seus endpoints de notificação.
2
Clique em Criar

Inicie a configuração
Informe o nome e a URL que receberá os eventos.
3
Configure os detalhes
O que você deve informar:
- Nome: Ex.: “Pagamentos confirmados”
- URL: Endpoint HTTPS que receberá os eventos
- Secret: Chave usada para verificar a autenticidade
Eventos suportados
Todos os webhooks v2 compartilham o mesmo formato de payload:
Dados sensíveis: O campo
taxId (CPF/CNPJ) é mascarado nos payloads (ex: 123.***.***-**). Para pagamentos com cartão, apenas os últimos 4 dígitos e a bandeira são enviados.Estrutura dos payloads
Quando customer está vazio
Se não houver cliente vinculado ao checkout, pagamento ou assinatura, o objeto customer será null.
Entrega e retentativas
A AbacatePay considera um webhook entregue quando seu endpoint responde com qualquer status2xx em até 30 segundos. O corpo da resposta é ignorado.
Se a entrega falhar por um motivo temporário, a AbacatePay tenta de novo automaticamente, com intervalos cada vez maiores:
No total, são até 7 tentativas ao longo de cerca de 18 horas. Assim que uma delas recebe
2xx, as próximas são canceladas.
Quais respostas geram retentativa
O mesmo evento pode chegar mais de uma vez
Todas as tentativas de um mesmo evento chegam com o mesmoid no corpo. Use esse campo para ignorar duplicatas: se o id já foi processado, responda 200 OK sem processar de novo.
Isso também protege seu sistema quando ele processa o evento mas a resposta não chega à AbacatePay (por exemplo, por timeout).
Outros detalhes
- Cada tentativa aparece nos logs do webhook no dashboard, com o status e o tempo de resposta.
- Se você desativar ou excluir o webhook, as retentativas pendentes são descartadas.
- O reenvio manual de um log pelo dashboard faz uma única tentativa, sem retentativas automáticas, e gera um novo
id. - As retentativas funcionam igual em Dev mode e em Produção.
Boas práticas
Recomendações importantes
- Use HTTPS em todos os webhooks
- Valide o secret e a assinatura HMAC
- Registre cada evento recebido — processe cada um uma única vez
- Responda 200 OK somente após concluir o processamento
- Use o campo
idpara ignorar eventos repetidos — retentativas reenviam o mesmoid - Responda rápido: acima de 30 segundos a entrega é considerada falha
- Não realize validação do payload inteiro dos webhooks (como com Zod), evitando que mudanças futuras não quebrem seu endpoint
Precisa de ajuda?
Nossa equipe pode te ajudar. Contate-nos: ajuda@abacatepay.com