Los webhooks permiten que su sistema reaccione a los eventos de transferencia en tiempo real — sin necesidad de polling. Cuando una transferencia se completa, falla o requiere atención, su endpoint recibe una notificación automáticamente.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 disponibles
| Evento | Cuándo se activa | Tipos de transferencia | Acción recomendada |
|---|---|---|---|
transfer.initiated | Registro de transferencia creado después de confirmar la iniciación | TED OUT, P2P | Actualice el estado de la transferencia en su sistema; muestre “transferencia en curso” al cliente |
transfer.processing | Retención de transacción Midaz exitosa; la transferencia avanza hacia la finalización | TED OUT, P2P | Muestre al cliente que la transferencia está siendo procesada |
transfer.rejected | JD SPB retornó un rechazo 4xx (datos inválidos, violación de regla) | TED OUT | Notifique al cliente que la transferencia fue rechazada; fondos ya liberados |
transfer.completed | Transferencia liquidada exitosamente | P2P | Notifique al cliente; genere recibo; actualice la visualización del saldo |
transfer.failed | La transferencia alcanzó un fallo terminal por error 5xx o timeout de JD SPB | TED OUT | Notifique al cliente que la transferencia no se procesó; reembolse si es necesario |
transfer.cancelled | Transferencia cancelada por el cliente antes del procesamiento | TED OUT, P2P | Confirme la cancelación al cliente; libere cualquier bloqueo en la interfaz |
transfer.incoming.completed | TED entrante recibido, destinatario encontrado, crédito aplicado | TED IN | Notifique al destinatario que los fondos han llegado; actualice la visualización del saldo |
transfer.incoming.chargeback | Mensaje de contracargo recibido para un TED IN previamente completado (STR0010R2) | TED IN | Congele el monto acreditado; inicie revisión con su equipo de cumplimiento |
transfer.reconciliation_required | Inconsistencia detectada durante la deduplicación | TED IN | Marque para conciliación manual; no acredite hasta que se resuelva |
Para TED OUT, el evento
transfer.completed aún no se emite. La finalización de TED OUT se confirma de forma asíncrona por SPB y será soportada en una versión futura. Hasta entonces, monitoree el estado de TED OUT a través del endpoint Get Transfer o el endpoint de conciliación.Configurar webhooks
Los webhooks se configuran por organización, de modo que cada tenant puede tener su propio endpoint y secreto. Configure su
webhookUrl (debe ser HTTPS) y webhookSecret a través de la configuración de administrador. Para instrucciones de configuración, consulte Configuración TED.
Estructura del payload
Todos los eventos webhook comparten el mismo envelope. Los campos del envelope son estables entre tipos de evento; el payload específico de cada evento vive dentro de
payload.
| Campo | Tipo | Notas |
|---|---|---|
eventId | string (UUID) | Identificador único de esta emisión de evento. Úselo para deduplicar entregas at-least-once en su lado. |
version | string | Versión del schema del envelope. Actualmente v1. |
type | string | Tipo de evento, p. ej., transfer.completed. |
tenantId | string (UUID) | Organización propietaria de la transferencia. |
transferId | string (UUID) | Presente en eventos con alcance de transferencia; omitido en eventos con alcance de tenant. |
correlationId | string | Correlaciona la cadena de eventos producida por una solicitud originaria. |
causationId | string | Opcional. Id del evento que causó este (para flujos encadenados). |
occurredAt | string (RFC3339, UTC) | Cuándo ocurrió el evento del lado del plugin. |
payload | object | Campos específicos del evento. El schema depende de type (vea más abajo). |
metadata | object | Mapa opcional string-a-string que transporta hints de tracing y enrutamiento. |
transfer.completed para una transferencia P2P:
payload depende del tipo de evento. Para transfer.completed, los campos son status, transferType, midazTransaction y confirmationNumber (cada uno emitido solo cuando está definido). Para obtener montos, tarifas, datos del destinatario o marcas de tiempo, recupere la transferencia mediante Get Transfer usando el transferId del envelope.
Consulte la Referencia de API para los esquemas completos de payload de cada tipo de evento.
Manejo de fallas de entrega
Si su endpoint no responde con un estado 2xx dentro de 5 segundos (
WEBHOOK_TIMEOUT_MS=5000), el evento se reintenta automáticamente con retroceso exponencial y full jitter. El plugin realiza hasta WEBHOOK_MAX_RETRIES intentos en total (predeterminado 3), con un retraso base de WEBHOOK_RETRY_BACKOFF_MS (predeterminado 500 ms) duplicado en cada reintento:
| Intento | Demora antes de este intento |
|---|---|
| 1 | Inmediata |
| 2 | Aleatoria en [0, 1000 ms] (base × 2^1) |
| 3 | Aleatoria en [0, 2000 ms] (base × 2^2) |
WEBHOOK_MAX_RETRIES y WEBHOOK_RETRY_BACKOFF_MS si su endpoint necesita un presupuesto de reintentos más largo o más corto.
Para garantizar una entrega confiable: responda dentro de 5 segundos, use HTTPS con un certificado válido, y devuelva 200 incluso para los eventos que decida ignorar. Delegue cualquier procesamiento pesado a una cola en segundo plano — mantenga su manejador de webhooks ágil.
Idempotencia
Su endpoint puede recibir el mismo evento más de una vez. Use el
transferId (y el nombre del evento) para deduplicar: si ya procesó esa combinación, devuelva 200 y no realice ninguna acción adicional.Para desarrolladores
Para código de validación de firma (JavaScript, Python, Go), implementación de reintentos y la lista de verificación de integración completa, consulte la guía para desarrolladores TED.

