Visão Geral
O webhookREFUND é enviado quando uma devolução PIX é processada. Existem dois cenários:
- CashInReversal: Você devolveu um PIX recebido (via
/pix/:e2eid/devolucao/:id) - CashOutReversal: Alguém devolveu um PIX que você enviou
Quando é enviado
- Devolução de PIX recebido confirmada (você devolvendo)
- Devolução de PIX enviado recebida (alguém devolvendo para você)
Estrutura do Payload
Diferença entre CashInReversal e CashOutReversal
- CashInReversal
- CashOutReversal
Você devolveu um PIX recebido.Exemplo: Você recebeu R 50.
Campos Importantes
string
Sempre
"REFUND" para devoluções.number
ID da transação original (não da devolução).
string
Status da transação original após a devolução:
REFUNDED: Devolução processadaERROR: Falha na devolução
object
Valor da transação original, não da devolução.
array
Lista de devoluções realizadas. Contém detalhes de cada devolução.
string
Direção do dinheiro:
DEBIT: Saindo da sua conta (CashInReversal)CREDIT: Entrando na sua conta (CashOutReversal)
string
E2E ID da transação original.
Processando o Webhook
Exemplo Node.js
Exemplo Python
Devoluções Parciais
Uma transação pode ter múltiplas devoluções parciais. O arrayrefunds contém todas:
Atenção: amount é number em refunds
Idempotência
Use uma combinação dedata.id e refunds[].endToEndId para idempotência:
Tratamento de Erros
Serefund.status === 'ERROR', a devolução falhou:
Boas Práticas
Identifique o tipo pela creditDebitType
Identifique o tipo pela creditDebitType
Use
creditDebitType para determinar se é CashInReversal (DEBIT) ou CashOutReversal (CREDIT).Processe todas as devoluções do array
Processe todas as devoluções do array
O array
refunds pode conter múltiplas devoluções parciais. Itere por todas.Cuidado com os tipos de amount
Cuidado com os tipos de amount
data.payment.amounté stringdata.refunds[].payment.amounté number
Atualize o saldo corretamente
Atualize o saldo corretamente
- CashInReversal: Debita do seu saldo
- CashOutReversal: Credita no seu saldo
Próximos Passos
RECEIVE
PIX recebido
TRANSFER
PIX enviado