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.

GET https://mybundlepay.com/ng/api/v2/virtual-card/{id}/transactions

KEY USAGE POLICY

Important:
• Use sec-test-xxxx for sandbox testing.
• Use sec-live-xxxx for production.

  • Test mode connects to Sandbox.
  • Live mode fetches real card transactions.
  • Your server IP must be whitelisted.

⚠ Unauthorized IPs or invalid keys will be blocked.

HEADERS

Authorization *

Bearer {secret_key}

Accept

application/json

IP WHITELISTING

Only approved server IPs can access this endpoint.

QUERY PARAMETERS

Parameter Required Description
page Page number (starts from 0)
limit Number of records per page
fromDate Optional Filter transactions from date (YYYY-MM-DD)
toDate Optional Filter transactions to date (YYYY-MM-DD)

PATH PARAMETER

Parameter Required Description
id Test Mode → card_id
Live Mode → card_account_id

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://mybundlepay.com/ng/api/v2/virtual-card/{id}/transactions?page=0&limit=10',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer {secret_key}',
    'Accept: application/json'
  ),
));

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

const axios = require('axios');

axios.get("https://mybundlepay.com/ng/api/v2/virtual-card/{id}/transactions?page=0&limit=10", {
  headers: {
    "Authorization": "Bearer {secret_key}",
    "Accept": "application/json"
  }
})
.then(res => console.log(res.data))
.catch(err => console.error(err.response ? err.response.data : err.message));
✅ Success

{
    "status": "success",
    "statusCode": 200,
    "message": "Transactions fetched successfully.",
    "data": [],
    "pagination": {
        "total": 2,
        "pages": 1,
        "page": "0",
        "limit": 10
    },
    "mode": "live"
}
❌ Missing Required Parameters

{
    "status": "failed",
    "message": "Missing required parameter(s): page, limit",
    "mode": "unknown"
}
❌ Invalid Token

{
  "status": "failed",
  "code": "INVALID_TOKEN",
  "message": "Invalid secret key provided.",
  "mode": "unknown"
}
❌ IP Not Authorized

{
  "status": "failed",
  "code": "IP_NOT_AUTHORIZED",
  "message": "Your IP is not authorized.",
  "mode": "unknown"
}