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"
  }
}