Webhooks

There are 2 ways to get notified of order status changes via webhooks:

  1. Global webhook URL set in the merchant dashboard (applies to all orders)

  2. Per-order webhookUrl field when creating an order (overrides global URL for that order)

When an order status changes, a POST request is sent to the webhook URL with the following payload type:

Example payload

Webhook Verification

We send a signature with each webhook request to protect merchants from fraudulent requests. Each request should be verified using a secret provided in the merchant dashboard.

The signature is sent in the x-signature HTTP header.

The signature is computed as follows:

TypeScript example:

Webhook Response Requirements

Your webhook endpoint must:

  • Respond with HTTP status code 2xx to acknowledge receipt

  • Respond within 20 seconds (requests taking longer will timeout)

Any other status code or timeout will be considered a failure.

Retry Policy

If your webhook endpoint fails to respond successfully:

  • We will retry up to 10 times

  • Retries will be attempted with exponential backoff: 1sec, 2sec, 4sec, 8sec, 16sec, 32sec, 64sec, 128sec, 256sec, 512sec

  • Webhooks can be viewed in the merchant dashboard

Last updated