Events
List and replay webhook events linked to your account.
Events are created on every state change. They correspond directly to webhook payloads.
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /events | List events |
GET | /events/{id} | Retrieve an event |
POST | /events/{id}/resend | Resend an event |
The Event object
idstringoptionalUnique event identifier,
evt_….eventstringoptionalEvent type (e.g.
payment.succeeded, transfer.succeeded). The field is named event: there is no type field.dataobjectoptionalEvent payload, contains the resource object.
livemodebooleanoptionaltrue for a live event, false for a sandbox one.pending_webhooksintegeroptionalHow many deliveries of this event to your endpoints are still pending.
api_versionstringoptionalThe API version
data was serialised at, for example 2026-10-11.requestobjectoptionalNot the request you sent:
id is null, and idempotency_key is not your Idempotency-Key header.createddatetimeoptionalWhen the event was recorded, ISO 8601. The field is named
created: there is no created_at field.{
"id": "evt_Nq8rT3vK6mX2pW9cB5jL7hYs",
"event": "payment.succeeded",
"data": {
"id": "trx_CSUGajfv9xh0XQ5wu2lx",
"reference": "order-1042",
"status": "succeeded"
},
"livemode": true,
"pending_webhooks": 0,
"api_version": "2026-10-11",
"request": {
"id": null,
"idempotency_key": "idem_kZ3qP8mWvL2xR7tB5nY4hC6dF9jS1aG0"
},
"created": "2026-01-15T10:31:00+00:00"
}
This is the envelope a webhook delivers, field for field. GET /events
returns its items under events, not items.
Naming is uniform
Every event type uses dot notation, resource.action (e.g. payment.succeeded,
refund.created, link.created). There is no exception.
Event catalog
Payments
| Type | Trigger |
|---|---|
payment.created | Payment initialized, awaiting customer action. For a prepared payment (deferred: true), on activation |
payment.processing | Payment submitted to the provider |
payment.succeeded | Payment validated. Funds captured. |
payment.failed | Payment failed or declined |
payment.cancelled | Cancelled by the customer or merchant |
payment.expired | The payment window closed before completion |
payment.attempt_failed | An attempt was refused at once; the payment is pending again, data.attempt says why |
payment.split.processing | A payment split (installment) started processing |
payment.split.succeeded | A payment split succeeded |
payment.split.failed | A payment split failed |
Refunds
| Type | Trigger |
|---|---|
refund.created | Refund created |
refund.processing | Refund submitted to the operator. Live only: a sandbox refund starts processing |
refund.succeeded | Refund confirmed |
refund.failed | Refund failed |
refund.cancelled | Stopped by Wajub before it was sent. Today such a refund is announced as refund.failed |
Transfers
| Type | Trigger |
|---|---|
transfer.created | Transfer created |
transfer.processing | Submitted to the operator |
transfer.succeeded | Delivered |
transfer.failed | Failed |
transfer.cancelled | Stopped before it was sent. Today such a payout is announced as transfer.failed |
Customers
| Type | Trigger |
|---|---|
customer.created | Created |
customer.updated | Updated |
customer.deleted | Deleted |
Beneficiaries
| Type | Trigger |
|---|---|
beneficiary.created | Created, through the API, inline by a transfer, or in the Dashboard |
beneficiary.updated | Updated |
beneficiary.deleted | Deleted |
Invoices
| Type | Trigger |
|---|---|
invoice.created | Created |
invoice.updated | Updated (sent, marked paid, cancelled, …) |
invoice.deleted | Deleted |
Payment links
| Type | Trigger |
|---|---|
link.created | Created |
link.updated | Updated |
link.deleted | Deleted |
link.expired | Its expiry_date passed |
Accounts (Sync / subaccounts)
| Type | Trigger |
|---|---|
account.created | Sub-account created |
account.updated | Sub-account changed: by PUT /accounts/{id}, by POST /accounts/{id}/token putting a cancelled invitation back to pending, or by a Lite payout (last_payout_at). Not sent when nothing changes |
account.deauthorized | Sub-account removed or access revoked |
account.payment_activated | Payment capability enabled |
account.payment_suspended | Payment capability suspended |
Disputes
| Type | Trigger |
|---|---|
dispute.created | New dispute opened |
dispute.updated | Dispute updated |
dispute.won | Resolved in your favor |
dispute.lost | Resolved against you |
dispute.closed | Ended. Sent right after dispute.lost, never after dispute.won |
dispute.deadline_approaching | Deadline two days away, dispute still open. Sent once |
dispute.deleted | Deleted |
Webhook endpoints
| Type | Trigger |
|---|---|
webhook_endpoint.created | Endpoint registered |
webhook_endpoint.updated | Endpoint updated |
webhook_endpoint.deleted | Endpoint removed |
Other
| Type | Trigger |
|---|---|
balance.updated | Available/pending/reserved balance changed |
fee.received | A platform fee was collected (Sync) |
Related pages