EQX sends HTTP POST requests to your registered endpoints when important events occur in your workspace. Use webhooks instead of polling to react to payout completions, deposit credits, and settlement state changes in real time.
Setup
- Go to EQX Dashboard → Settings → Webhooks
- Click Add endpoint and enter your HTTPS URL
- Select the events you want to receive
- Copy the signing secret — you’ll need it to verify payloads
Delivery
EQX delivers events with a short-lived retry policy:
- Timeout: 30 seconds per attempt
- Retries: Up to 5 attempts with exponential back-off (30s, 1m, 5m, 30m, 2h)
- Ordering: Events are not guaranteed to arrive in order. Use the
entity_id and event attempt_number to reconcile.
- At-least-once: An event may be delivered more than once. Use the
request_id as an idempotency key in your handler.
Payload envelope
Every webhook delivery has this structure:
Signature verification
Every delivery includes an X-EQX-Signature header containing an HMAC-SHA256 signature of the raw request body, signed with your endpoint’s signing secret.
Verify in Node.js:
Verify in Python:
Always verify the signature before processing the payload. Reject requests that fail verification with HTTP 401.
Responding to webhooks
Return HTTP 2xx within 30 seconds to acknowledge delivery. Any other status or a timeout triggers a retry.
Perform expensive processing asynchronously — acknowledge immediately, then process in a background job.