Webhooks overview
Webhooks tell your server the instant a payment changes state. We send a signed HTTP POST to the URL you configure, for each event you subscribe to. This is the reliable way to know a payment succeeded, failed, or expired.
Event types
We send these payment events:
SUCCESS— the payment is confirmedFAILED— the payment failed or was cancelledEXPIRED— the session expired before paymentPENDING_REVIEW— the payment needs manual reviewUTR_SUBMITTED— the customer submitted their transaction reference
A separate test.ping event is used only to verify your endpoint and is not part of the payment subscription list.
Choosing which events you receive
Your subscription controls which events reach your endpoint:
Never configured — you receive all payment events.
Set to an empty list — you receive nothing.
Set to a specific list — you receive only those events.
Delivery and retries
Each delivery is an HTTP POST with a JSON body. Deliveries time out after 10 seconds. Failed deliveries are stored and retried automatically, so your endpoint should be idempotent — handle the same event arriving more than once without double-processing.
Always verify the signature on every webhook before acting on it. An unverified request could come from anyone. See Verifying webhook signatures.