2xx status. Anything else is retried.
Events
Request format
Every webhook is aPOST with a JSON body and these headers:
The body has the same envelope for every event:
crypto.deposit.received
transaction.successful
transaction object is the same one described in Wallet and transactions.
Verify the signature
Thev1 value is the HMAC-SHA256 of t + "." + raw body, using your endpoint’s signing secret, written as hex. Compute it over the raw request body exactly as received, before any JSON parsing, and compare it in constant time.
Handle deliveries safely
- Respond with a
2xxstatus as soon as you have verified and stored the event. Any other response is retried, so do slow work after you respond. - Retries mean you can receive the same event more than once. Use the event
idto ignore duplicates. - Use the
modefield to keep test events apart from live events. - Send a
webhook.testevent from the dashboard to check your endpoint before you rely on it.

