---
title: "Get a webhook delivery by ID"
method: GET
path: "/sender/webhooks/{id}"
tags: ["Sender"]
---

# Get a webhook delivery by ID

`GET /sender/webhooks/{id}`

Returns a single webhook delivery, including the frozen `requestPayload`
and the captured `responseBody`. Returns `404` if the delivery belongs to
another sender.

## Path parameters

- `id` string, uuid, required

## Response `200`

Webhook delivery

- object
  - `status` string
  - `data` WebhookDeliveryDetail — A single outbound webhook delivery attempt. Returned in list responses (the large `requestPayload` and `responseBody` fields are omitted from list items — fetch a single delivery to see them).
    - `id` string, uuid — Unique ID of this delivery record.
    - `event` 'payment_order.deposited' | 'payment_order.pending' | 'payment_order.validated' | 'payment_order.settling' | 'payment_order.settled' | 'payment_order.refunding' | 'payment_order.refunded' | 'payment_order.expired' — The webhook event that was delivered.
    - `eventId` string — Identifier of the underlying event (matches the `event_id` filter).
    - `orderId` string, uuid — The payment order this delivery relates to, if any.
    - `status` 'pending' | 'success' | 'failed' | 'expired' — Delivery status. `pending` — queued or awaiting retry; `success` — the endpoint returned a 2xx; `failed` — a transport error or non-2xx response, scheduled for retry; `expired` — gave up after the 24h retry window.
    - `trigger` 'automatic' | 'cron_retry' | 'manual_sync' | 'manual_async' — What produced this attempt. `automatic` — first send on the event; `cron_retry` — automatic backoff retry; `manual_sync`/`manual_async` — a sender-initiated retry via the retry endpoint.
    - `httpStatusCode` integer — HTTP status code returned by your endpoint (0 if no response was received).
    - `attemptNumber` integer — 1-based attempt counter for this delivery.
    - `destinationUrl` string, uri — The webhook URL the request was sent to.
    - `signature` string — The `X-Paycrest-Signature` (HMAC-SHA256 hex) sent with the request.
    - `errorMessage` string — Transport or HTTP error message, if the attempt failed.
    - `durationMs` integer — Round-trip duration of the attempt, in milliseconds.
    - `nextRetryTime` string, date-time — When the next automatic retry is scheduled (null once delivered or expired).
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `requestPayload` object — The exact JSON body that was (or will be) sent, frozen at first attempt.
    - `responseBody` string — Response body returned by your endpoint, truncated to 4KB.

## Other responses

- `401` — Unauthorized
- `404` — Delivery not found

---

[API](https://skmtc.net/paycrest/apis/paycrest-aggregator-api.md) · [All operations](https://skmtc.net/paycrest/apis/paycrest-aggregator-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/paycrest/paycrest-aggregator-api/revisions/f20903971a91/schema)
