Webhook events
The object SkanPay POSTs to your webhook URL. See Webhooks for delivery and verification.
The event object
{
"id": "evt_01J9Z3M2A7B8C9D0E1F2G3H4J5",
"object": "event",
"type": "charge.successful",
"created_at": "2026-09-28T09:30:08.000Z",
"data": {
"object": { "id": "chg_…", "object": "charge", "status": "SUCCESSFUL", ... }
}
}Attributes
idstring- Unique per event (
evt_). Repeated deliveries and replays carry the same id: use it to de-duplicate. objectstring- Always
"event". typestring- What happened. See below.
created_atstring- When the event happened (not when it was delivered).
data.objectobject- The charge, deposit, payout or withdrawal as it was at that moment.
Event types
| type | data.object | Sent |
|---|---|---|
charge.successful | charge | Yes |
charge.failed | charge | Yes |
charge.reversed | charge | Yes |
deposit.successful | deposit | Yes |
deposit.failed | deposit | Yes |
payout.successful | payout | When payouts are switched on |
payout.failed | payout | When payouts are switched on |
withdrawal.successful | withdrawal | When withdrawals are switched on |
withdrawal.failed | withdrawal | When withdrawals are switched on |
charge.pending | charge | Reserved, not sent |
refund.successful | refund | Reserved, not sent |
refund.failed | refund | Reserved, not sent |
Delivery headers
| Header | Value |
|---|---|
SkanPay-Signature | t=<unix seconds>,v1=<hex HMAC-SHA256>. Verify it. |
SkanPay-Event-Id | The event id, same as the body's id. |
SkanPay-Event-Type | The event type, same as the body's type. |
Content-Type | application/json |
User-Agent | SkanPay-Webhooks/1.0 |