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

Kyren Pay retries failed webhooks up to 7 times: After 7 failed attempts, the webhook is marked as failed and no further retries are attempted.

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 respond within 30 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 and skip duplicates:
In production, store processed event IDs in a database (e.g., Redis or your primary database) rather than in-memory.

Return 200 Quickly

Return a 200 response as soon as you receive and validate the webhook. If processing takes a long time, do it asynchronously:

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