Skip to Content

List webhook events

GET/merchants/{merchantId}/webhook-events

List webhook delivery records for the merchant, most recent first. Each record includes the event type, delivery status, attempt count, and the payload sent to your endpoint. Filter by subscription, type, and delivery status.

Headers

HeaderDescriptionRequired
AuthorizationBearer token with your secret API keyyes

Path Parameters

NameTypeRequiredDescription
merchantIdstringyes

Query Parameters

NameTypeRequiredDescription
limitintegerRows per page, 1 to 100. Defaults to 50. Values outside the range are rejected rather than clamped.
starting_afterstringCursor for forward pagination: an object id from a previous page. Returns results after it. Mutually exclusive with ending_before; sending both is a 400.
ending_beforestringCursor for backward pagination: an object id from a previous page. Returns results before it. Mutually exclusive with starting_after; sending both is a 400.
subscription_idstring
typestring
deliveredenum: true | false

Example Request

Request

const response = await fetch('https://checkout-api.exodus-int.com/merchants/<merchantId>/webhook-events?limit=50&starting_after=<starting_after>&ending_before=<ending_before>&subscription_id=<subscription_id>&type=<type>&delivered=true', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
  },
});

Responses

StatusDescription
200A paginated list of webhook events.
400Validation error
401Missing or invalid authentication
403API key lacks the required scope

Response body

FieldTypeRequiredDescription
objectenum: listyes
dataobject[]yes
has_morebooleanyes

data

FieldTypeRequiredDescription
idstringyes
objectenum: eventyes
typestringyes
deliveredbooleanyes
attemptsnumberyes
last_errorstring | nullyes
subscription_idstring | nullyes
subscription_checkout_idstring | nullyes
checkout_idstring | nullyes
payment_idstring | nullyes
payloadobject | null
created_atstringyes
delivered_atstring | nullyes

Example Response

{
  "object": "list",
  "data": [
    {
      "id": "evt_1234567890abcdef",
      "object": "event",
      "type": "payment.settled",
      "delivered": true,
      "attempts": 1,
      "last_error": null,
      "subscription_id": null,
      "subscription_checkout_id": null,
      "checkout_id": "chk_1234567890abcdef",
      "payment_id": "tz4a98xxat96iws9zmbrgj3a",
      "payload": {
        "id": "evt_1234567890abcdef",
        "object": "event",
        "type": "payment.settled",
        "created_at": "2024-01-15T12:30:00Z",
        "data": {
          "object": {
            "id": "tz4a98xxat96iws9zmbrgj3a",
            "object": "payment",
            "status": "settled"
          }
        }
      },
      "created_at": "2024-01-15T12:30:00Z",
      "delivered_at": "2024-01-15T12:30:01Z"
    }
  ],
  "has_more": false
}

Error Response

Error (e.g. 400)

{
  "error": {
    "type": "validation_error",
    "message": "starting_after and ending_before are mutually exclusive",
    "param": "ending_before"
  }
}

Start building

XO

Request Demo

Schedule a call with our team

Select a product
Arrow right

Start building
Grateful

Contact Us

We're here to help