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.
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/v1/card/transactions
KEY USAGE POLICY
Important: Always begin testing with your
test_secret_key. This simulates requests without hitting live card transactions.
- Use
test_secret_keyfor sandbox calls (returns simulated transactions). - Switch to
secret_key(Live Key) only when ready for production. test_secret_keyreturns fake transactions and does not affect live cards.secret_keywill fetch actual transactions from MyBundlePay.
⚠️ Going live without testing may cause failed API calls or blocked access.
HEADERS
Authorization * string
Pass your {secret_key} as a Bearer token.
QUERY PARAMS
The ID of the virtual card whose transactions you want to fetch.
Filter transactions from this date (format: YYYY-MM-DD).
Filter transactions up to this date (format: YYYY-MM-DD).
Number of records per page. Default = 10. Max = 100.
Page number of results (pagination). Default = 1.
SUCCESS RESPONSE
entry can either be DEBIT or CREDIT when fetching a transaction.
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://mybundlepay.com/ng/api/v1/card/transactions?card_id={card_id}&start_date=2023-01-23&end_date=2023-01-27&page_size=5&page=1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer {secret_key}"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
const axios = require('axios');
axios.get("https://mybundlepay.com/ng/api/v1/card/transactions", {
params: {
card_id: "{card_id}",
start_date: "2023-01-23",
end_date: "2023-01-27",
page_size: 5,
page: 1
},
headers: {
"Authorization": "Bearer {secret_key}"
}
}).then(res => {
console.log(res.data);
}).catch(err => {
console.error(err.response ? err.response.data : err.message);
});
curl -X GET "https://mybundlepay.com/ng/api/v1/card/transactions?card_id={card_id}&start_date=2023-01-23&end_date=2023-01-27&page_size=5&page=1" \
-H "Authorization: Bearer {secret_key}"
Success Response
{
"status": "success",
"message": "Transactions fetched successfully",
"data": [
{
"id": "txn_12345",
"amount": 1500,
"currency": "USD",
"description": "Amazon purchase",
"status": "SUCCESS",
"entry": "DEBIT",
"merchant": {
"name": "Amazon",
"city": "Seattle",
"country": "US"
},
"created_at": "2023-01-23T12:34:56Z"
}
],
"meta": {
"page": 1,
"page_size": 5,
"total": 20
}
}
Common Error Responses
Invalid Card — 400
{
"status": "failed",
"message": "Card id does not exist"
}
Unauthorized — 401
{
"status": "failed",
"code": "INVALID_TOKEN",
"message": "Invalid secret key provided."
}
IP Not Allowed — 403
{
"status": "failed",
"code": "IP_NOT_ALLOWED",
"message": "Your IP is not authorized for API access."
}