Virtual Cards is enabled per-merchant. If it isn’t enabled on your account, these endpoints return
SERVICE_NOT_ENABLED — contact support to request access.No transaction PIN is required on these endpoints — your API key/secret is the credential for server-to-server calls, same as every other money-moving endpoint.
Create Cardholder
POST/api/v1/virtual-cards/cardholders
string
required
string
required
string
required
Also used to detect an existing cardholder — calling this again with the same email returns the same cardholder rather than creating a duplicate.
string
Response
Get Cardholder
GET/api/v1/virtual-cards/cardholders/{id}
Poll this until kyc_status reads APPROVED before issuing a card — createCard will fail on a cardholder that hasn’t passed KYC.
Response
Issue Card
POST/api/v1/virtual-cards
integer
required
From the Create Cardholder response.
string
default:"VISA"
VISA or MASTERCARD.string
Your own nickname for the card.
Response
List / Get Card
GET/api/v1/virtual-cards — paginated list of your cards.
Response
/api/v1/virtual-cards/{id} — a single card, including its balance.
Fund / Unload Card
POST/api/v1/virtual-cards/{id}/fund
number
required
USD amount to load. Your wallet is charged this amount plus your account’s funding fee.
/api/v1/virtual-cards/{id}/unload — moves funds back from the card to your wallet.
Freeze / Unfreeze / Terminate
POST/api/v1/virtual-cards/{id}/freeze POST /api/v1/virtual-cards/{id}/unfreeze POST /api/v1/virtual-cards/{id}/terminate
Response
Transaction History
GET/api/v1/virtual-cards/{id}/transactions
Returns a paginated list of the card’s own spend history (separate from your main wallet transaction history).