ApexPy Docs · v1
Dashboard API Keys

Webhooks — Visão Geral

Webhooks permitem que você receba notificações em tempo real sobre mudanças de status de suas transações, sem precisar fazer polling na API.

Como Funciona

  1. Configure uma URL de webhook no Seller Dashboard
  2. Quando um evento ocorrer, enviamos uma requisição POST para sua URL com o payload do evento
  3. Valide a assinatura HMAC no header X-Apexpy-Signature
  4. Processe o evento e retorne HTTP 200
Configuração só no painel

Não existe POST /v1/webhooks na API pública. Endereço, eventos e secret ficam em Dashboard → Webhooks. Por cobrança, use callback_url.

Dois modos de notificação

1. Webhook global (dashboard)

Cadastre uma URL no painel. Ela recebe os eventos que você marcar (todas as cobranças e saques da conta).

2. Callback URL pontual (por cobrança)

Envie um callback_url no payload de criação da cobrança para receber notificações apenas desta cobrança:

POST /v1/charges

{
  "amount": 10000,
  "payment_method": "pix",
  "callback_url": "https://seusite.com.br/pagamento/callback.php",
  "customer": { "name": "João Silva" }
}

Payload do callback_url (PIX)

Quando o pagamento PIX for confirmado, sua URL recebe um JSON enxuto (não o envelope event + data do webhook global):

{
  "id": "ci_k7m2p9xr4nqs",
  "status": "paid",
  "amount": 10000,
  "txid": "E12345678202511281234567890123456"
}
Identificação do pedido via callback_url

O campo id é o identificador da cobrança (ci_...). Guarde o pix.txid na criação e use-o como fallback — o txid é imutável e vem do arranjo PIX.

$pedido = buscarPor('transaction_id', $dados['id']);
if (!$pedido && !empty($dados['txid'])) {
    $pedido = buscarPor('pix_txid', $dados['txid']);
}

Eventos disponíveis

Evento Descrição
charge.createdCobrança criada
charge.paidCobrança paga
charge.failedCobrança falhou
charge.refundedCobrança reembolsada
charge.cancelledCobrança cancelada
charge.expiredCobrança PIX expirada
payout.createdSaque criado
payout.completedSaque concluído
payout.failedSaque falhou

Boas práticas

  • Valide a assinatura de todo webhook (ver segurança)
  • Retorne HTTP 200 o mais rápido possível — processe em background se necessário
  • Implemente idempotência — o mesmo evento pode ser entregue mais de uma vez
  • Armazene o pix.txid na criação de cobranças PIX