GET endpoints. Use them to update your internal records when payins, payouts, or transfers complete or fail.
Configure your webhook
In the merchant dashboard you configure:- URL: HTTPS endpoint on your backend, for example
https://api.yourapp.com/webhooks/bumxpress - Signing secret: Shared secret used to verify signatures
Verify the signature
Signatures use an HMAC over the timestamp and raw request body:Event types
Bumxpress emits a small set of payment events. Use theevent and data.type fields to route handling logic.
- payin.completed / payin.failed (
data.type: "payin") - payout.completed / payout.failed (
data.type: "payout") - transfer.payin.completed / transfer.payin.failed (
data.type: "transfer") - transfer.payout.completed / transfer.payout.failed (
data.type: "transfer") - transfer.completed / transfer.failed (
data.type: "transfer")
data.object field contains a snapshot of the resource at event time, including amounts, status, operator, wallet impact, and timestamps.
Example payloads
Payin webhookDelivery and retries
Return any 2xx status code to acknowledge receipt. If your endpoint returns a non-2xx or times out, Bumxpress retries with exponential backoff:
After the seventh failed attempt, delivery is marked failed.
Recommended handler pattern
Implement your webhook handler with these rules:- Verify the HMAC signature.
- Deduplicate using
X-Bumxpress-Webhook-Idor eventid. - Update your local record using
data.idanddata.type. - Acknowledge with
200 OKonly after the update succeeds. - Fallback to
GET /payins/{id},GET /payouts/{id}, orGET /transfers/{id}when you need to recover from missed events.