Skip to main content
Webhooks allow Kyren Pay to notify your server when a payment or refund succeeds. See Events for supported events and optional dispute notifications.

How Webhooks Work

  1. An event occurs (e.g., a customer completes a payment)
  2. Kyren Pay sends an HTTP POST request to your configured webhook URL
  3. The request includes a signature for verification
  4. Your server verifies the signature, persists the event, and returns 200 within 10 seconds
  5. Your worker processes the persisted event with idempotency and its own retries

Configuring Webhooks

Set up your webhook endpoint in the Merchant Dashboard:
  1. Go to Dashboard > Developer > Webhook Settings
  2. Enter your Webhook URL (e.g., https://yoursite.com/webhooks/kyren)
  3. Copy your Webhook Secret — you’ll need this to verify signatures
Your webhook URL must:
  • Use HTTPS (required for production)
  • Be publicly accessible
  • Complete a 2xx response within 10 seconds, after durable persistence succeeds

Webhook Payload

Every webhook request includes these headers: The request body is a JSON object:

Best Practices

Verify Signatures

Always verify the X-Kyren-Signature header to ensure the webhook is authentic. See Webhook Signatures.

Return 200 Quickly

Verify the signature and durably store the event before returning 200. Return non-2xx if persistence fails, so Kyren can retry.

Handle Duplicates

Use the event id to deduplicate. Your endpoint may receive the same event more than once due to retries.

Use a Queue

For asynchronous processing, persist to a durable inbox or queue and acknowledge only after storage succeeds. Workers need their own retries after Kyren receives 2xx.

Next Steps

Events

See all event types

Signatures

Verify webhook signatures

Retries

Understand retry behavior