Create Card
A SaaS app must have at least one card tier configured by its Admin. After that:
- For virtual cards, set
cardType = "VIRTUAL"and the card is created automatically. - For physical cards, include a delivery
addressobject.
POST{baseUrl}/pcs/api/v1/cards
Payload
| Attribute | Type | Required | Description |
|---|---|---|---|
| cardTierId | Integer | Yes | ID of the card tier to link the card. |
| customerId | Integer | Yes | ID of the customer for whom the card is created. |
| address | Object | Conditional | Delivery address object. Required for PHYSICAL cards. |
| address.country | String (ISO Alpha-3) | Conditional | Country code (e.g., PAK). |
| address.state | String | Conditional | State/Province. |
| address.city | String | Conditional | City. |
| address.addressLine1 | String | Conditional | Address line 1. |
| address.addressLine2 | String | No | Address line 2 (optional). |
| address.type | Enum | Conditional | e.g., MAILING. |
| address.postalCode | String | Conditional | Postal/ZIP code. |
| address.longitude | String | No | Longitude (decimal). |
| address.latitude | String | No | Latitude (decimal). |
| cardType | Enum | Yes | PHYSICAL or VIRTUAL. |
| accountId | Integer | Yes | Account ID to link the card. |
| cardHolderName | String | Yes | Name to emboss (must be from Embossing Name Options). |
Request Example
{
"cardTierId": 67,
"customerId": 799,
"address": {
"country": "PAK",
"state": "Punjab",
"city": "RWP",
"addressLine1": "line 1 address",
"type": "MAILING",
"postalCode": "44000",
"longitude": "127.45",
"latitude": "716.70"
},
"cardType": "PHYSICAL",
"accountId": 360,
"cardHolderName": "Test Card Owner"
}Response
| Field | Type | Description |
|---|---|---|
| id | Integer | Created card ID. |
| userId | Integer | Owner user ID. |
| cardIssuerConfigId | Integer | Card issuer config ID. |
| thirdPartyConfigSlug | String | Issuer slug/identifier (if any). |
| userProfile | Object | Basic profile of the cardholder. |
| _3dSecure | Object | 3DS configuration/details (if available). |
| account | Object | Linked account details. |
| cardTier | Object | Card tier flags (e.g., fraud rules, limits). |
| activation | Object | Activation flow/status (if present). |
| manufacturing | Object | Manufacturing details (physical cards). |
| delivery | Object | Delivery details (physical cards). |
| paymentCardType | Enum | e.g., DEBIT. |
| cardNetwork | Enum | e.g., MASTERCARD. |
| cardType | Enum | PHYSICAL or VIRTUAL. |
| billingCurrency | String | Billing currency code (if present). |
| embossName | String | Emboss/holder name. |
| tokenFlags | String | Token flags bitmask. |
| pinSet | Boolean | Whether PIN is set. |
| status | Enum | Initial status is ISSUANCE_REQUESTED. |
| cardText | String | Human-readable action text (e.g., “Waiting for Approval…“). |
| cardCategory | Enum | e.g., STANDARD. |
| consumerType | Enum | e.g., CONSUMER. |
| maxPurchaseLimit | Number | Max purchase limit. |
| statusReason | String | Reason for current status. |
| apiCallUniqueIdentifier | String | API-call unique trace ID (if present). |
| cardHolderName | String | Cardholder full name. |
| cardTokens | Array | Linked tokens (virtual/tokenized services). |
| processedAtThirdParty | Boolean | Whether the card was processed at third party. |
| createdAt / updatedAt | String | Timestamps (ISO 8601). |
200 — SUCCESS
{
"data": {
"id": 1079,
"userId": 5,
"userProfile": {
"id": 1117,
"pronounTitle": "Mr",
"firstName": "John",
"lastName": "Mock-Doe",
"email": "default.user@vaultspay.ae",
"countryCode": "971",
"phone": "34343435",
"language": "ENGLISH"
},
"account": {
"id": 1281,
"accountId": 10,
"userId": 5,
"accountType": "DIGITAL",
"currencyCode": "AED",
"accountTitle": "DEFAULT USER DIGITAL AED",
"accountNumber": "1000648060000040",
"iban": "AE680961000648060000040"
},
"cardTier": { "id": 1, "enableFraudRules": false, "enableLimits": true },
"paymentCardType": "DEBIT",
"cardNetwork": "MASTERCARD",
"cardType": "VIRTUAL",
"embossName": "awais test",
"tokenFlags": "00010000000000000000001100010000",
"pinSet": true,
"status": "ISSUANCE_REQUESTED",
"cardText": "Waiting for Approval…",
"maxPurchaseLimit": 100,
"cardCategory": "STANDARD",
"consumerType": "CONSUMER",
"processedAtThirdParty": false,
"createdAt": "2025-07-04T05:08:32.654+00:00",
"updatedAt": "2025-07-04T05:08:32.654+00:00"
}
}