Webhooks — conceitos e segurança
Webhooks são notificações HTTP POST enviadas pela BS Finance para uma URL sua sempre que um evento relevante acontece (Pix recebido, devolução concluída, infração aberta, cobrança paga, etc).
Garantias de entrega
- Entrega at-least-once: o mesmo evento pode chegar mais de uma vez. Implemente idempotência usando o campo
event_id. - Retentativas exponenciais por até 24 horas em caso de falha (timeout, 5xx, conexão recusada).
- Timeout de 10 segundos por requisição. Responda rapidamente com
2xxe processe o payload em background.
Verificação de assinatura
Cada requisição inclui o header BS-Signature contendo um HMAC SHA-256 do corpo usando o secret configurado no webhook.
import crypto from "node:crypto";
function verify(signature, rawBody, secret) {
const expected = crypto
.createHmac("sha256", secret)
.update(rawBody)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}