1. Issuance
Vrtx Docs
  • Auth
    • Token
      POST
  • Onboarding
    • Start onboarding
      POST
    • Verify onboarding OTP
      POST
    • Resend onboarding OTP
      POST
    • Get session status
      GET
    • Initiate Nafath
      POST
    • Cancels session
      POST
    • Complete customer info
      POST
  • Webhooks
    • Process Nafath webhook
      POST
    • Process Faceki webhook
      POST
    • Process T2 webhook
      POST
  • Wallet
    • Change mobile number from profile settings
      • Change mobile number
      • Verify mobile number change OTP
      • Get mobile change status
    • Change mobile number from login screen
      • Change mobile number
      • Verify mobile number change OTP
      • Initiate Nafath
      • Get mobile number change status
  • Businesses
    • Create business
      POST
  • Transactions
    • Business Accounts
      • Get business account balance
      • Get transaction details
      • List business transactions
    • Wallet Accounts
      • Get wallet balance
      • List wallet transactions
  • Payouts
    • Create payout
    • Get payout status
    • Create bulk payout
    • Get bulk payout status
    • Get batch report
  • Cards
    • 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
      • Change card status
      • Set or update card PIN
      • Verify card PIN OTP
      • Activate physical card
      • Verify activation OTP
      • Display sensitive data
      • Verify display sensitive data OTP
  • cards
    • Initiate card replacement
    • Verify OTP and complete card replacement
Open-Loop-v2Closed-loop V2Card Simulatoropen-loop-test
Open-Loop-v2Closed-loop V2Card Simulatoropen-loop-test
  1. Issuance

Verify card conversion OTP

POST
/cards/complete-conversion
Last modified:2025-12-02 10:06:51
Completes the virtual to physical card conversion by verifying the OTP sent during the initiation step.
On success, the card is converted to physical and delivery address information is returned.
Request:
session_id: Session ID (cardIssuanceId) from the convert request
otp: 4-digit OTP code sent to the customer
Response:
card: Updated card with physical card details
delivery_address: Delivery address for the physical card
Error Responses:
400 INVALID_INPUT: Invalid request body
400 INVALID_OTP_FORMAT: OTP format is invalid (must be 4 digits)
400 OTP_EXPIRED: OTP has expired
400 OTP_MAX_ATTEMPTS_REACHED: Maximum OTP verification attempts reached
400 OTP_VERIFICATION_FAILED: OTP verification failed (generic error)
400 OTP_INCORRECT: Invalid OTP provided
404 CARD_NOT_FOUND: Card does not exist
404 CARD_ISSUANCE_NOT_FOUND: Card issuance session not found
404 OTP_OPERATION_NOT_FOUND: OTP operation context missing
409 CARD_TYPE_CONFLICT: Card is already physical
412 CARD_STATUS_NOT_ALLOWED: Card is not in ACTIVE status
412 INVALID_CARD_STATUS: Card status is invalid for this operation
412 OTP_OPERATION_WRONG_STATUS: OTP operation is not in correct state
503 SERVICE_UNAVAILABLE: Service temporarily unavailable

Request

Body Params application/jsonRequired

Examples

Responses

🟢200Success
application/json
Default Response
Body

đźź 400400
đźź 401401
đźź 403403
đźź 404404
đźź 405405
đźź 409409
đźź 410410
đźź 412412
đźź 422422
đźź 429429
đź”´500500
đź”´501501
đź”´503503
đź”´504504
đź”´505505
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST '/cards/complete-conversion' \
--header 'Content-Type: application/json' \
--data-raw '{
    "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82",
    "otp": "stri"
}'
Response Response Example
200 - Example 1
{
    "card": {
        "id": "f5a4b3c2-d1e0-9876-5432-1a0b9c8d7e6f",
        "account_id": "b2c3d4e5-f6a7-5890-b123-c4d5e6f7a8b9",
        "token": 987654321,
        "status": "LOCKED",
        "last_4_digits": "8765",
        "expiry_date": "2026-06-30",
        "design": "premium",
        "created_at": "2023-12-01T08:15:00Z",
        "updated_at": "2024-01-10T14:20:00Z",
        "is_physical": true,
        "physical_card_activation_status": "ACTIVATED",
        "physical_activated_at": "2024-02-01T09:00:00Z"
    },
    "delivery_address": {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "city": "string",
        "country": "string",
        "mobile_number": "string"
    }
}
Modified at 2025-12-02 10:06:51
Previous
Convert virtual to physical
Next
Get card
Built with