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.

POST https://mybundlepay.com/ng/api/create-payment

HEADERS

Authorization (Bearer {secret_key})

Content-Type application/json

BODY PARAMS

Default Method (Safehaven)

amount (Integer) - required

tx_ref (String) - required

currency (String: NGN) - required


V2 Method (Business Checkout) (VFD MFB)

method = V2

Business_name (String) - required

email (String) - required

amount (String) - required

currency (String: NGN) - required

reference (String) - required

tx_ref (String) - required

phone (String) - required


<?php
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://mybundlepay.com/ng/api/create-payment",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    "method" => "V2",
    "Business_name" => "Gift Venture",
    "email" => "[email protected]",
    "amount" => "100",
    "currency" => "NGN",
    "reference" => "87458KI8EUHFEGFD874",
    "phone" => "07036218209",
    "tx_ref" => "87458KI8EUHFEGFD874"
  ]),
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "Authorization: Bearer {secret_key}"
  ],
]);

$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>

const axios = require('axios');

axios.post('https://mybundlepay.com/ng/api/create-payment', {
  method: "V2",
  Business_name: "Gift Venture",
  email: "[email protected]",
  amount: "100",
  currency: "NGN",
  reference: "87458KI8EUHFEGFD874",
  phone: "07036218209",
  tx_ref: "87458KI8EUHFEGFD874"
}, {
  headers: {
    'Authorization': 'Bearer {secret_key}',
    'Content-Type': 'application/json'
  }
})
.then(res => console.log(res.data))
.catch(err => console.log(err.response.data));

SUCCESS RESPONSE


{
  "message": "Dynamic Account Generated",
  "accountNumber": "5011370868",
  "accountName": "Gift Venture",
  "expiryDate": "2026-04-07T11:44:38.464981Z",
  "amount": "100",
  "type": "Dynamic",
  "bank": "VFD Microfinance Bank"
}

ERROR RESPONSES


// Missing Parameter (V2)
{
  "status": "failed",
  "message": "phone is required"
}

// Invalid Token
{
  "status": "failed",
  "message": "Invalid secret key"
}

// IP Not Whitelisted
{
  "status": "failed",
  "code": "IP_NOT_WHITELISTED",
  "message": "Your IP is not authorized for API access."
}

// General Failure
{
  "status": "failed",
  "message": "Payment failed"
}