🚀 VaultsPay API v1 is live. See what's new →
Payment CardsCreate Virtual Card

Create Virtual Card

Issues an instant virtual card tied to an existing account. Returns the card metadata; use Reveal Card Details to fetch PAN/CVV.

POST/v1/cards

Body parameters

FieldTypeDescription
account_idrequiredstringAccount that funds the card.
typerequiredenumMust be `virtual` for this endpoint.
currencyrequiredISO 4217Must match the account currency.
labelstringFriendly name shown to the cardholder.
limitsobjectDaily / monthly / per-transaction spend caps. See below.
controlsobjectBoolean toggles (atm, online, contactless, cross_border).
metadataobjectYour custom key/value pairs.

limits object

FieldTypeDescription
daily_spendinteger (minor units)Default: 500000 (AED 5,000).
monthly_spendinteger (minor units)Default: 2000000 (AED 20,000).
per_transactioninteger (minor units)Default: 100000 (AED 1,000).

controls object

FieldTypeDescription
atm_withdrawalboolean
default: false
Not applicable to virtual cards; ignored.
online_paymentsboolean
default: true
Allow e-commerce purchases.
contactlessboolean
default: true
Allow tap-to-pay (for wallets).
cross_borderboolean
default: true
Allow transactions outside the UAE.

Request

curl -X POST https://api.vaultspay.ae/v1/cards \
  -H "Authorization: Bearer sk_test_yourApiKeyHere" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 8d7b4f62-7f21-4c6e-9a8e-d1f2c8b0e3aa" \
  -d '{
    "account_id": "acc_01HX7...",
    "type": "virtual",
    "currency": "AED",
    "label": "Online spend"
  }'

Response

201 Created
{
  "id": "card_01HX71YM6FJ3A8W7T5K6NRB2DN",
  "object": "card",
  "type": "virtual",
  "brand": "mastercard",
  "status": "active",
  "last4": "4321",
  "expiry_month": 11,
  "expiry_year": 2030,
  "account_id": "acc_01HX7...",
  "user_id": "usr_01HX7...",
  "currency": "AED",
  "created_at": "2026-04-24T14:52:03Z"
}