← Voltar para a documentação da API

🔔 Webhooks - Cash API

Receba notificações automáticas sobre mudanças de status de depósitos e saques.

📡 Visão Geral

A Cash API envia webhooks para notificar sua aplicação sobre mudanças de status em tempo real.

💰 Cash-In (Depósitos)

  • Enviado quando status do depósito PIX muda
  • URL configurada no campo postbackUrl
  • Payload baseado no DepositResource

💸 Cash-Out (Saques)

  • Enviado quando status da transferência muda
  • URL configurada no campo callbackUrl
  • Payload baseado no WithdrawalResource

ℹ️ Como receber webhooks

Sua URL deve aceitar requisições POST com Content-Type: application/json e responder com status 2xx.

💰 Cash-In: Depósitos PIX

Webhooks enviados quando o status de um depósito PIX muda.

Fluxo de Status

pending → paid ou expired

Eventos e Status

Status Evento Descrição Webhook
pending Depósito criado QR Code gerado, aguardando pagamento ENVIA
paid Pagamento confirmado PIX recebido e confirmado pelo banco ENVIA
expired QR Code expirado Tempo limite do QR Code atingido sem pagamento ENVIA
refunded Estorno realizado Valor devolvido ao pagador ENVIA

Campos do Payload

CampoTipoDescrição
idstringHash único do depósito
externalIdstring|nullID externo informado na criação
methodstringMétodo de pagamento (pix)
statusstringStatus atual: pending, paid, expired, refunded
pix.codestringCódigo PIX copia e cola
pix.imageBase64stringQR Code em base64
payer.namestring|nullNome do pagador (preenchido após pagamento)
payer.documentstring|nullCPF/CNPJ do pagador
payer.emailstring|nullE-mail do pagador
amountintegerValor bruto em centavos
netAmountintegerValor líquido em centavos (após taxa)
feeintegerTaxa em centavos
endToEndIdstring|nullID E2E do PIX (preenchido após pagamento)
postbackUrlstringURL de callback configurada
createdAtdatetimeData de criação
updatedAtdatetimeData da última atualização

Exemplo de Payload

{
    "id": "dep_01HXXXXXXXXXXXXXXXXX",
    "externalId": "pedido_123",
    "method": "pix",
    "status": "paid",
    "pix": {
        "code": "00020126580014br.gov.bcb.pix0136123e4567-e89b-12d3-a456-426614174000...",
        "imageBase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
    },
    "payer": {
        "name": "João Silva",
        "document": "12345678900",
        "email": "joao@email.com"
    },
    "amount": 10000,
    "netAmount": 9900,
    "fee": 100,
    "endToEndId": "E12345678202301011234abcdefghijkl",
    "postbackUrl": "https://seusite.com/webhooks/cash",
    "createdAt": "2026-10-23 02:11:02",
    "updatedAt": "2026-10-23 02:11:02"
}

💸 Cash-Out: Saques e Transferências

Webhooks enviados quando o status de um saque/transferência muda.

Fluxo de Status

pending_approval → processing → transferred

Em caso de erro: failed, refused, returned ou cancelled

Eventos e Status

Status Evento Descrição Webhook
pending_approval Saque solicitado Saque criado, aguardando aprovação —
scheduled Saque agendado Saque agendado para processamento ENVIA
processing Processando transferência Transferência em processamento no banco ENVIA
transferred Transferência concluída Valor transferido com sucesso para a conta destino ENVIA
returned Transferência devolvida Valor devolvido (conta destino inválida ou rejeitada) ENVIA
cancelled Saque cancelado Saque cancelado antes do processamento ENVIA
refused Saque recusado Saque recusado pelo banco ou sistema ENVIA
failed Falha na transferência Erro no processamento pelo banco/BaaS ENVIA

Campos do Payload

CampoTipoDescrição
idstringHash único do saque
amountintegerValor solicitado em centavos
feeintegerTaxa de transferência em centavos
descriptionstring|nullDescrição/mensagem do saque
statusstringStatus atual da transferência
statusLabelstringLabel do status em português
typestringTipo da transferência (pix, ted)
approvedIndatetime|nullData de aprovação (se aplicável)
createdAtdatetimeData de criação do saque
updatedAtdatetimeData da última atualização

Exemplo de Payload

{
    "id": "wth_01HXXXXXXXXXXXXXXXXX",
    "amount": 50000,
    "fee": 200,
    "description": "Saque para conta bancária",
    "status": "transferred",
    "statusLabel": "Transferido",
    "type": "pix",
    "approvedIn": "2026-10-23 02:11:02",
    "createdAt": "2026-10-23 02:11:02",
    "updatedAt": "2026-10-23 02:11:02"
}

📋 Informações Técnicas

Headers Enviados

HeaderValor
Content-Typeapplication/json
Acceptapplication/json

Boas Práticas

⚠️ Importante

Nunca confie apenas no webhook para operações críticas. Sempre confirme o status via API antes de liberar valores ou confirmar operações.