Skip to main content

Como funciona

Toda transação eventualmente envia um POST para a postbackUrl que você forneceu na criação. O envelope é sempre tipado:
  • Cash-in (cobrança recebida) → { "cashin": { ... } }
  • Cash-out (pagamento enviado) → { "cashout": { ... } }

Cash-in (recebimento confirmado)

Status possíveis

MED / Bloqueio por infração BACEN

Quando uma transação paid entra em revisão MED (chargeback), você recebe um webhook adicional com status=refunded e um campo extra event indicando o motivo:
  • value_cents reflete o valor bruto da transação (não o líquido creditado) — é o que o BACEN tira da Paysure.
  • A devolução é irreversível pelo seu sistema: bloqueie/estorne o saldo do cliente final imediatamente.
  • Atualizações posteriores da disputa (vitória, derrota, cancelamento) não disparam novo webhook — são tratadas internamente.
Webhooks de MED só são enviados pra contas marcadas como sub-gateway (PSPs que repassam transações pra clientes finais). Se você opera direto com pagadores e não gerencia clientes finais, ignore essa seção. Pra habilitar como sub-gateway, fale com suporte@paysurebr.com.

Cash-out (pagamento enviado)

Status possíveis

Boas práticas

Qualquer status diferente de 200 faz a Paysure retentar. Mesmo se você não reconhece o evento, devolva 200 com {"ok": true}.
Webhooks podem ser entregues mais de uma vez (em caso de retry após timeout). Use cashin.reference_code ou cashout.reference_code pra deduplicar do seu lado.
A Paysure envia webhooks de IPs Cloudflare. Se quiser camada extra de segurança, valide o IP de origem ou implemente uma assinatura HMAC compartilhada (em breve).
Respondemos em até 10 segundos antes de considerar timeout e retentar. Mantenha o handler rápido — processe em background se precisar de operações pesadas.

Política de retry

Em caso de falha (HTTP != 200 ou timeout), retentamos com backoff:
  • 1ª tentativa: imediata
  • 2ª tentativa: ~5 minutos
  • 3ª tentativa: ~30 minutos
Após 3 falhas, o webhook é marcado como client_error e fica disponível pra retry manual via painel.