1. cards
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
      POST
    • Get payout status
      GET
    • Create bulk payout
      POST
    • Get bulk payout status
      GET
    • Get batch report
      GET
  • Cards
    • Issuance
      • Issue card
      • Get card issuance
      • Complete card issuance
      • Verify card issuance OTP
      • Convert virtual to physical
      • Verify card conversion OTP
    • 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
      POST
    • Verify OTP and complete card replacement
      POST
Open-Loop-v2Closed-loop V2Card Simulatoropen-loop-test
Open-Loop-v2Closed-loop V2Card Simulatoropen-loop-test
  1. cards

Verify OTP and complete card replacement

POST
/cards/replacement/verify-otp
Last modified:2025-12-02 10:06:51
Verifies the OTP and completes the card replacement process. On success, the old card is
cancelled and the new replacement card is returned.
Request:
session_id: Session ID from the replacement initiation
otp: 4-digit OTP code sent to the customer
Response:
card: The new replacement card details
delivery_address: Delivery address (only for physical cards)
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_INVALID: Invalid OTP provided
404 CARD_NOT_FOUND: Card does not exist
404 OTP_OPERATION_NOT_FOUND: Session ID not found
412 INVALID_CARD_STATUS: Card is not in ACTIVE status
412 OTP_OPERATION_WRONG_STATUS: OTP operation is not in correct state
503 SERVICE_UNAVAILABLE: Service temporarily unavailable
503 INVALID_CARD: Card replacement failed (Paymentology error)

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/replacement/verify-otp' \
--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
Initiate card replacement
Built with