Skip to main content
Issue Visa/Mastercard virtual cards for your customers, fund them, freeze/unfreeze, and track spend — regardless of which card provider is used on the backend.
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
GET /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.
POST /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
Terminate is permanent — the card cannot be reactivated afterward.

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).