Webhooks permitem que seu sistema reaja a eventos de transferência em tempo real — sem necessidade de polling. Quando uma transferência é concluída, falha ou requer atenção, seu endpoint recebe uma notificação automaticamente.Documentation Index
Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
Use this file to discover all available pages before exploring further.
Eventos disponíveis
| Evento | Quando é disparado | Tipos de transferência | Ação recomendada |
|---|---|---|---|
transfer.initiated | Registro de transferência criado após confirmação da iniciação | TED OUT, P2P | Atualize o status da transferência no seu sistema; exiba “transferência em andamento” ao cliente |
transfer.processing | Hold de transação no Midaz bem-sucedido; transferência avançando para conclusão | TED OUT, P2P | Exiba ao cliente que a transferência está sendo processada |
transfer.rejected | JD SPB retornou rejeição 4xx (dados inválidos, violação de regra) | TED OUT | Notifique o cliente que a transferência foi rejeitada; fundos já liberados |
transfer.completed | Transferência liquidada com sucesso | P2P | Notifique o cliente; gere recibo; atualize exibição de saldo |
transfer.failed | Transferência atingiu falha terminal por erro 5xx ou timeout do JD SPB | TED OUT | Notifique o cliente que a transferência não foi realizada; faça reembolso se necessário |
transfer.cancelled | Transferência cancelada pelo cliente antes do processamento | TED OUT, P2P | Confirme cancelamento ao cliente; libere bloqueios de interface |
transfer.incoming.completed | TED recebida, destinatário encontrado, crédito aplicado | TED IN | Notifique o destinatário que os fundos chegaram; atualize exibição de saldo |
transfer.incoming.chargeback | Mensagem de estorno recebida para um TED IN previamente concluído (STR0010R2) | TED IN | Bloqueie o valor creditado; inicie revisão com sua equipe de compliance |
transfer.reconciliation_required | Inconsistência detectada durante deduplicação | TED IN | Marque para reconciliação manual; não credite até que seja resolvido |
Para TED OUT, o evento
transfer.completed ainda não é emitido. A conclusão do TED OUT é confirmada de forma assíncrona pelo SPB e será suportada em uma versão futura. Até lá, monitore o status do TED OUT pelo endpoint Obter Transferência ou pelo endpoint de reconciliação.Configuração de webhooks
Os webhooks são configurados por organização, de modo que cada tenant pode ter seu próprio endpoint e segredo. Configure sua
webhookUrl (deve ser HTTPS) e webhookSecret por meio da configuração administrativa. Para instruções de configuração, consulte configuração do TED.
Estrutura do payload
Todos os eventos de webhook compartilham o mesmo envelope. Os campos do envelope são estáveis entre tipos de evento; o payload específico de cada evento fica dentro de
payload.
| Campo | Tipo | Notas |
|---|---|---|
eventId | string (UUID) | Identificador único desta emissão de evento. Use-o para deduplicar entregas at-least-once no seu lado. |
version | string | Versão do schema do envelope. Atualmente v1. |
type | string | Tipo de evento, ex: transfer.completed. |
tenantId | string (UUID) | Organização dona da transferência. |
transferId | string (UUID) | Presente em eventos com escopo de transferência; omitido em eventos com escopo de tenant. |
correlationId | string | Correlaciona a cadeia de eventos produzida por uma requisição originária. |
causationId | string | Opcional. Id do evento que causou este (para fluxos encadeados). |
occurredAt | string (RFC3339, UTC) | Quando o evento ocorreu no lado do plugin. |
payload | object | Campos específicos do evento. O schema depende de type (veja abaixo). |
metadata | object | Mapa opcional string-para-string que carrega hints de tracing e roteamento. |
transfer.completed para uma transferência P2P:
payload depende do tipo de evento. Para transfer.completed, os campos são status, transferType, midazTransaction e confirmationNumber (cada um emitido apenas quando definido). Para obter valores, tarifas, dados do destinatário ou timestamps, recupere a transferência via Obter Transferência usando o transferId do envelope.
Consulte a Referência da API para os schemas completos de payload de cada tipo de evento.
Tratamento de falhas na entrega
Se o seu endpoint não responder com status 2xx dentro de 5 segundos (
WEBHOOK_TIMEOUT_MS=5000), o evento é reenviado automaticamente com backoff exponencial e full jitter. O plugin faz até WEBHOOK_MAX_RETRIES tentativas no total (padrão 3), com um delay base de WEBHOOK_RETRY_BACKOFF_MS (padrão 500 ms) dobrado a cada retry:
| Tentativa | Intervalo antes desta tentativa |
|---|---|
| 1 | Imediato |
| 2 | Aleatório em [0, 1000 ms] (base × 2^1) |
| 3 | Aleatório em [0, 2000 ms] (base × 2^2) |
WEBHOOK_MAX_RETRIES e WEBHOOK_RETRY_BACKOFF_MS se o seu endpoint precisar de um orçamento de retry mais longo ou mais curto.
Para garantir entrega confiável: responda dentro de 5 segundos, use HTTPS com certificado válido e retorne 200 mesmo para eventos que você optar por ignorar. Delegue qualquer processamento pesado para uma fila em segundo plano — mantenha seu handler de webhook rápido.
Idempotência
Seu endpoint pode receber o mesmo evento mais de uma vez. Use o
transferId (e o nome do evento) para deduplicar: se já tiver processado essa combinação, retorne 200 e não execute nenhuma ação adicional.Para desenvolvedores
Para código de validação de assinatura (JavaScript, Python, Go), implementação de retry e o checklist completo de integração, consulte o guia do desenvolvedor TED.

