Por que usar webhooks?
Sem webhooks, sua aplicação teria que perguntar para a API a cada segundo:“Essa transação já foi confirmada?”Com webhooks, a Upay avisa você imediatamente:
“A transação foi confirmada. Aqui estão os dados.”Assim você pode:
- Atualizar o status de um pedido
- Liberar acesso a um produto digital
- Enviar e-mails automáticos de confirmação
- Registrar movimentações financeiras
Como funciona na prática?
-
Você cria um endpoint no seu sistema
Ex.:
https://meusite.com.br/webhooks/upay - Você cadastra esse endpoint via API ou Dashboard
-
Sempre que algo importante acontece, como uma transação paga:
- A Upay envia um
POSTpara a sua URL - O
POSTcontém o evento (ex:transaction.completed) - Seu sistema processa esse evento e responde
200 OK
- A Upay envia um
Segurança dos webhooks
Toda requisição enviada inclui dois mecanismos de segurança:Assinatura HMAC
Cada webhook inclui o header
X-Webhook-Signature: sha256=... gerado com HMAC-SHA256.
Sempre valide essa assinatura antes de processar o evento — garante que a requisição foi enviada pela Upay e que o corpo não foi alterado.Headers de identificação
Além da assinatura, cada entrega inclui:
X-Webhook-Event— tipo do evento (ex:transaction.completed)X-Webhook-Delivery— UUID único da entregaUser-Agent: UPAY-Webhook/1.0
Validação da assinatura
Estrutura do payload
Todos os webhooks compartilham o mesmo envelope:Eventos suportados
| Evento | Quando é disparado |
|---|---|
transaction.created | Nova transação criada |
transaction.completed | Pagamento confirmado |
transaction.failed | Pagamento falhou |
transaction.updated | Status da transação atualizado |
payment_link.created | Novo link de pagamento criado |
payment_link.updated | Link de pagamento atualizado |
balance.updated | Saldo da conta alterado |
Payloads por evento
Transações
- transaction.completed
- transaction.failed
- transaction.created
Disparado quando um pagamento é confirmado.
Links de Pagamento
- payment_link.created
- payment_link.updated
Criando uma assinatura de webhook
Implemente o endpoint
Seu endpoint deve responder
200 OK em até 10 segundos. Respostas fora desse prazo são tratadas como falha e a entrega será retentada automaticamente.Boas práticas
- Use HTTPS em todos os endpoints de webhook
- Valide sempre a assinatura HMAC antes de processar
- Registre cada evento recebido — processe cada um uma única vez (idempotência)
- Responda 200 OK somente após concluir o processamento
- Implemente retentativas com idempotência no seu sistema
- Não valide o schema completo do payload — mudanças futuras não devem quebrar seu endpoint
Precisa de ajuda?
Nossa equipe está disponível para ajudar. Entre em contato: suporte@upaybr.com

