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_key for sandbox or test environment.
  • Use live_secret_key for 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
customerEmailCustomer email address.
firstNameCustomer first name.
lastNameCustomer last name.
otherNames-Middle or additional names (optional).
phoneNumberCustomer phone number with country code.
statusCustomer account status (e.g., active).
line1Address line (e.g., street or road name).
houseName-House or apartment name (optional).
cityCity of residence.
stateState or region of residence.
zipCodePostal or ZIP code.
countryCountry (e.g., Nigeria).
idTypeID type (PASSPORT, NIN, NATIONAL_ID, BVN).
BVN number (required for Nigerian customers)
idNumberGovernment-issued ID number.
idImageURL of front side of the ID image.
userPhotoURL of user profile photo or ID back.
dateOfBirthDate 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"
}