Skip to main content
Use this endpoint to inspect every event Kulmi Pay attempted to deliver to your webhook endpoints. Each record shows the topic, payload, delivery status, and — for failed deliveries — the reason for failure. You can use this log to debug integration issues and trigger replays for undelivered events. Method: GET
URL: https://app.kulmipay.com/api/v1/webhooks/events/
Results are ordered from newest to oldest.

Code example

cURL
curl --request GET \
  --url https://app.kulmipay.com/api/v1/webhooks/events/ \
  --header "Authorization: Bearer YOUR_SECRET_KEY"

Event object

id
string
Unique identifier for this event record. Use this ID when triggering a replay.
webhook
object
The webhook configuration this event was sent to.
topic
string
The event type. One of:
  • collection_event — a payment collection changed state
  • send_money_event — a disbursement changed state
  • reversal_event — a chargeback or reversal was processed
  • wallet_transfer_event — an intra-wallet transfer completed
  • subscription_event — a subscription or billing cycle changed state
payload
string
The JSON payload that was (or will be) delivered to your endpoint. This is the complete event data, serialized as a JSON string.
status
string
Delivery status of this event. One of:
  • PENDING — queued, not yet attempted
  • PROCESSING — currently being delivered
  • DELIVERED — successfully delivered (your endpoint returned a 2xx response)
  • FAILED — all delivery attempts failed
failure_reason
string
The error message from the most recent failed delivery attempt. Present only when status is FAILED. Truncated to 300 characters.
created_at
string
ISO 8601 timestamp of when this event was created.
updated_at
string
ISO 8601 timestamp of the last status update for this event.

Example response

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": "a1b2c3d4-0000-1111-2222-333344445555",
      "webhook": {
        "id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301",
        "endpoint": "https://yourapp.example.com/webhooks/kulmipay",
        "is_active": true
      },
      "topic": "collection_event",
      "payload": "{\"invoice_id\": \"GQ7KZ2XPNM\", \"state\": \"COMPLETE\", ...}",
      "status": "DELIVERED",
      "failure_reason": null,
      "created_at": "2024-04-16T08:24:05Z",
      "updated_at": "2024-04-16T08:24:07Z"
    },
    {
      "id": "b2c3d4e5-0000-1111-2222-333344445555",
      "webhook": {
        "id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301",
        "endpoint": "https://yourapp.example.com/webhooks/kulmipay",
        "is_active": true
      },
      "topic": "send_money_event",
      "payload": "{\"reference\": \"DISBURSE_001\", ...}",
      "status": "FAILED",
      "failure_reason": "Connection timed out after 30s",
      "created_at": "2024-04-15T14:10:00Z",
      "updated_at": "2024-04-15T14:10:35Z"
    }
  ]
}

Replaying events

When an event has a FAILED status, Kulmi Pay supports replaying it to retry delivery. Replaying re-enqueues the original payload and sends it to the same webhook endpoint. To replay an event, use the event’s id with the replay endpoint:
cURL
curl --request POST \
  --url https://app.kulmipay.com/api/v1/webhooks/events/b2c3d4e5-0000-1111-2222-333344445555/replay/ \
  --header "Authorization: Bearer YOUR_SECRET_KEY"
Before replaying events, make sure your endpoint is reachable and returning 2xx responses. Replaying to a persistently failing endpoint will increment the failures_count on the webhook and may cause it to be disabled.