Devolver PIX (estorno)
Devolve integralmente um cash-in recebido de volta para o pagador original.
Regras:
- Só devolução total (o valor bruto original).
- Nada é revertido: nem a taxa, nem eventuais splits/direct splits (permanecem nas
wallets de destino). Sua conta é debitada o valor bruto integral — você precisa ter
esse valor de saldo disponível (senão
422). - Apenas cash-ins pagos de até 3 dias.
- Informe
external_idoue2edo cash-in a devolver. - Recurso liberado por conta — fale com o suporte para habilitar.
A resposta é 202 com status: processing: a liquidação é assíncrona. Quando a
devolução liquidar (ou falhar), enviamos um webhook para o postbackUrl do cash-in
original com o resultado (refunded ou failed) — veja o schema RefundWebhook. Em caso
de failed, o valor debitado é devolvido automaticamente à sua wallet.
Fluxo
Você faz POST /v1/pix/refund
external_id ou e2e do cash-in que quer devolver.Recebe HTTP 202 com status processing
Paysure envia webhook com o resultado
postbackUrl do cash-in original com refund.status:refunded→ devolução liquidada.failed→ rejeitada pelo SPI; o valor debitado é devolvido à sua wallet automaticamente.
Regras
- Só devolução total (o valor bruto original).
- Nada é revertido: nem a taxa, nem eventuais splits/direct splits (permanecem nas wallets de destino). Sua conta é debitada o valor bruto integral — você absorve a taxa e os splits.
- Você precisa ter o valor bruto de saldo disponível (senão
422saldo insuficiente). - Apenas cash-ins pagos de até 3 dias.
- Informe
external_idoue2e. - Recurso liberado por conta — fale com o suporte para habilitar.
202 processing como concluído —
aguarde o webhook com refund.status: "refunded".Erros
Erros seguem o formato padrão{ "message": "...", "ms": 123 }. Nos erros específicos de
devolução vem também um campo code pra você diferenciar o motivo:
Webhook de devolução
Payload enviado ao seupostbackUrl quando a devolução finaliza (uma vez por transição):
Authorizations
Autenticação por par client-credentials. Envie dois headers em toda requisição:
ci: client_id (público)cs: client_secret (privado — nunca exponha no frontend)
Gere as credenciais no painel da Paysure em API Keys. Você pode ter múltiplas chaves ativas.
Body
Informe external_id ou e2e do cash-in a devolver (pelo menos um).
external_id do cash-in original (o mesmo que você enviou ao gerar a cobrança).
191End-to-end (E2E) do cash-in original. Alternativa ao external_id.
191Descrição da devolução (aparece no comprovante). Máx 140 caracteres.
140Response
Devolução já solicitada anteriormente (idempotente) — retorna a existente.

