Post https://mybundlepay.com/ng/api/transaction/verify
HEADERS
Authorization* string
Pass your {secret_key} as a bearer token in the request header to authorize this call.
Content-Type application/json
Ensure requests are sent as JSON.
BODY PARAMS
Your unique transaction reference you used during virtual account creation. This is used to verify funding status.
WEBHOOK NOTIFICATION
After successful payment, MyBundlePay will send a POST request to your webhook URL.
Headers
Content-Type application/json
X-Webhook-Secret Your webhook secret
Webhook Payload
{
"amount": "6000.00",
"fee": "230.00",
"netAmount": "5770.00",
"accountName": "OTTI MERCY",
"bankName": "NIBSS",
"method": "Virtual Account Funding",
"externalReference": "8520985893522125839",
"sessionId": "000010260615112957111052973618",
"narration": "REF8520985893522125839 BO OTTI MERCY IFO MYBUNDLE",
"status": "Completed",
"date": "15 Jun 2026, 12:30 PM"
}
Webhook Verification Example (PHP)
<?php
$payload = file_get_contents("php://input");
$data = json_decode($payload,true);
$receivedSecret = $_SERVER['HTTP_X_WEBHOOK_SECRET'] ?? null;
$myWebhookSecret = "YOUR_WEBHOOK_SECRET";
if($receivedSecret !== $myWebhookSecret){
http_response_code(401);
echo json_encode([
"status"=>"error",
"message"=>"Invalid webhook secret"
]);
exit;
}
// Process payment
$amount = $data['amount'];
$reference = $data['externalReference'];
$status = $data['status'];
// Your logic here
echo json_encode([
"status"=>"success",
"message"=>"Webhook received"
]);
?>
Expected Webhook Response
{
"status": "success",
"message": "Webhook received"
}
Webhook Failure Response
{
"status": "error",
"message": "Invalid webhook secret"
}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://mybundlepay.com/ng/api/transaction/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
"tx_ref" => "TX8456463755"
]),
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"Authorization: Bearer {secret_key}"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
var axios = require('axios');
var data = JSON.stringify({
"tx_ref": "TX8456463755"
});
var config = {
method: 'post',
url: 'https://mybundlepay.com/ng/api/transaction/verify',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer {secret_key}'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
Sample Responses
✅ Successful Transaction (Funded)
{
"status": "success",
"message": "Transaction verified successfully",
"data": {
"amount": 5000,
"accountNumber": "60225522600",
"accountName": "MYBUNDLEPAYLTD Checkout",
"currency": "NGN",
"expired_at": "2025-09-18 11:22:54"
}
}
❌ Pending Transaction (Active)
{
"status": "failed",
"message": "Transaction not yet funded",
"data": {
"amount": 5000,
"accountNumber": "60225522600",
"accountName": "MYBUNDLEPAYLTD Checkout",
"currency": "NGN",
"expired_at": "2025-09-18 11:22:54"
}
}