Skip to main content
Pense nos webhooks como “mensagens enviadas pela Alpa para o seu sistema”, sem que você precise ficar consultando a API o tempo todo.

Por que usar webhooks?

Sem webhooks, sua aplicação teria que perguntar para a API a cada segundo se uma transação já foi confirmada. Isso é lento e ineficiente. Com webhooks, a Alpa avisa você imediatamente quando o pagamento é confirmado, entregando os dados do evento. Assim você pode atualizar o status de um pedido, liberar acesso a um produto, enviar e-mails de confirmação ou registrar movimentações financeiras — de forma automática.

Ambientes (Desenvolvimento vs Produção)

Ambientes da Alpa

  • Webhooks criados com chaves de Desenvolvimento recebem eventos simulados
  • Webhooks criados com chaves de Produção recebem eventos reais

Formato do payload

Todos os eventos compartilham o mesmo envelope:
O campo type identifica o evento. O campo data carrega os dados do objeto afetado.

Exemplo: transaction.completed

Dados sensíveis: documentos (CPF/CNPJ) são mascarados nos payloads. Para cartão, apenas os últimos 4 dígitos e a bandeira são enviados.

Eventos suportados

Evento (type)Quando é disparado
transaction.createdNova transação criada (status PENDING)
transaction.updatedStatus da transação alterado
transaction.completedPagamento confirmado e saldo creditado (PAID)
transaction.failedPagamento falhou (FAILED)
transaction.refundedReembolso concluído
payment_link.createdNovo link de pagamento criado
payment_link.updatedLink de pagamento atualizado
balance.updatedSaldo da carteira atualizado
subscription.cancelledAssinatura cancelada
kyc.submitted / kyc.approved / kyc.rejectedMudanças no status de KYC
advance.created / advance.approved / advance.rejectedAntecipações
withdrawal.requested / withdrawal.completed / withdrawal.failedSaques

Segurança: assinatura HMAC

Cada webhook enviado pela Alpa inclui uma assinatura no header X-Webhook-Signature, gerada com HMAC-SHA256 sobre o corpo bruto da requisição e codificada em hexadecimal (prefixada por sha256=). Seu backend deve recalcular a assinatura e comparar com a recebida usando comparação em tempo constante.
Use o corpo bruto (raw body) para validar — não o JSON re-serializado. Sempre valide a assinatura antes de processar o evento.
Usando um dos SDKs oficiais? Eles já trazem verifyWebhookSignature(payload, signature, secret) pronto.

Criando uma assinatura de webhook

1

Defina seu endpoint

Crie um endpoint HTTPS público que receberá as notificações.

Requisitos do endpoint

  • Deve ser HTTPS (HTTP não é aceito)
  • Deve responder 200 OK dentro de 10 segundos
  • Deve aceitar requisições POST com body JSON
2

Crie a assinatura via API

A resposta inclui o secret da assinatura apenas na criação — guarde-o com segurança.
3

Valide os eventos recebidos

Implemente a validação HMAC no seu endpoint para garantir que os eventos são legítimos.

Boas práticas

Recomendações importantes

  • Use HTTPS em todos os webhooks
  • Valide a assinatura HMAC em cada requisição recebida
  • Processe cada evento uma única vez (idempotência via campo id)
  • Responda 200 OK somente após concluir o processamento
  • Não valide o payload inteiro com schemas rígidos — novos campos podem ser adicionados sem aviso prévio

Precisa de ajuda?

Nossa equipe pode te ajudar. Contate-nos: suporte@usealpa.com