Overview
Webhooks allow you to receive real-time notifications when events happen in your Plexos Pay account. Instead of polling the API, we push events to your server.How It Works
We send events
When something happens (payment debited, refund succeeded, etc.), we send an HTTP POST to your URL.
Creating a Webhook
Event Types
| Event | Description |
|---|---|
payment.created | Payment intent was created |
payment.debited | Customer’s mobile money was debited |
payment.settled | Payment was settled to your account |
payment.failed | Payment failed |
payment.expired | Payment expired before confirmation |
payment.cancelled | Payment was cancelled |
refund.created | Refund was initiated |
refund.succeeded | Refund was completed |
refund.failed | Refund failed |
checkout.completed | Checkout session was completed |
checkout.expired | Checkout session expired |
settlement.completed | Settlement batch was processed |
Event Payload
Signature Verification
Every webhook includes two headers for verification:X-Plexos-Signature— HMAC-SHA256 hex digestX-Plexos-Timestamp— Unix timestamp (seconds)
Verification Examples
- Node.js
- Python
- Java
Best Practices
Return 200 quickly
Return 200 quickly
Respond with a
200 status code as soon as possible. Process the event asynchronously if needed. We retry on non-2xx responses.Handle duplicate events
Handle duplicate events
Use the event
id to deduplicate. We may send the same event more than once.Verify signatures
Verify signatures
Always verify the webhook signature before processing. This prevents attackers from sending fake events.
Check timestamp freshness
Check timestamp freshness
Our SDKs automatically reject events older than 5 minutes to prevent replay attacks.