Token inválido ou ausente
Sintoma:401 Unauthorized em qualquer chamada.
Payload inválido (400 / 422)
Sintoma:400 Bad Request ou 422 Unprocessable Entity.
externalId duplicado (409)
Sintoma: 409 Conflict.
Transação não encontrada (404)
Sintoma:404 Not Found em GET /api/pix/cash-in/{id} ou similar.
Webhook não recebido
Sintoma: pagamento confirmado (via GET), mas nenhum webhook chegou.1
Verificar o registro
GET /webhook — confirmar que a URL está registrada e correta.2
Verificar o endpoint
Testar a URL com uma requisição manual (
curl -X POST https://seu-sistema.com/webhooks/pix -H "Content-Type: application/json" -d '{}') — deve retornar 2xx (mesmo sem assinatura válida, o endpoint deve estar acessível).3
Verificar TLS
Certificado público válido, sem autoassinado, na URL registrada.
4
Verificar logs
Logs do seu endpoint de webhook para o período — possível 5xx que gerou retentativas sem sucesso.
5
Verificar WAF / firewall
Regras de WAF podem bloquear headers como
Digital-Signature. Permitir passagem desse header.6
Consultar via GET
Se o pagamento já está
PAID na consulta, o estado real está correto. Reconciliar localmente e investigar a entrega em segundo plano.Assinatura inválida
Sintoma: verificação deDigital-Signature sempre falha.
QR Code expirado
Sintoma: pagador informa que o QR não funciona ou o cash-in estáEXPIRED.
Refund rejeitado
Sintoma:422 ao tentar criar refund-in.
Estado ambíguo (PROVIDER_RESULT_UNKNOWN / RECONCILIATION_REQUIRED)
Sintoma: transação presa sem avançar para estado terminal.
Veja Reconciliação para o fluxo completo.
Cash-out falhado inesperadamente
Sintoma: cash-out vai aFAILED sem causa aparente.
Inconsistência entre consulta e notificação
Sintoma: GET retornaCONFIRMED mas o webhook diz FAILED (ou vice-versa).
Regra: GET /.../{id} é o dado mais recente e autoritativo. Webhooks são at-least-once e podem chegar fora de ordem.

