Skip to main content
Transaction Monitoring emits three webhook events that together cover the full transaction lifecycle. All ride on the standard Didit webhook infrastructure with HMAC-SHA256 signing - see the webhooks reference for destinations, signing, and testing.

Event catalog

Entity-level events (user.status.updated, business.status.updated) can also fire as a consequence of transaction activity - see entity webhooks.
Sandbox applications do not emit transaction or travel-rule webhooks - test deliveries against a live application, or use API & Webhooks → Try Webhook in the console.

Envelope

Didit webhooks use a flat body: the event fields sit at the top level next to the envelope fields - there is no nested data object. Every delivery carries:

Payload shapes

transaction.created and transaction.status.updated

Both events share one payload - a compact summary plus the action_required block (or null):
The payload is deliberately thin: on receipt, fetch the full record with GET /v3/transactions/{transaction_id}/ - it returns the complete detail (parties, rule_runs, provider_results, travel_rule, cost_breakdown, decision_reason_code), including why the status changed.

travel_rule.status.updated

Fires on every non-terminal transition; once a transfer reaches FINISHED, CANCELLED, or EXPIRED, no further travel-rule events are sent for it.

Example status journeys

Simple approval

Review-then-approve

Step-up verification

Travel Rule transfer

Signature verification

Every delivery is HMAC-SHA256 signed with the destination’s shared secret and carries three signature headers plus a timestamp:
See the webhooks reference for the full verification code, including the timestamp freshness check.

Retries and delivery guarantees

  • On a 5xx, 404, timeout, or connection failure, Didit retries up to 2 times: roughly 1 minute after the initial failure, then roughly 4 more minutes after that.
  • Retried deliveries reuse the same event_id - de-dupe on it in your handler.
  • After the final failure, delivery for that event stops and your organization is notified; destinations are never silently disabled.
  • Return a 2xx fast (enqueue, then process) - slow ACKs risk timeouts and duplicate deliveries.

Idempotency

Process each webhook exactly once by storing event_id in your own dedupe store. Re-delivery of the same event is possible when your endpoint ACKs slowly or disconnects mid-request.

Subscribing

Next steps

Webhooks reference

Destinations, signing, retries.

Statuses

Full state machine.

Integration guide

Handling webhooks in production.