POST https://mybundlepay.com/ng/api/create-payment
HEADERS
Authorization * string
Pass your {secret_key}
as a Bearer token in the request header.
Content-Type * application/json
All requests must be in JSON format.
BODY PARAMS
The amount to be charged (minimum ₦100).
Your unique transaction reference. This MUST be unique for every request.
Transaction currency. Only NGN is supported.
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://mybundlepay.com/ng/api/create-payment",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>'{
"amount": 5000,
"tx_ref": "INV-20250913-001",
"currency": "NGN"
}',
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"Authorization: Bearer {secret_key}"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
const axios = require('axios');
const data = {
amount: 5000,
tx_ref: "INV-20250913-001",
currency: "NGN"
};
axios.post('https://mybundlepay.com/ng/api/create-payment', data, {
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer {secret_key}'
}
})
.then(res => console.log(res.data))
.catch(err => console.error(err.response.data));
SUCCESS RESPONSE
{
"message": "Virtual Account Created Successfully.",
"accountNumber": "6026414600",
"accountName": "MYBUNDLEPAYLTD Checkout",
"expiryDate": "2025-09-18T11:22:54.092Z",
"amount": 5000,
"type": "Dynamic",
"bank": "Safe Haven MFB"
}
ERROR RESPONSES
// Missing/Invalid Token
{
"status": "failed",
"message": "Token is required"
}
// Invalid Secret Key
{
"status": "failed",
"message": "Invalid secret key",
"data": null
}
// IP Not Whitelisted
{
"status": "failed",
"code": "IP_NOT_WHITELISTED",
"message": "Your IP is not authorized for API access.",
"ip": "102.xxx.xxx.xxx"
}
// Validation Error
{
"status": "failed",
"message": {
"amount": ["The amount field is required."]
}
}