Skip to main content

401 Unauthorized

CausaSolução
Header ausenteEnvie X-API-Key: gp_live_...
Chave revogadaCrie nova chave no dashboard
Espaços ou quebra de linha na chaveCopie do secret em variável de ambiente

403 Forbidden

CausaSolução
Permissão ausente na chaveAjuste em Integrações → Chaves de API
IP bloqueadoAdicione IP/CIDR na chave ou allowAnyIp: true
Conta não verificadaConclua KYC para liberar recursos do trilho PADRAO
Subcontas não habilitadasSolicite acesso via dashboard

400 Saldo ou transferência

Mensagem típicaSolução
Saldo insuficienteGET /account/balanceavailableAmount
Pendências somadasAguarde saques PROCESSING
Valor mínimoCobrança PADRAO: mín. R3,00;transfere^ncia:R 3,00; transferência: R 1,00

Webhook não chega

  1. URL HTTPS em produção
  2. Endpoint responde 2xx dentro do timeout
  3. Eventos inscritos (payment.paid, etc.)
  4. Transação criada pela mesma API key do endpoint
  5. Verifique entregas falhas em Integrações → Webhooks no dashboard
Tutorial: Webhooks na prática.

Assinatura HMAC inválida

  • Calcule HMAC sobre o raw body (bytes exatos)
  • Use o whsec_... da criação do endpoint
  • Header: x-goatpay-signature: sha256=<hex>
  • Não re-serialize JSON antes de validar

QR PIX não confirma

  • Prefira webhook payment.paid a polling agressivo
  • QR expirado → payment.pix.expired ou status CANCELED
  • Confirme trilho da chave compatível com a cobrança

429 Rate limit

100 requisições por minuto por chave. Backoff exponencial. Webhooks > polling. Rate limiting

Reembolso falha

Exige trilho PADRAO e depósito elegível com endToEndId. Use transactionId ou e2eId do depósito original.

Integração com IA gerou código errado

Ainda com problema

Abra ticket no dashboard com:
  • requestId da resposta de erro
  • Horário UTC aproximado
  • Rota e método HTTP
  • ID da transação GoatPay, se existir
Não envie gp_live_ completo nem whsec_ em tickets públicos.