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