Exchange Webhooks
Real-time notifications for orders, withdrawals, deposits, and beneficiaries
Overview
Exchange emits webhooks whenever one of your resources changes state, so you can react to events as they happen instead of polling the API. Each event is delivered as an HTTP POST to the endpoint you configure, with the body in a consistent envelope:
Webhooks are delivered via Svix, and the signing, retry, and recovery mechanics are identical to those described on the Webhooks page. This guide covers the Exchange-specific event types and payloads; see Securing and delivery for the shared mechanics.
Event Types
Exchange emits events across four resources. The payload for an event matches the resource named in its eventType.
Order events — payload is an Order:
Withdrawal events — payload is a Withdrawal:
Deposit events — payload is a Deposit:
Beneficiary events — payload is a Beneficiary:
Payloads
Each payload is the same object you receive from the corresponding Exchange API endpoint, so you can reuse the same parser for both. The full field-level schemas live in the Exchange Webhooks API Reference. The key fields and status values for each resource are summarised below.
Order
Withdrawal
Deposit
Beneficiary
Example Webhook Payloads
A filled order:
A completed withdrawal:
A credited deposit:
An activated beneficiary:
Handling events
Switch on eventType to route each event to the right handler. The payload already matches the resource you would fetch from the API, so you can reuse your existing models:
Securing and delivery
Exchange webhooks use the same delivery infrastructure as the rest of CrissCross, so the following all work exactly as documented on the Webhooks page:
- Subscribing — create and configure endpoints from the webhooks section of your CrissCross dashboard, selecting the Exchange events you want to receive.
- Signature verification — every delivery is signed with Svix
svix-id,svix-timestamp, andsvix-signatureheaders. Verify them before processing. See Securing Webhooks. - Idempotency — deduplicate on the Svix message ID, since retries and manual replays can deliver the same event more than once. See Best Practices.
- Retries — failed deliveries are retried on an exponential backoff schedule. See Webhook Retries.
- Recovery — resend, replay, and recover past messages from the dashboard. See Resending and Replaying Webhooks.
Acknowledge every delivery by returning any 2xx status. Anything else (including 3xx redirects and timeouts) is treated as a failure and retried.