Payment Status Update
This event is the primary mechanism for tracking the lifecycle of a transaction. It is triggered every time a payment object transitions from one state to another.
Scope
This webhook is sent for all states, including successful payments (Paid) and unsuccessful ones (Expired, Canceled).
The Payload
The type field will always be PaymentStatusUpdate. The core transaction details are nested within the body object.
Example JSON
{
"webhookID": "b4f79a83-bc8a-433a-b425-6cb94543c1b4",
"clientID": "your-client-id",
"type": "PaymentStatusUpdate",
"body": {
"paymentID": "32cd2d85-4dbe-4e91-a11b-1252ced54b5f",
"merchantID": "a1c77402-bcb6-4671-b71a-0e5660171137",
"merchantName": "Grafana k6 Testing",
"reference": "k6-grpc-1758527096432-8",
"amount": 29,
"status": 2,
"createdAt": "2025-09-22T07:44:56.602476+00:00",
"paidAt": "2025-09-22T07:44:57.0602476Z",
"expiredAt": null,
"canceledAt": null,
"reversedAt": null,
"description": null,
"walletHolderName": "K6 User 8",
"paymentSuccessfulReturnUrl": null
}
}
Status Codes
The body.status integer tells you the current state of the payment.
| ID | Status | Meaning | Action Required |
|---|---|---|---|
| 0 | PENDING | The payment has been created but not yet actioned by the user. | Wait. |
| 1 | AUTHORIZED | The payment has been reserved to a wallet but not yet paid | Wait. |
| 2 | PAID | Success. The funds have been successfully transferred or captured. | Release Goods/Services. |
| 3 | EXPIRED | The payment window (4 days) closed without a successful payment. | Mark order as failed/abandoned. |
| 4 | CANCELED | The user or the API manually canceled the payment before completion. | Mark order as canceled. |
| 5 | REVERSED | The payment was successfully paid but later reversed (Refunded). | Update ledger / Reopen order. |