Este é o sentido de saída (API para você). Os webhooks de entrada que a plataforma expõe para receber callbacks dos provedores bancário e de KYC (por exemplo
/webhooks/bank) não fazem parte da sua integração; você não os consome.Registrar um destino
POST /api/v1/partners/me/webhook-config (API key do parceiro ou HMAC)
Registre uma vez a URL de destino, os eventos que você quer e quaisquer cabeçalhos customizados. Leia com GET e remova com DELETE no mesmo path.
string
obrigatório
O único destino HTTPS que recebe todas as suas notificações.
string[]
Filtro de assinatura. Ausente ou vazio recebe todos os eventos. Veja o catálogo abaixo para os valores válidos.
object
Cabeçalhos HTTP extras enviados em cada entrega (por exemplo um token de autorização para o seu endpoint). Os cabeçalhos de assinatura e de evento da plataforma têm precedência e nunca são sobrescritos.
Sem um destino registrado, os eventos são apenas persistidos, não enviados.
Envelope do payload
Toda entrega compartilha um envelope comum. O id de correlação varia por família de evento:intentId (cash-out e cash-in), withdrawId (saque BRLP) ou sessionId (KYC).
Catálogo de eventos
Cash-out (offramp), chave de correlação intentId
Cash-in (onramp), chave de correlação intentId
CASHIN_COMPLETED tem duas variantes, discriminadas por data.deliveryId:
- Sem
deliveryId(legado): creditar a cripto na carteira do usuário é responsabilidade do seu backend.data:correlationID, walletAddress, valueCents, transactionID, splitApplied, splitValueCents, completedAt. - Com
deliveryId: a plataforma já entregou a cripto on-chain emdata.destination, nada a creditar.data:correlationID, deliveryId, onChainTxId, asset, chain, tokenAmount, destination, completedAt.
Saque BRLP (Modo B), chave de correlação withdrawId
KYC, chave de correlação sessionId
O
data do KYC carrega externalUserId, type ('PF' | 'PJ'), provider, status, previousStatus, documentMasked, rejectionReason?, completedAt?.
Verificação de assinatura
Toda entrega é assinada. Verifique a assinatura antes de confiar no payload.webhookSecret de parceiro (entregue no onboarding e rotacionável via POST /api/v1/partners/me/rotate-webhook-secret). Calcule o valor esperado e compare com um timing-safe equal.
O prefixo do cabeçalho de assinatura tem
App como padrão (X-App-Signature, X-App-Event); o prefixo exato da sua instância é confirmado no onboarding. Parceiros legados sem segredo próprio recorrem a um segredo de assinatura global.Garantias de entrega
Retry
3 tentativas, backoff 2s / 4s / 8s, timeout de 10s por tentativa. Falha após os retries é apenas registrada; não bloqueia o fluxo de negócio.
Confirmação
Responda
2xx. Qualquer não-2xx ou timeout conta como falha e dispara um retry.Idempotência
A ordem não é garantida. Deduplique por
intentId, correlationID, withdrawId ou sessionId.Somente HTTPS
Registre apenas um destino HTTPS.