Pense nos webhooks como “mensagens enviadas pela AbacatePay para o seu sistema”, sem que você precise ficar consultando a API o tempo todo.Documentation Index
Fetch the complete documentation index at: https://docs.abacatepay.com/llms.txt
Use this file to discover all available pages before exploring further.
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 um secret único, que vai na query string. Ex.: https://meusite.com/webhook/abacatepay?webhookSecret=SEU_SECRET Seu backend confere:🛡️ 2. Assinatura HMAC (verificação do corpo)
Mesmo que alguém descubra sua URL e seu secret, ainda não consegue falsificar o evento. Por quê?Porque cada webhook enviado pela AbacatePay inclui uma assinatura no header: Essa assinatura é gerada usando HMAC-SHA256 e garante que:
- o corpo da requisição não foi alterado
- o evento realmente foi enviado pela AbacatePay
- Se for igual → ✅ evento é legítimo
- Se for diferente → ❌ evento rejeitado
🔧 Exemplo de validação HMAC (Node.js)
Este exemplo mostra como validar a assinatura HMAC enviada no header
X-Webhook-Signature.
Criando um webhook no dashboard
Acesse a seção de Webhooks

Abra a área de Webhooks
É aqui que você cria e gerencia seus endpoints de notificação.
Eventos suportados
| Evento | Quando é disparado |
|---|---|
checkout.completed | Pagamento de um checkout foi confirmado |
checkout.refunded | Reembolso de um checkout foi concluído |
checkout.disputed | Disputa/chargeback aberta em um checkout |
transparent.completed | Pagamento de um checkout transparente confirmado |
transparent.refunded | Reembolso de um checkout transparente foi concluído |
transparent.disputed | Disputa/chargeback aberta em um pagamento transparente |
subscription.completed | Assinatura criada e ativada |
subscription.cancelled | Assinatura cancelada |
subscription.renewed | Cobrança recorrente da assinatura foi paga |
transfer.completed | Transferência concluída com sucesso |
transfer.failed | Transferência falhou |
payout.completed | Saque concluído com sucesso |
payout.failed | Saque falhou |
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.
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
- Implemente retentativas com idempotência
- 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
