Skip to Content
ConceitosWebhooks

Webhooks

Várias etapas do crédito são assíncronas (consulta de margem, assinatura, averbação, desembolso). Em vez de ficar consultando o recurso em loop (polling), cadastre URLs e a Socinal avisa você quando cada evento concluir.

Cadastrando um endpoint

Registre a URL e os eventos

curl -X POST https://api.socinal.com.br/v1/webhooks \ -H 'Authorization: Bearer SEU_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "url": "https://seu-sistema.com.br/webhooks/socinal", "eventos": ["autorizacao.confirmada", "assinatura.concluida", "averbacao.concluida", "desembolso.liquidado"] }'

Guarde o secret

{ "id": "wh_a1b2...", "url": "https://seu-sistema.com.br/webhooks/socinal", "eventos": ["autorizacao.confirmada", "assinatura.concluida", "averbacao.concluida", "desembolso.liquidado"], "secret": "whsec_abc123...", "ativo": true, "criado_em": "2026-06-27T12:00:00Z" }

O secret é exibido só uma vez — ele é a chave para validar a assinatura das entregas.

Eventos disponíveis

EventoDispara quando
autorizacao.confirmadaO trabalhador aceitou a autorização (via API ou pelo link web)
margem.concluidaA consulta de margem terminou
margem.falhouA consulta de margem falhou
assinatura.concluidaA assinatura foi concluída
averbacao.concluidaA averbação foi registrada
averbacao.falhouA averbação falhou
desembolso.liquidadoO PIX foi liquidado
desembolso.falhouO desembolso falhou

Validando a assinatura

Cada entrega vem assinada com HMAC-SHA256 no header X-Webhook-Signature: sha256=<hex>. Calcule o HMAC do corpo cru da requisição usando o seu secret e compare:

import { createHmac, timingSafeEqual } from 'node:crypto'; function assinaturaValida(corpoCru: string, header: string, secret: string) { const esperado = createHmac('sha256', secret).update(corpoCru).digest('hex'); const recebido = header.replace('sha256=', ''); return timingSafeEqual(Buffer.from(esperado), Buffer.from(recebido)); }

Valide a assinatura antes de processar o payload, e responda 200 rapidamente — faça o processamento pesado em segundo plano. Entregas sem 200 são reenviadas com backoff.

Webhooks vs. polling

Prefira webhooks para resultados assíncronos. Use as consultas (GET /v1/emprestimos/{id}, GET /v1/emprestimos/{id}/averbacao) como fallback — por exemplo, para reconciliar caso você tenha perdido uma entrega.