2xx response and processes the event asynchronously.
How webhooks work
An event occurs
A payment-lifecycle event is triggered — for example, on-chain confirmations reach the required threshold and the session transitions to
paid.Crypto Checkout builds the payload
The event is written to the event log and a signed JSON payload is assembled with a unique
id, type, createdAt timestamp, and the full session data object.Delivery is attempted
Crypto Checkout POSTs the payload to every active endpoint whose
events array includes that event type (or "*"). The request includes an HMAC-SHA256 signature header so you can verify authenticity.Retries on failure
If your endpoint does not respond with a
2xx status code, Crypto Checkout will make up to 6 delivery attempts with exponential backoff over approximately 31 hours. After all attempts are exhausted the delivery is marked abandoned; you can replay individual events from the dashboard.Crypto Checkout delivers events at least once. Use the
id field on every event to detect and discard duplicate deliveries in your handler.Creating a webhook endpoint
You can register an endpoint through the dashboard or the API.- Dashboard
- API
Enter your URL
Provide a publicly reachable HTTPS URL. Crypto Checkout requires TLS — plain
http:// URLs are rejected.Select events
Choose the specific event types you want to receive, or tick All events to subscribe to everything including future event types.
Subscribing to events
Theevents array controls which event types trigger a delivery to your endpoint. You can be selective or catch-all:
Testing your endpoint
Before going live, send a syntheticsession.paid event to your endpoint to confirm your handler is working correctly.
- Dashboard
- API
Open the endpoint’s detail page and click the Test button. Crypto Checkout will POST a synthetic
session.paid payload with livemode: false to your URL and display the delivery status.Webhook endpoint object
Every endpoint is represented by the following object. Thesecret field is only returned on creation.
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the endpoint (whe_…) |
object | string | Always "webhook_endpoint" |
url | string | The HTTPS URL that receives event POST requests |
events | string[] | Event types this endpoint is subscribed to; ["*"] means all events |
active | boolean | When false, deliveries are paused but the endpoint is not deleted |
secretPrefix | string | First few characters of the secret, for identification purposes |
createdAt | string | ISO 8601 creation timestamp |
Pausing and disabling
Setactive: false on an endpoint to pause delivery without deleting it. No events will be sent while the endpoint is inactive; delivery resumes automatically when you re-enable it.
Event Types
Browse every event type, see example payloads, and learn how to deduplicate deliveries
Signature Verification
Verify the HMAC-SHA256 signature on every delivery to prevent spoofed requests