Skip to main content
If your webhook endpoint doesn’t respond with a 2xx status code, Kyren Pay will automatically retry the delivery.

Retry Schedule

For order and dispute events described in this guide, Kyren Pay makes up to 7 delivery attempts in total: the initial attempt plus 6 retries. Each delay is measured from the preceding failed attempt; actual dispatch may occur later. After 7 failed delivery attempts, the webhook is marked as failed and automatic retries stop.

What Counts as a Failure

A webhook delivery is considered failed if:
  • Your endpoint returns a non-2xx HTTP status code (e.g., 400, 500)
  • Your endpoint doesn’t complete its response within 10 seconds
  • The connection to your server fails (DNS error, connection refused, timeout)
A 2xx response (e.g., 200, 201, 204) is considered a successful delivery regardless of the response body.

Handling Retries

Since webhooks may be retried, your endpoint should be idempotent — processing the same event multiple times should produce the same result.

Use Event IDs for Deduplication

Every webhook event has a unique id field. Store processed event IDs durably, with a unique constraint, and commit the business change and processed marker in the same transaction:
The database methods above illustrate the transaction contract; adapt them to your storage system. Also protect the business operation with a stable identifier, such as order_id for payment fulfillment or refund_id for a refund. For dispute updates, do not deduplicate only by case ID because one case can have multiple updates.

Return 200 Quickly

For long processing, validate the signature and durably persist the event in an inbox or queue before returning 200. A worker can then process it with its own retries. If persistence fails, return a non-2xx response so Kyren can retry:

Monitoring Webhook Deliveries

When troubleshooting delivery, compare Kyren Webhook events with your own server logs. Record:
  • Your configured Webhook URL
  • The event type and order number
  • The timestamp when your server received the request
  • The response code or error your server returned
If you need Kyren to check delivery attempts, contact support with those details.

Troubleshooting