Webhooks Globais
Cadastrados via painel ou API (
POST /v1/webhooks) para escutar todos os eventos da conta (cobranças e saques).Webhooks por Cobrança (notification_url)
Passados diretamente no parâmetro
notification_url da cobrança. Ficam isolados com escopo estrito à transação (tx:<id>) e utilizam segredo criptográfico próprio (notification_secret).Eventos Suportados
Qual é a diferença entre
payment.confirmed e payment.paid?No PIX (Sistema de Pagamentos Instantâneos do Banco Central do Brasil), a liquidação entre instituições financeiras ocorre em tempo real no SPI. Não existe o fluxo de cartão de crédito (onde há pré-autorização e posterior captura). Portanto, payment.paid e payment.confirmed representam exatamente o mesmo evento: o PIX foi pago e liquidado. Ambos os eventos são suportados e podem ser selecionados no painel ou via API.Identificação do Ambiente (Sandbox vs Produção)
Para que seu sistema identifique com total segurança se o webhook recebido é de teste (Sandbox) ou transação real (Produção), a KavroPay disponibiliza duas formas nativas:- Pelo Cabeçalho HTTP:
X-Kavro-Environment: sandbox(para cobranças geradas com chavekvk_test_...)X-Kavro-Environment: live(para cobranças geradas com chavekvk_live_...)
- Pelo Payload JSON:
"environment": "sandbox"ou"environment": "live""livemode": false(Sandbox) ou"livemode": true(Produção)
Cabeçalhos Enviados em Cada Webhook
Todas as requisições enviadas pela KavroPay para a sua URL de notificação contêm os seguintes cabeçalhos HTTP:Para garantir máxima compatibilidade com bibliotecas e versões anteriores, a KavroPay também envia em paralelo os headers minúsculos
x-kavropay-signature e x-kavropay-event. Veja o guia completo em Validação de Assinatura HMAC.Payloads dos Eventos
1. Pagamento Confirmado (payment.paid / payment.confirmed)
Disparado no instante em que o cliente conclui o pagamento do PIX no banco dele.
2. Cobrança Expirada (payment.expired)
Disparado quando o tempo de tolerância (expires_at) do QR Code se esgota sem que o pagamento tenha sido efetuado.
3. Pagamento Reembolsado (payment.refunded)
Disparado quando uma cobrança anteriormente paga passa pelo processo de reembolso ou estorno MED.
4. Saque PIX Concluído (withdrawal.completed)
Disparado quando uma solicitação de retirada/saque (POST /v1/withdrawals) é processada e o Banco Central confirma o depósito na conta de destino.
Política de Retentativas (Retry Policy)
Caso seu servidor retorne status HTTP diferente de2xx (como 500, 502, 504 ou timeout), a KavroPay aciona uma política de retentativa com backoff exponencial:
- Total de tentativas: até 18 retentativas.
- Intervalo: de 15 segundos até horas, cobrindo até 72 horas de tentativas.
- Resposta esperada: Seu endpoint deve responder com HTTP
200ou204em menos de 10 segundos.
