curl --request POST \
--url https://api.payvessel.com/pms/api/external/request/virtual-cards/ \
--header 'Content-Type: <content-type>' \
--header 'api-key: <api-key>' \
--header 'api-secret: <api-secret>' \
--data '
{
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone": "08031234567",
"bvn": "22345678901",
"nin": "12345678901",
"dob": "1990-05-15",
"image": "data:image/jpeg;base64,YOUR_BASE64_IDENTITY_IMAGE",
"state": "Lagos",
"lga": "Ikeja",
"street": "12 Admiralty Way, Lekki Phase 1",
"postal_code": "101233",
"brand": "VISA",
"currency": "USD",
"is_contactless": false,
"prefund_amount": "10.00",
"card_name": "Jane Doe"
}
'{
"status": true,
"message": "Virtual card creation started",
"data": {
"id": "7f219a25-d968-4894-9a8b-ba83fa0bf6ec",
"status": "PENDING",
"masked_pan": "",
"balance": "10.00",
"currency": "USD",
"brand": "VISA"
}
}{
"error": 401,
"message": "Unauthorized. Please check your API key."
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}Issuing
Create a Card
Virtual card API: create a USD Visa or Mastercard virtual card for a customer with KYC and optional prefund (asynchronous).
POST
/
pms
/
api
/
external
/
request
/
virtual-cards
/
curl --request POST \
--url https://api.payvessel.com/pms/api/external/request/virtual-cards/ \
--header 'Content-Type: <content-type>' \
--header 'api-key: <api-key>' \
--header 'api-secret: <api-secret>' \
--data '
{
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone": "08031234567",
"bvn": "22345678901",
"nin": "12345678901",
"dob": "1990-05-15",
"image": "data:image/jpeg;base64,YOUR_BASE64_IDENTITY_IMAGE",
"state": "Lagos",
"lga": "Ikeja",
"street": "12 Admiralty Way, Lekki Phase 1",
"postal_code": "101233",
"brand": "VISA",
"currency": "USD",
"is_contactless": false,
"prefund_amount": "10.00",
"card_name": "Jane Doe"
}
'{
"status": true,
"message": "Virtual card creation started",
"data": {
"id": "7f219a25-d968-4894-9a8b-ba83fa0bf6ec",
"status": "PENDING",
"masked_pan": "",
"balance": "10.00",
"currency": "USD",
"brand": "VISA"
}
}{
"error": 401,
"message": "Unauthorized. Please check your API key."
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}This resource allows you to create a card for a customer. This operation is asynchronous, meaning we notify you via a webhook event on the final status.
Contactless cards may have a different issuance fee.
Contactless cards
Use the optional boolean fieldis_contactless on the create payload:
| Value | Description |
|---|---|
false | Standard virtual card (default) |
true | Contactless-enabled card for tap-to-pay use cases |
Headers
Your Payvessel public API key
Your Payvessel secret
Request content type
Available options:
application/json Body
application/json
Card network
Available options:
VISA, MASTERCARD Must be USD for customer cards
Available options:
USD Customer first name
Customer last name
Email address
Nigerian phone number
11-digit Bank Verification Number
11-digit National Identification Number
Date of birth (YYYY-MM-DD)
Base64-encoded identity document image
State of residence
Local government area
Street address
Postal code
Set to true to issue a contactless-enabled card. Defaults to false for a standard virtual card.
Optional initial card balance in USD (minimum 1.00 when provided)
Example:
"10.00"
Optional label on card (max 255 characters)
