Skip to main content
Webhooks let Bumxpress push status changes to your backend instead of relying only on polling 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
All webhook requests use:

Verify the signature

Signatures use an HMAC over the timestamp and raw request body:
Verify signatures before parsing JSON or applying side effects.
Always verify X-Bumxpress-Signature using the raw request body. Reject requests when verification fails.

Event types

Bumxpress emits a small set of payment events. Use the event and data.type fields to route handling logic.
Supported events:
  • 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")
Transfer leg events are sent as each leg reaches a terminal state. Aggregate transfer events are still sent when the full transfer reaches a final state. The data.object field contains a snapshot of the resource at event time, including amounts, status, operator, wallet impact, and timestamps.

Example payloads

Payin webhook
Payout webhook
Transfer webhook
Transfer payin leg webhook
Transfer payout leg webhook

Delivery 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. Implement your webhook handler with these rules:
  1. Verify the HMAC signature.
  2. Deduplicate using X-Bumxpress-Webhook-Id or event id.
  3. Update your local record using data.id and data.type.
  4. Acknowledge with 200 OK only after the update succeeds.
  5. Fallback to GET /payins/{id}, GET /payouts/{id}, or GET /transfers/{id} when you need to recover from missed events.
Last modified on July 25, 2026