Available events
| Event | When it fires | Transfer types | Recommended action |
|---|---|---|---|
transfer.initiated | Transfer record created after initiation is confirmed | TED OUT, P2P | Update transfer status in your system; show “transfer in progress” to the customer |
transfer.pending | TED OUT entered PENDING state — submitted to JD SPB, awaiting acknowledgment | TED OUT | Show customer that transfer is pending network acknowledgment |
transfer.processing | Midaz transaction hold succeeded; transfer advancing toward completion | TED OUT, P2P | Show customer that transfer is being processed |
transfer.rejected | JD SPB returned a 4xx rejection (invalid data, rule violation) | TED OUT | Notify customer that transfer was rejected; funds already released |
transfer.completed | Transfer settled successfully | P2P | Notify customer; generate receipt; update balance display |
transfer.failed | Transfer reached a terminal failure due to 5xx error or timeout from JD SPB | TED OUT | Notify customer that transfer did not go through; refund if needed |
transfer.cancelled | Transfer cancelled by customer before processing | TED OUT, P2P | Confirm cancellation to customer; release any UI locks |
transfer.incoming.received | Raw incoming JD message persisted — recipient lookup not yet started | TED IN | Log the event; await transfer.incoming.completed for final confirmation |
transfer.incoming.completed | Inbound TED received, recipient found, credit applied | TED IN | Notify recipient that funds have arrived; update balance display |
transfer.incoming.chargeback | Chargeback message received for a previously completed TED IN (STR0010R2) | TED IN | Freeze the credited amount; initiate review with your compliance team |
transfer.reconciliation_required | Inconsistency detected during deduplication | TED IN | Flag for manual reconciliation; do not credit until resolved |
For TED OUT, the
transfer.completed event is not yet emitted. TED OUT completion is confirmed asynchronously by SPB and will be supported in a future release. Until then, monitor TED OUT status via the Get Transfer endpoint or the reconciliation endpoint.Configuring webhooks
Webhooks are configured per organization, so each tenant can have its own endpoint and secret. Set your
webhookUrl (must be HTTPS) and webhookSecret through the admin configuration. For setup instructions, see TED configuration.
Payload structure
All webhook events follow the same envelope. Here is an example of the most common event,
transfer.completed:
See the API Reference for full payload schemas for each event type.
Handling delivery failures
If your endpoint does not respond with a 2xx status within 5 seconds (
WEBHOOK_TIMEOUT_MS=5000), the event is retried automatically with exponential backoff:
| Attempt | Delay |
|---|---|
| 1 | Immediate |
| 2 | 1 second |
| 3 | 2 seconds |
| 4 | 4 seconds |
| 5 | 8 seconds |
Idempotency
Your endpoint may receive the same event more than once. Use the
transferId (and the event name) to deduplicate: if you have already processed that combination, return 200 and take no further action.For developers
For signature validation code (JavaScript, Python, Go), retry implementation, and the full integration checklist, see the TED developer guide.

