Skip to main content

Webhook Signature

  • Secured with HMAC-SHA256 signature.
  • Sezzle-Signature header contains a hash of the webhook body, generated using the merchant private key.
  • Always verify the signature matches the webhook data to confirm it originates from Sezzle.

Webhook Delivery and Network

  • Webhooks are server-to-server HTTP POST requests sent from Sezzle’s infrastructure directly to your endpoint.
  • They do not originate from a browser or from a resolvable Sezzle hostname, so there is no domain to add to an allowlist.
  • Requests carry a standard server-side user-agent and none of the headers a browser sends, such as cookies, Referer, or Accept-Language. Bot-mitigation rules on some WAF and CDN products score requests on those signals and may block deliveries.
If your endpoint sits behind a security product, we recommend exempting your webhook path from bot rules, then verifying the Sezzle-Signature header in your application as described above. These are two separate steps. A rule that admits any request carrying a Sezzle-Signature header does not authenticate anything on its own, since any caller can set that header to any value. The security comes from recomputing the HMAC over the request body with your private key and rejecting requests whose signature does not match. Done that way, signature verification confirms an event genuinely came from Sezzle, which source-IP filtering alone cannot do.
If your security policy requires a source IP allowlist, contact your Account Manager. Our egress addresses are not published here so that we can notify affected merchants directly ahead of any infrastructure change.

Webhook Event Payload

string
Unique identifier for the webhook event.
string
Timestamp (ISO 8601) when the event was generated.
string
Type of the eventAvailable options: customer.tokenized, order.authorized, order.captured, order.refunded, dispute.merchant_input_requested, dispute.deadline_approaching, dispute.closed.customer_win, dispute.closed.merchant_win, dispute.closed.neutral
string
Type of data associated with the event.Available options: customer, order, dispute
object
Payload data specific to the event type. See options in the applicable accordion below.

Examples per Event

  • The "uuid" is the webhook UUID
  • The "data.uuid" is the order UUID that can be used on the API call to get order details
  • The "data.authorization.uuid" is the UUID for the authorization
  • The "uuid" is the webhook UUID
  • The "data.uuid" is the order UUID that can be used on the API call to get order details
  • The "data.capture.uuid" is the UUID for the capture
  • The "data.uuid" is the order UUID that can be used on the API call to get order details
Note on the source field:
  • If the value is "dashboard", it’s initiated from the merchant dashboard
  • If the value is "gateway", it’s via the gateway API
The following applies to the following webhooks:
  • dispute.merchant_input_requested
  • dispute.deadline_approaching
  • dispute.closed.customer_win
  • dispute.closed.merchant_win
  • dispute.closed.neutral

Webhook Acceptance and Retries

  • Considered delivered upon receiving any HTTP 2xx response, such as 200, 202, or 204.
  • Any other response triggers retries:
    • Multiple attempts in the first hour.
    • A few attempts throughout the day.
    • Final attempts one day and three days later, spanning five days total.
  • If the final retry fails, the webhook subscription is deleted for all events.
  • To resume receiving webhooks, recreate the webhook.
  • Webhooks may not arrive in chronological order, as new ones can be sent before retries of older ones.
  • Retried webhooks use the current merchant private key for signing, so the signature may differ from the original if the key has changed.