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" => "jane.doe@example.com",
"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: "jane.doe@example.com",
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": "jane.doe@example.com",
"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"
}