Skip to main content

O que são Webhooks

Webhooks permitem que o NTX Pay envie notificações HTTPS para o seu servidor sempre que um evento relevante ocorre — confirmação de cash-in, falha de cash-out, devolução — sem você precisar fazer polling.

Tipos de Webhook

Ao registrar um webhook via POST /api/webhooks-config, você escolhe qual tipo de evento aquela URL recebe:
Cada webhook assina exatamente um tipo. Para receber vários tipos em URLs separadas, crie um webhook por tipo — ou use all para centralizar tudo em uma URL e rotear pelo campo event do payload.

Payload

Todo webhook entrega o mesmo formato de payload:
string
Tipo do evento: transaction.cash_in.settled, transaction.cash_in.rejected, transaction.cash_in.returned, transaction.cash_out.settled, transaction.cash_out.rejected, transaction.cash_out.returned, ou as variantes .pending. Use este campo para rotear o processamento.
string
Identificador da transação. Correlacione com o id retornado na criação da cobrança/transferência.
integer
Valor em centavos MXN.
string
LIQUIDATED (liquidado), REJECTED (rejeitado), RETURNED (devolvido), EXPIRED (expirado sem pagamento) ou PENDING (em processamento).
string
CLABEs de destino e origem da transferência. Podem vir null dependendo do fluxo.
string
Nome de quem pagou (cash-in), quando informado pela rede. Pode vir null.
string
Referência numérica SPEI e comprovante, quando disponíveis.
string
Timestamp ISO 8601 do evento.

Headers

Sempre valide a assinatura antes de processar — sem isso, qualquer pessoa pode falsificar notificações. Veja Implementação.

Garantias de Entrega

  • At-least-once: você pode receber o mesmo evento mais de uma vez. Deduplique por x-event-id.
  • Retries: até 5 tentativas em backoff exponencial (a partir de ~5s) se você responder com status diferente de 2xx.
  • Timeout: 10 segundos. Responda rápido — processe assincronamente se necessário.
  • Ordem: eventos podem chegar fora de ordem em condições de erro. Confira occurredAt no payload.

Práticas Recomendadas

  1. Responda 200 imediatamente após validar a assinatura e enfileirar o evento.
  2. Deduplique por x-event-id.
  3. Roteie pelo campo event — não presuma que uma URL recebe um único tipo (especialmente com all).
  4. Trate status explicitamente — implemente os quatro estados (LIQUIDATED, REJECTED, RETURNED, PENDING).
  5. HTTPS obrigatório — webhooks só são enviados a URLs com protocolo HTTPS.

Próximos Passos

Configuração

Registre a URL na sua conta e dispare um webhook de teste

Implementação

Exemplos em Node.js, Python, Java e Go de validação HMAC