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.
POST https://mybundlepay.com/ng/api/v2/virtual-card/user/update/{cardUserId}
KEY USAGE POLICY
Important: Always begin integration using your test_secret_key before switching to live mode.
- Use
test_secret_keyfor sandbox or test environment. - Use
live_secret_keyfor production operations. - Test mode does not update live card users.
- Live mode modifies real user data in production.
⚠️ Do not use live keys until your test integration is verified.
HEADERS
Authorization * string
Send your {secret_key} as a Bearer token.
Content-Type * application/json
All requests must be JSON formatted.
BODY PARAMS
| Parameter | Required | Description |
|---|---|---|
customerEmail | ✅ | Customer email address. |
firstName | ✅ | Customer first name. |
lastName | ✅ | Customer last name. |
otherNames | - | Middle or additional names (optional). |
phoneNumber | ✅ | Customer phone number with country code. |
status | ✅ | Customer account status (e.g., active). |
line1 | ✅ | Address line (e.g., street or road name). |
houseName | - | House or apartment name (optional). |
city | ✅ | City of residence. |
state | ✅ | State or region of residence. |
zipCode | ✅ | Postal or ZIP code. |
country | ✅ | Country (e.g., Nigeria). |
idType | ✅ | ID type (PASSPORT, NIN, NATIONAL_ID, BVN). BVN number (required for Nigerian customers) |
idNumber | ✅ | Government-issued ID number. |
idImage | ✅ | URL of front side of the ID image. |
userPhoto | ✅ | URL of user profile photo or ID back. |
dateOfBirth | ✅ | Date of birth (YYYY-MM-DD). |
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://mybundlepay.com/ng/api/v2/virtual-card/user/update/xxxxxxxxxxxxxxxxxxxx',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode([
"customerEmail" => "[email protected]",
"firstName" => "Jane",
"lastName" => "Doe",
"otherNames" => "",
"phoneNumber" => "+261330123456",
"status" => "active",
"line1" => "123 Antananarivo Street",
"houseName" => "House 12",
"city" => "Antananarivo",
"state" => "Antananarivo",
"zipCode" => "101",
"country" => "Madagascar",
"idType" => "NATIONAL_ID",
"idNumber" => "MG123456789",
"idImage" => "https://example.com/id-front.jpg",
"userPhoto" => "https://example.com/id-back.jpg",
"dateOfBirth" => "1990-05-20"
]),
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 = {
customerEmail: "[email protected]",
firstName: "Jane",
lastName: "Doe",
otherNames: "",
phoneNumber: "+261330123456",
status: "active",
line1: "123 Antananarivo Street",
houseName: "House 12",
city: "Antananarivo",
state: "Antananarivo",
zipCode: "101",
country: "Madagascar",
idType: "NATIONAL_ID",
idNumber: "MG123456789",
idImage: "https://example.com/id-front.jpg",
userPhoto: "https://example.com/id-back.jpg",
dateOfBirth: "1990-05-20"
};
axios.post("https://mybundlepay.com/ng/api/v2/virtual-card/user/update/xxxxxxxxxxxxxxxxxxxx", data, {
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer {secret_key}"
}
}).then(res => console.log(res.data))
.catch(err => console.error(err.response ? err.response.data : err.message));
✅ Success Response
{
"status": "success",
"code": "USER_UPDATED",
"message": "Virtual card user details successfully updated.",
"mode": "TEST",
"data": {
"statusCode": 200,
"message": "Customer updated successfully.",
"customer_id": "xxxxxxxxxxxxxxxxxxxx",
"type": "individual",
"name": "Jane Doe",
"phoneNumber": "+261330123456",
"emailAddress": "[email protected]",
"status": "active",
"individual": {
"firstName": "Jane",
"lastName": "Doe",
"otherNames": "",
"dob": "1990-05-20",
"documents": {
"idFrontUrl": "https://example.com/id-front.jpg",
"idBackUrl": "https://example.com/id-back.jpg"
}
},
"billingAddress": {
"line1": "123 Antananarivo Street",
"line2": "House 12",
"city": "Antananarivo",
"state": "Antananarivo",
"postalCode": "101",
"country": "Madagascar"
},
"isDeleted": false,
"createdAt": "2025-11-11T13:03:06+01:00",
"updatedAt": "2025-11-11T13:03:06+01:00"
}
}
⚠️ Error Response (BVN Required)
{
"status": "failed",
"code": "BVN_REQUIRED",
"message": "BVN number is required for customers in Nigeria."
}
⚠️ Error Response (Unauthorized Assignment)
{
"status": "failed",
"message": "This customer is not assigned to your business.",
"mode": "live"
}