Set up an endpoint
Tell us anhttps URL for each mode at support@flipeet.io. If you don’t give a sandbox URL, sandbox events go to your live URL, signed with the sandbox secret. You can also pass callbackUrl on a single deposit or withdrawal to send its events somewhere else.
Reply with any 2xx status within 10 seconds. Do slow work, like sending emails, after you reply.
Events
The event name is in the body’s
event field and in the x-flipeetpay-event header. Every event has reference and livemode. Ramp orders are described by their status instead.
Headers
Verify signatures
Each mode has its own signing secret, which we send with your key. The v2 signature is an HMAC-SHA256, keyed with that secret, of the timestamp, a full stop, and the raw body. Because the timestamp is signed, you can refuse old deliveries that someone replays.- Use the raw body. Parsing the JSON and encoding it again changes the bytes, and the check fails. In Express, use
express.raw()on this route. - Compare in constant time, as above, not with
===. - Reject anything older than five minutes.
Retries and duplicates
If your endpoint doesn’t answer with2xx, we try again: deposit, withdrawal and ramp events after 5 and 30 seconds, and checkout events after 2 seconds. After that the delivery is marked failed. Find it with List webhook deliveries and send it again with Resend a webhook.
You may get the same event more than once. Use reference and event to make handling it twice harmless, for example by marking an order paid only if it isn’t already.
Test your endpoint
webhook.test
