vrtx Docs
Core APIs
  • Start
  • Onboarding
  • Wallet
  • Payouts
  • Cards
  • Transactions
Closed loop APIsCard Simulator
SDK APIs
  • Coming Soon!
Core APIs
  • Start
  • Onboarding
  • Wallet
  • Payouts
  • Cards
  • Transactions
Closed loop APIsCard Simulator
SDK APIs
  • Coming Soon!
  1. Issuance
  • Issuance
    • Issue card
      POST
    • Get card issuance
      GET
    • Complete card issuance
      POST
    • Verify card issuance OTP
      POST
    • Convert virtual to physical
      POST
    • Verify card conversion OTP
      POST
  • Management
    • Get card
      GET
    • Change card status
      PATCH
    • Set or update card PIN
      POST
    • Verify card PIN OTP
      POST
    • Activate physical card
      POST
    • Verify activation OTP
      POST
    • Display sensitive data
      POST
    • Verify display sensitive data OTP
      POST
  1. Issuance

Issue card

POST
https://api.staging.vrtx.sa/cards/issue
Last modified:2025-12-03 10:51:05
Issues a new card for an eligible wallet holder associated with the specified account.
Body Parameters:
Exactly one of account_id or account_reference_id must be provided
idempotency-key header (UUID) is required to deduplicate issuance requests
pin (optional): 4-digit numeric PIN to set during issuance. Must not be sequential (e.g., 1234) or repeated (e.g., 1111)
PIN Validation Rules:
Must be exactly 4 digits
Must be numeric only
Cannot be sequential (e.g., 1234, 5678)
Cannot be repeated (e.g., 1111, 2222)
Error Responses:
400 INVALID_INPUT: Invalid PIN format, weak PIN (sequential/repeated), or invalid request body
400 INVALID_CITY: Invalid city provided. City must be one of the valid Saudi cities
400 INVALID_REQUEST: Missing required information (e.g., emboss name for physical cards)
404 ACCOUNT_NOT_FOUND: Specified account does not exist
409 CARD_LIMIT_REACHED: Account has reached the maximum number of cards
409 CARD_TYPE_CONFLICT: Account already has an active physical card. Only one active physical card is allowed per account
503 SERVICE_UNAVAILABLE: Service temporarily unavailable

Request

Authorization
JWT Bearer
Add the parameter
Authorization
to Headers
Example:
Authorization: ********************
or
Header Params

Body Params application/json

Examples
{
    "account_id": "b2c3d4e5-f6a7-5890-b123-c4d5e6f7a8b9",
    "type": "individualVirtualDebitCard",
    "pin": "1357"
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location --request POST 'https://api.staging.vrtx.sa/cards/issue' \
--header 'idempotency-key;' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "account_id": "b2c3d4e5-f6a7-5890-b123-c4d5e6f7a8b9",
    "type": "individualVirtualDebitCard",
    "pin": "1357"
}'

Responses

🟢200OK
application/json
Default Response
Body

Examples
{
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-15T10:35:00Z",
    "account_id": "b2c3d4e5-f6a7-5890-b123-c4d5e6f7a8b9",
    "account_number": "ACC-2024-00123",
    "customer_id": "c3d4e5f6-a7b8-9012-c345-d6e7f8a9b0c1",
    "status": "ISSUED",
    "idempotency_key": "f9e8d7c6-b5a4-3210-9876-543210fedcba",
    "card": {
        "id": "f5a4b3c2-d1e0-9876-5432-1a0b9c8d7e6f",
        "account_id": "b2c3d4e5-f6a7-5890-b123-c4d5e6f7a8b9",
        "token": 987654321,
        "status": "ACTIVE",
        "last_4_digits": "1234",
        "expiry_date": "2027-12-31",
        "design": "standard",
        "created_at": "2024-01-15T10:35:00Z",
        "updated_at": "2024-01-15T10:35:00Z"
    }
}
đźź 400Bad Request
đźź 401Unauthorized
đźź 403Forbidden
đźź 404Not Found
đźź 405Method Not Allowed
đźź 409Conflict
đźź 410Gone
đźź 422Unprocessable Entity
đźź 429Too Many Requests
đź”´500Internal Server Error
đź”´501Not Implemented
đź”´503Service Unavailable
đź”´504Gateway Timeout
đź”´505HTTP Version Not Supported
Modified at 2025-12-03 10:51:05
Next
Get card issuance
Built with