Skip to main content
Sua aplicação não precisa consultar GET /payment-pix/get/:id em loop. Quando um pagamento confirma, a GoatPay envia um POST HTTPS para a URL cadastrada.

Configurar

1

1. Endpoint HTTPS

Exponha uma rota pública, por exemplo https://api.suaempresa.com/goatpay/webhook.
2

2. Cadastrar URL

Via API: POST /webhooks/create com sua chave gp_live_....
3

3. Guardar o segredo

Anote o whsec_... exibido uma única vez na criação.
4

4. Validar assinatura

Confira Segurança e assinatura em cada POST recebido.

Escopo por API key

Endpoints criados com POST /v1/webhooks/create ficam vinculados à chave usada. Recebem eventos das transações criadas pela mesma API key. Endpoints do dashboard (sem vínculo de chave) recebem eventos de toda a conta.

Teste

Dispare o evento webhook.test cadastrando o tipo na lista de events e processando um teste a partir do painel da conta, ou aguarde uma transação real da mesma API key.

Formato da entrega

Cada entrega é um POST com corpo JSON no formato abaixo. O campo event repete o tipo inscrito no endpoint; data carrega o payload do evento.
O objeto data segue o mesmo formato enxuto das respostas /v1: sem provider, accountId, metadata, direction nem updatedAt. IDs do processador aparecem como referenceId; infrações MED como infractionId.

Tipos de data

Campos úteis em transações PIX

Headers:
A assinatura é calculada sobre o raw body (bytes exatos recebidos), não sobre um objeto re-serializado.

Segurança e assinatura

Cada entrega usa HMAC-SHA256 com o segredo whsec_... da criação do endpoint.

Validação (Node.js)

Use timingSafeEqual na comparação. Nunca processe o evento sem validar x-goatpay-signature.

Retentativas

Se o endpoint não responder 2xx a tempo, a GoatPay reenvia com backoff: 1 min, 5 min, 15 min, 1 h, 4 h (até 5 tentativas).

Idempotência

Persista o id da entrega antes de processar. Duplicatas devem responder 200 sem efeito colateral.

Checklist

  • URL HTTPS em produção
  • Validar x-goatpay-signature com o whsec_... correto
  • Responder 200 após processar ou enfileirar com segurança
  • Tratar o mesmo id de entrega apenas uma vez
  • Ignorar campos extras desconhecidos em data

Eventos

Inscreva os tipos abaixo em events ao criar o endpoint. Use "*" apenas se realmente precisar de todos os eventos futuros.

Catálogo (ativos)

Eventos de cripto e boleto existem no código mas não estão ativos na API pública no momento.

PIX recebido

Disparados por cobranças POST /payment-pix/create. Em todos os exemplos, data.type é PIX_IN. payment.created — inclui QR para exibir ao pagador (payer omitido enquanto pendente):
payment.paid — pagador identificado em payer:
payment.failed:
payment.pix.expired:
payment.refunded — disparado junto com refund.completed; prefira refund.completed em integrações novas:

Estorno PIX (depósito recebido)

Disparados após POST /refunds/create. O data é o depósito original com bloco refund. refund.requested:
refund.completed:
refund.failed:

PIX enviado

Disparados por POST /transfer-pix/create. Em todos os exemplos, data.type é PIX_OUT. transfer.createdrecipient omitido até liquidar; pode incluir securityReview:
transfer.completedrecipient preenchido após liquidação:
transfer.failed:

Transferência interna

Disparados por POST /transfer-internal/create. Dois eventos por operação: transfer.internal.completed:
transfer.internal.received:
transfer.internal.received vai para endpoints da conta destino, não da API key que originou o envio.

MED

Disputas MED no trilho PADRAO (PIX regulado). O objeto data segue o mesmo formato de GET /meds/get. Exemplo med.created:
Exemplo med.evidence_sent:
Exemplo med.updated (disputa rejeitada — saldo liberado):
payment_link.paid — payload próprio (não é PIX_IN):
Para links pagos via PIX, payment.paid também pode ser emitido (formato de PIX recebido). Para checkout de link, inscreva-se em payment_link.paid.

Nota fiscal

Emitidos quando a cobrança usa emitFiscalInvoice: true e a emissão automática está ativa. O webhook traz apenas o ID.

Teste

Fluxos comuns

Endpoints da API

Permissões na API key: webhooks/create, webhooks/list, webhooks/get, webhooks/update, webhooks/delete.