Skip to main content
Every delivery is an HTTP POST to your endpoint’s URL with a JSON body in the following envelope:
Delivery body
string
Unique delivery-event id (whn_…). Retries reuse the same id — deduplicate on it.
string
The event type, e.g. account.updated. See the event catalog.
datetime
When the event was created.
integer
1-based delivery attempt number.
string
API version of the payload shape. Currently 2026-07.
string | null
Id of the related account (acct_…), or null for events without account context.
object
The event’s business object, in the same shape as the corresponding GET endpoint.

Headers

Verifying the signature

Compute HMAC-SHA256 over the string "{X-Webhook-Timestamp}." + raw_request_body using your endpoint’s signing secret (returned once at creation) as the UTF-8 key, then compare against the header value, which is formatted as sha256=<hex digest>. Always verify against the raw request bytes, before any JSON parsing or re-serialization.
Python
Respond with any 2xx status within 10 seconds to acknowledge. Non-2xx responses and timeouts are retried with exponential backoff; retried deliveries carry the same id with an incremented attempt.