Webhooks de saída

Receba no seu sistema, em tempo real, os eventos do seu programa. Configure em Integrações → Webhooks de saída.

Eventos

EventoQuando
conversion.createdUm pagamento de cliente indicado foi registrado
commission.accruedUma comissão entrou no extrato de um afiliado
payout.completedO Pix de um afiliado foi confirmado ou o pagamento manual foi marcado

Cada entrega é um POST com JSON:

{
  "id": "5f1c…",
  "type": "conversion.created",
  "created_at": "2026-09-28T13:05:00.000Z",
  "data": { "id": "…", "program": "parceiros", "amount_cents": 19900, "first_payment": true }
}

Os campos de cada evento estão na referência da API.

Verificar a assinatura

O cabeçalho Filiafy-Signature traz t=<unix>,v1=<hex>, onde v1 é o HMAC-SHA256 de t.corpo com o segredo do endpoint (mostrado uma vez, ao criar). É o mesmo esquema do Stripe:

import { createHmac, timingSafeEqual } from 'node:crypto'

export function assinaturaValida(header, corpo, segredo) {
  const partes = Object.fromEntries(header.split(',').map((p) => p.split('=')))
  if (Math.abs(Date.now() / 1000 - Number(partes.t)) > 300) return false
  const esperado = createHmac('sha256', segredo).update(`${partes.t}.${corpo}`).digest('hex')
  return timingSafeEqual(Buffer.from(esperado), Buffer.from(partes.v1 ?? ''))
}

Use o corpo cru, antes de fazer parse do JSON.

Entregas e novas tentativas

  • Responda com qualquer status 2xx em até 10 segundos.
  • Falhas são tentadas de novo por cerca de 24 horas (8 tentativas, com intervalos crescentes).
  • Filiafy-Event-Id é o mesmo em todas as tentativas: use para ignorar repetições.
  • Em Ver entregas você vê cada tentativa, o corpo enviado e pode reenviar.

Só aceitamos URLs https públicas; endereços de redes internas são recusados.

Algo errado ou faltando? Escreva para suporte@filiafy.com.br.