POST https://mybundlepay.com/ng/api/v2/virtual-card/user/update/{cardUserId}
KEY USAGE POLICY
Important: Always start integration using your test_secret_key before switching to live mode.
- Use
test_secret_keyfor sandbox or test environment. - Use
live_secret_keyfor production/live operations. - Test mode does not modify real card users.
- Live mode updates actual card user details in production.
⚠️ Avoid using live keys until your test integration has been verified.
HEADERS
Authorization * string
Send your {secret_key} as a Bearer token.
Content-Type * application/json
All requests must be in JSON format.
BODY PARAMS
| Parameter | Required | Description |
|---|---|---|
customerEmail | ✅ | Customer email address. |
idNumber | ✅ | Government-issued ID number (e.g. BVN, PASSPORT, NIN). |
idType | ✅ | Type of ID (must be uppercase: PASSPORT, NIN, BVN). |
firstName | ✅ | Customer’s first name. |
lastName | ✅ | Customer’s last name. |
phoneNumber | ✅ | Customer phone number (include country code, e.g. +2348012345678). |
city | ✅ | City of residence. |
state | ✅ | State or region of residence. |
country | ✅ | Country (e.g. Nigeria). |
zipCode | ✅ | Postal code. |
line1 | ✅ | Street address line. |
houseName | - | Optional house or apartment name. |
bvn | ✅ | BVN number (required for Nigerian customers). |
idImage | ✅ | URL of uploaded ID image. |
userPhoto | ✅ | URL of user’s profile photo. |
dateOfBirth | ✅ | Date of birth (YYYY-MM-DD). |
cardId | - | Card Id of the user (optional). |
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://mybundlepay.com/ng/api/v2/virtual-card/user/update/USER-ID-HERE',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode([
"customerEmail" => "john.doe@example.com",
"idNumber" => "A123456789",
"idType" => "PASSPORT",
"firstName" => "John",
"lastName" => "Doe",
"phoneNumber" => "+2348012345678",
"city" => "Lagos",
"state" => "Lagos",
"country" => "Nigeria",
"zipCode" => "100001",
"line1" => "12 Allen Avenue",
"houseName" => "MyBundlePay HQ",
"bvn" => "22334455667",
"idImage" => "https://example.com/id.jpg",
"userPhoto" => "https://example.com/photo.jpg",
"dateOfBirth" => "1990-05-10"
]),
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: "john.doe@example.com",
idNumber: "A123456789",
idType: "PASSPORT",
firstName: "John",
lastName: "Doe",
phoneNumber: "+2348012345678",
city: "Lagos",
state: "Lagos",
country: "Nigeria",
zipCode: "100001",
line1: "12 Allen Avenue",
houseName: "MyBundlePay HQ",
bvn: "22334455667",
idImage: "https://example.com/id.jpg",
userPhoto: "https://example.com/photo.jpg",
dateOfBirth: "1990-05-10"
};
axios.post("https://mybundlepay.com/ng/api/v2/virtual-card/user/update/USER-ID-HERE", 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": {
"id": "94c2ec31-75c4-4036-b502-82e030ce2070",
"customerEmail": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"idType": "PASSPORT",
"phoneNumber": "+2348012345678",
"country": "Nigeria",
"bvn": "22334455667",
"kycPassed": true
}
}
Error Response (Validation)
{
"status": "failed",
"message": {
"bvn": ["The bvn field is required."]
}
}
Error Response (General)
{
"status": "failed",
"message": "Failed to update virtual card user.",
"details": {
"error": "ID type not supported for this country",
"statusCode": 400
}
}