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 comPOST /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 eventowebhook.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 é umPOST 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:
Segurança e assinatura
Cada entrega usa HMAC-SHA256 com o segredowhsec_... da criação do endpoint.
Validação (Node.js)
Retentativas
Se o endpoint não responder2xx a tempo, a GoatPay reenvia com backoff: 1 min, 5 min, 15 min, 1 h, 4 h (até 5 tentativas).
Idempotência
Persista oid da entrega antes de processar. Duplicatas devem responder 200 sem efeito colateral.
Checklist
- URL HTTPS em produção
- Validar
x-goatpay-signaturecom owhsec_...correto - Responder
200após processar ou enfileirar com segurança - Tratar o mesmo
idde entrega apenas uma vez - Ignorar campos extras desconhecidos em
data
Eventos
Inscreva os tipos abaixo emevents 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. Odata é 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.created — recipient omitido até liquidar; pode incluir securityReview:
transfer.completed — recipient 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 objetodata segue o mesmo formato de GET /meds/get.
Exemplo
med.created:
med.evidence_sent:
med.updated (disputa rejeitada — saldo liberado):
Links de pagamento
payment_link.paid — payload próprio (não é PIX_IN):
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 usaemitFiscalInvoice: 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.
