Documentação do Webhook de Devolução
Visão Geral
Nosso sistema de webhook envia notificações em tempo real sobre o processamento de estornos (refunds). Quando um estorno é confirmado ou rejeitado, uma requisição POST é enviada para acallback_url da transação original com informações detalhadas do status do estorno.
O estorno é processado de forma assíncrona. Após a requisição inicial retornar com status IN_PROCESSING, a confirmação ou rejeição será enviada via webhook para a URL configurada na transação original.
Payload do Webhook
O webhook envia um payload JSON contendo os detalhes e status do estorno.Descrição dos Campos
Informações da Transação
transactionId(string): Identificador único da transação no formato UUIDtransactionStatus(string): Status atual da transação. Valores possíveis:REFUND: Estorno confirmado com sucessoREFUND_REJECTED: Estorno rejeitado
transactionType(string): Tipo da transação original (CASH_IN ou CASH_OUT)value(string): Valor da transação estornadaexternalId(string): ID de referência externa fornecido pelo cliente na transação originale2e_id(string, opcional): Identificador end-to-end da transação PIX (presente no refund confirmado)error_message(string, opcional): Mensagem de erro quando o estorno é rejeitado (ex: “AC06 - Conta bloqueada do Pix”)
Exemplos por Status
Refund Confirmado
Quando o estorno é processado com sucesso, o status da transação é alterado paraREFUND e o webhook é enviado.
Refund Rejeitado
Quando o estorno é rejeitado, o status da transação original é mantido (não altera) e o webhook é enviado comtransactionStatus: "REFUND_REJECTED" e o motivo da rejeição no campo error_message.
Códigos de Erro Comuns
Quando um estorno é rejeitado, o campoerror_message contém o código de erro e a descrição. Os códigos mais comuns são:
- AC06: Conta bloqueada do Pix
- ED05: Pagamento rejeitado pelo PSP do recebedor
Regras de Negócio
1
A transação original deve estar com status
PROCESSED para poder ser estornada2
O processamento é assíncrono: a resposta inicial retorna
IN_PROCESSING, e a confirmação é enviada via webhook3
Existe um cache de 2 horas que evita múltiplos refunds simultâneos para a mesma transação. Se o estorno for rejeitado, o cache é removido automaticamente, permitindo que uma nova tentativa seja feita
4
O webhook é enviado para a
callback_url configurada na transação originalBoas Práticas
1
Confirme o recebimento do webhook com uma resposta 200 OK
2
Implemente verificações de idempotência usando o
transactionId e externalId3
Processe webhooks de forma assíncrona
4
Mantenha logs dos webhooks recebidos para resolução de problemas
5
Implemente lógica de retry para entregas de webhook falhas
6
Trate adequadamente os casos de
REFUND_REJECTED para permitir novas tentativas