Skip to main content
Personal Visa only The Personal Visa card product requires cardholders to complete Enhanced KYC before a card can be issued. This guide walks through the full flow, from checking the product requirements and verifying the cardholder’s identity to issuing the card.
A card can only be issued when cardholder_status is SUCCESS. Do not call Create Card while the cardholder is INCOMPLETE, PENDING, or FAILED. Complete or resolve KYC first.
Personal Visa card issuance is subject to cardholder region restrictions. The cardholder’s residential_address.country and nationality determine whether they are eligible for card issuance. If the residential country or region is unsupported, or the nationality is restricted, the Create Card request will be rejected. Review the complete cardholder region restrictions before creating the cardholder and initiating KYC to avoid completing KYC for a cardholder who is not eligible for card issuance.
Cardholder requirements
  • Call List Products and follow the target product’s required_fields. Enhanced KYC products require identity, residential_address, and kyc_verification. If the product only requires Simplified KYC fields, the existing cardholder creation flow remains unchanged.
  • The combined length of first_name and last_name must not exceed 26 letters.
  • residential_address.postal_code must be 4–10 characters long, inclusive.

Overview

Prerequisites

Before making API calls, obtain an access token:
Use the returned auth_token in all subsequent requests via the x-auth-token header.

Step 1: Check Product Requirements

Call List Products to identify which fields your target product requires.
In the response, look at the required_fields array. An Enhanced KYC product will include identity, residential_address, and kyc_verification as required fields. Here is an example of an Enhanced product (BIN 46651711):
The required_fields tell you exactly what information is needed. Only fields marked "required": true are mandatory — optional fields can be omitted.

Step 2: Create Cardholder with Enhanced KYC

Call Create Cardholder with the full set of required fields plus kyc_verification. There are two verification methods — choose the one that fits your use case:

Option A: SUMSUB_REDIRECT

Use this if you want UQPAY to handle identity verification via Sumsub. You will receive an IDV URL to redirect your cardholder to.
Response — the cardholder enters INCOMPLETE status with an IDV link:
Redirect your cardholder to idv_verification_url to complete identity verification, then wait for the webhook notification (Step 3).

Option B: THIRD_PARTY

Use this if you have already completed identity verification through your own KYC provider and have a proof reference.
kyc_proof.reference_id must be at least 10 characters and globally unique.
Response — the cardholder is verified immediately:
You can proceed directly to Step 4: Create Card.

Step 3: Wait for KYC Approval (SUMSUB_REDIRECT only)

If you used SUMSUB_REDIRECT, subscribe to the cardholder.kyc.status_changed webhook to receive real-time KYC status updates. Webhook payload example (KYC approved):
When cardholder_status becomes SUCCESS, the cardholder is ready for card issuance.
Cards cannot be issued while the cardholder is in PENDING status. Wait for KYC approval before proceeding.

Step 4: Create Card

Once cardholder_status is SUCCESS, call Create Card:
The sample below uses card_currency: "USD" for sandbox. In production, set card_currency to XUSD.
Response:

Error Handling

KYC insufficient at card creation

If you attempt to create a card but the cardholder hasn’t met the product’s KYC requirements, you will receive an error with missing_fields indicating which fields are still needed:
You can either:
  1. Update the cardholder first via Update Cardholder, then retry card creation.
  2. Supply the missing fields inline by passing cardholder_required_fields in the Create Card request.

Cardholder in PENDING status

Creating a card while the cardholder’s cardholder_status is PENDING will be rejected. Wait for the KYC review to complete before retrying.