Build With MyBundlePay

One integration for payments, cards, bills and payouts.

MyBundlePay gives developers a clean payment gateway, virtual account funding, payout rails, card issuing tools, bill payments, webhooks and merchant-ready checkout experiences.

REST APIs JSON based
Webhooks Real time events
Sandbox Test first

API Test Console

Test the current endpoint directly from the documentation. Secret keys stay inside this browser session.

Enter your test key, review the sample body for this page, then send a request.

Errors

MyBundlePay uses conventional HTTP response codes to show whether an API request succeeded. Codes in the 2xx range indicate success, 4xx codes indicate a request or authorization issue, and 5xx codes indicate a server-side issue.

Status Code Meaning Recommended Action
200 - OK Everything worked as expected. Process the response data.
400 - Bad Request The request is invalid, often because a required parameter is missing. Check the request body, endpoint and field types.
401 - Unauthorized No valid API key was provided. Confirm the Authorization bearer token.
402 - Request Failed The parameters were valid, but the request could not be completed. Show the returned message and retry only when safe.
403 - Forbidden The key does not have permission to perform this action. Check account permissions or contact support.
404 - Not Found The requested resource does not exist. Confirm the route, reference, transaction ID or account ID.
409 - Conflict The request conflicts with an existing operation. Use a unique reference and verify before retrying.
429 - Too Many Requests Too many requests were sent too quickly. Use exponential backoff and reduce retry loops.
500, 502, 503, 504 - Server Errors Something went wrong on MyBundlePay's end. Retry with backoff or contact support if it persists.

Error response format

Validation, authorization and insufficient balance errors use a JSON response like this:


{
    "status": "failed",
    "message": "Insufficient funds, please add funds to your account",
    "data": null
}