Skip to main content
Payment Webhooks use at-least-once delivery. A timeout or non-2xx response is retried automatically on an exponential-backoff schedule. Duplicate and out-of-order deliveries are possible.

Retry schedule

Failed deliveries are retried with increasing delays. The platform uses exponential backoff with the following default intervals after the initial attempt: All attempts are exhausted within roughly 10 hours. After the final attempt, the event stops retrying automatically. Use the manual retrigger to redeliver it. A delivery is considered failed when your endpoint returns a non-2xx status or does not respond within 15 seconds.

Handling deliveries

Your endpoint should:
  1. Verify the signature against the raw body.
  2. Persist the event under a unique constraint on its envelope id.
  3. Return 2xx quickly after durable acceptance.
  4. Process slow business work asynchronously.
  5. Ignore a duplicate id without repeating side effects.

Manual retrigger

POST /v1/webhook_events/{id}/retrigger resubmits the persisted canonical payload. It does not rebuild or mutate the event. Ownership and API-key scope checks still apply.
SUBMITTED means the event was accepted for delivery, not confirmed merchant receipt. See Payment Webhooks overview.