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/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_key for sandbox calls (returns simulated transactions).
  • Switch to secret_key (Live Key) only when ready for production.
  • test_secret_key returns fake transactions and does not affect live cards.
  • secret_key will 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 Card400


{
  "status": "failed",
  "message": "Card id does not exist"
}

Unauthorized401


{
  "status": "failed",
  "code": "INVALID_TOKEN",
  "message": "Invalid secret key provided."
}

IP Not Allowed403


{
  "status": "failed",
  "code": "IP_NOT_ALLOWED",
  "message": "Your IP is not authorized for API access."
}