Webhooks
Register endpoints and inspect deliveries. Kvell sends signed event POSTs with tiered retries and a dead-letter queue.
6 endpoints
GET
/v1/stores/{storeId}/webhooksCoreList the webhook endpoints configured for a store.
JSONResponse Example
{
"items": [
{
"id": "whe_9a2e6b4d4e8a",
"url": "https://merchant.example.com/kvell/webhook",
"eventTypes": [
"payment.captured",
"payment.refunded"
],
"active": true,
"status": "active",
"createdAt": "2026-04-13T10:00:00Z"
}
]
}POST
/v1/stores/{storeId}/webhooksCoreRegister a webhook endpoint for a store. The signing secret is returned once. Kvell signs every delivery as X-Kvell-Signature: sha256=<hex HMAC-SHA256 over the raw body using this secret>.
Request Parameters
| Name | Type | Required | Description |
|---|---|---|---|
url | string | Required | HTTPS URL to deliver events to |
eventTypes | array | Optional | Event types to receive (e.g. ["payment.captured"]) |
JSONRequest Example
{
"url": "https://merchant.example.com/kvell/webhook",
"eventTypes": [
"payment.captured",
"payment.refunded",
"payout.succeeded"
]
}JSONResponse Example
{
"id": "whe_9a2e6b4d4e8a",
"merchantId": "mrc_8a1b2c3d4e5f",
"url": "https://merchant.example.com/kvell/webhook",
"secret": "whsec_2b3c4d5e6f708192a3b4c5d6",
"eventTypes": [
"payment.captured",
"payment.refunded",
"payout.succeeded"
],
"active": true,
"status": "active",
"createdAt": "2026-04-13T10:00:00Z"
}PATCH
/v1/stores/{storeId}/webhooks/{webhookId}CoreEnable or disable a webhook endpoint.
Request Parameters
| Name | Type | Required | Description |
|---|---|---|---|
active | boolean | Optional | Enable/disable delivery |
JSONRequest Example
{
"active": false
}JSONResponse Example
{
"id": "whe_9a2e6b4d4e8a",
"url": "https://merchant.example.com/kvell/webhook",
"active": false,
"status": "active"
}DELETE
/v1/stores/{storeId}/webhooks/{webhookId}CoreRemove a webhook endpoint. Returns 204 No Content.
JSONResponse Example
{}GET
/v1/merchants/{id}/webhook-deliveriesRecommendedList delivery attempts across the merchant, with filters for store and delivery status.
Request Parameters
| Name | Type | Required | Description |
|---|---|---|---|
storeId | string | Optional | Filter by store |
status | string | Optional | pending|in_progress|delivered|failed|exhausted |
limit | integer | Optional | Page size |
offset | integer | Optional | Offset |
JSONResponse Example
{
"items": [
{
"id": "whd_0f1a2b3c4d5e",
"endpointId": "whe_9a2e6b4d4e8a",
"eventType": "payment.captured",
"status": "delivered",
"attemptCount": 1,
"lastResponseCode": 200,
"createdAt": "2026-04-13T10:00:03Z"
}
]
}POST
/v1/deliveries/{id}/resendRecommendedManually re-queue a webhook delivery (resets the attempt count).
JSONRequest Example
{}JSONResponse Example
{
"deliveryId": "whd_0f1a2b3c4d5e",
"status": "queued"
}Category Summary
Total Endpoints
6
Base Domain
api.pay.kvell.group