curl --request POST \
--url https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id} \
--header 'Content-Type: application/json' \
--header 'x-auth-token: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"country_code": "SG",
"email": "[email protected]",
"phone_number": "86683306",
"date_of_birth": "1990-01-01",
"gender": "MALE",
"nationality": "SG",
"document_type": "pdf",
"document": "<string>"
}
'import requests
url = "https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}"
payload = {
"country_code": "SG",
"email": "[email protected]",
"phone_number": "86683306",
"date_of_birth": "1990-01-01",
"gender": "MALE",
"nationality": "SG",
"document_type": "pdf",
"document": "<string>"
}
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"x-auth-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
'x-auth-token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
country_code: 'SG',
email: '[email protected]',
phone_number: '86683306',
date_of_birth: '1990-01-01',
gender: 'MALE',
nationality: 'SG',
document_type: 'pdf',
document: '<string>'
})
};
fetch('https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'country_code' => 'SG',
'email' => '[email protected]',
'phone_number' => '86683306',
'date_of_birth' => '1990-01-01',
'gender' => 'MALE',
'nationality' => 'SG',
'document_type' => 'pdf',
'document' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-auth-token: <api-key>",
"x-idempotency-key: <x-idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}"
payload := strings.NewReader("{\n \"country_code\": \"SG\",\n \"email\": \"[email protected]\",\n \"phone_number\": \"86683306\",\n \"date_of_birth\": \"1990-01-01\",\n \"gender\": \"MALE\",\n \"nationality\": \"SG\",\n \"document_type\": \"pdf\",\n \"document\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
req.Header.Add("x-auth-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}")
.header("x-idempotency-key", "<x-idempotency-key>")
.header("x-auth-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"country_code\": \"SG\",\n \"email\": \"[email protected]\",\n \"phone_number\": \"86683306\",\n \"date_of_birth\": \"1990-01-01\",\n \"gender\": \"MALE\",\n \"nationality\": \"SG\",\n \"document_type\": \"pdf\",\n \"document\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-idempotency-key"] = '<x-idempotency-key>'
request["x-auth-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"country_code\": \"SG\",\n \"email\": \"[email protected]\",\n \"phone_number\": \"86683306\",\n \"date_of_birth\": \"1990-01-01\",\n \"gender\": \"MALE\",\n \"nationality\": \"SG\",\n \"document_type\": \"pdf\",\n \"document\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cardholder_id": "7c4ff2cd-1bf6-4aaa-bf16-266771425011",
"cardholder_status": "SUCCESS",
"idv_verification_url": "https://idv.sumsub.com/verify/abc123",
"idv_url_expires_at": "2026-04-10T10:00:00+08:00"
}Update Cardholder
Updates the specified issuing cardholder object by setting the values of the parameters passed. Any parameters not provided will be left unchanged (first name and last name cannot be accepted and updated).
curl --request POST \
--url https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id} \
--header 'Content-Type: application/json' \
--header 'x-auth-token: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"country_code": "SG",
"email": "[email protected]",
"phone_number": "86683306",
"date_of_birth": "1990-01-01",
"gender": "MALE",
"nationality": "SG",
"document_type": "pdf",
"document": "<string>"
}
'import requests
url = "https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}"
payload = {
"country_code": "SG",
"email": "[email protected]",
"phone_number": "86683306",
"date_of_birth": "1990-01-01",
"gender": "MALE",
"nationality": "SG",
"document_type": "pdf",
"document": "<string>"
}
headers = {
"x-idempotency-key": "<x-idempotency-key>",
"x-auth-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-idempotency-key': '<x-idempotency-key>',
'x-auth-token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
country_code: 'SG',
email: '[email protected]',
phone_number: '86683306',
date_of_birth: '1990-01-01',
gender: 'MALE',
nationality: 'SG',
document_type: 'pdf',
document: '<string>'
})
};
fetch('https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'country_code' => 'SG',
'email' => '[email protected]',
'phone_number' => '86683306',
'date_of_birth' => '1990-01-01',
'gender' => 'MALE',
'nationality' => 'SG',
'document_type' => 'pdf',
'document' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-auth-token: <api-key>",
"x-idempotency-key: <x-idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}"
payload := strings.NewReader("{\n \"country_code\": \"SG\",\n \"email\": \"[email protected]\",\n \"phone_number\": \"86683306\",\n \"date_of_birth\": \"1990-01-01\",\n \"gender\": \"MALE\",\n \"nationality\": \"SG\",\n \"document_type\": \"pdf\",\n \"document\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
req.Header.Add("x-auth-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}")
.header("x-idempotency-key", "<x-idempotency-key>")
.header("x-auth-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"country_code\": \"SG\",\n \"email\": \"[email protected]\",\n \"phone_number\": \"86683306\",\n \"date_of_birth\": \"1990-01-01\",\n \"gender\": \"MALE\",\n \"nationality\": \"SG\",\n \"document_type\": \"pdf\",\n \"document\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-idempotency-key"] = '<x-idempotency-key>'
request["x-auth-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"country_code\": \"SG\",\n \"email\": \"[email protected]\",\n \"phone_number\": \"86683306\",\n \"date_of_birth\": \"1990-01-01\",\n \"gender\": \"MALE\",\n \"nationality\": \"SG\",\n \"document_type\": \"pdf\",\n \"document\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cardholder_id": "7c4ff2cd-1bf6-4aaa-bf16-266771425011",
"cardholder_status": "SUCCESS",
"idv_verification_url": "https://idv.sumsub.com/verify/abc123",
"idv_url_expires_at": "2026-04-10T10:00:00+08:00"
}Authorizations
The API token for login provided by UQPay.
Headers
Specifies the sub-account on whose behalf the request is made. This should be set to the account_id, which can be retrieved via the List Connected Accounts endpoint. If omitted or empty, the request is executed using the master account.
More information at Connected Accounts.
A unique identifier (UUID) used to maintain operation idempotency, ensuring that repeated executions of the same operation do not result in unintended effects or duplication. It helps preserve data consistency in the face of network errors, retries, or failures.
Path Parameters
Universally unique identifier (UUID v4) of a resource.
"71fdb0fe-9682-457a-9361-e8868694f12f"
Body
The cardholder’s email address.
The cardholder’s phone number.
See Phone number validation rules for length validation details.
"86683306"
The cardholder's birth date with yyyy-mm-dd format.
"1990-01-01"
The cardholder's gender.
MALE- Male.FEMALE- Female.
MALE, FEMALE "MALE"
The cardholder's nationality in ISO 3166-1 alpha-2 format. Required for STANDARD and ENHANCED KYC levels.
2"SG"
The cardholder’s residential address.
Show child attributes
Show child attributes
The cardholder's identity document information. Required for STANDARD and ENHANCED KYC levels.
Show child attributes
Show child attributes
KYC verification information. Required for ENHANCED KYC level.
Show child attributes
Show child attributes
The type of the identification document.
pdf, png, jpg, jpeg "pdf"
Base64 encoded identification document string, 2MB limitation.
Response
Cardholder update successfully.
The cardholder’s unique identifier.
"7c4ff2cd-1bf6-4aaa-bf16-266771425011"
The cardholder's status.
FAILED, PENDING, SUCCESS, INCOMPLETE IDV verification URL. Returned when kyc_verification.method is SUMSUB_REDIRECT.
"https://idv.sumsub.com/verify/abc123"
IDV verification URL expiration time in RFC 3339 format. Returned when kyc_verification.method is SUMSUB_REDIRECT.
"2026-04-10T10:00:00+08:00"

