curl --request POST \
--url https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders \
--header 'Content-Type: application/json' \
--header 'x-auth-token: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"first_name": "Contract",
"last_name": "Regression",
"country_code": "US",
"phone_number": "2025550100",
"email": "[email protected]"
}
'import requests
url = "https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders"
payload = {
"first_name": "Contract",
"last_name": "Regression",
"country_code": "US",
"phone_number": "2025550100",
"email": "[email protected]"
}
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({
first_name: 'Contract',
last_name: 'Regression',
country_code: 'US',
phone_number: '2025550100',
email: '[email protected]'
})
};
fetch('https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders', 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",
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([
'first_name' => 'Contract',
'last_name' => 'Regression',
'country_code' => 'US',
'phone_number' => '2025550100',
'email' => '[email protected]'
]),
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"
payload := strings.NewReader("{\n \"first_name\": \"Contract\",\n \"last_name\": \"Regression\",\n \"country_code\": \"US\",\n \"phone_number\": \"2025550100\",\n \"email\": \"[email protected]\"\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")
.header("x-idempotency-key", "<x-idempotency-key>")
.header("x-auth-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"first_name\": \"Contract\",\n \"last_name\": \"Regression\",\n \"country_code\": \"US\",\n \"phone_number\": \"2025550100\",\n \"email\": \"[email protected]\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders")
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 \"first_name\": \"Contract\",\n \"last_name\": \"Regression\",\n \"country_code\": \"US\",\n \"phone_number\": \"2025550100\",\n \"email\": \"[email protected]\"\n}"
response = http.request(request)
puts response.read_body{
"cardholder_id": "7d6a7ba0-28b7-4f2d-99cb-05e4286bd0dc",
"cardholder_status": "SUCCESS"
}Create Cardholder
创建一个新的签发持卡人对象,该持卡人可被签发卡片。
curl --request POST \
--url https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders \
--header 'Content-Type: application/json' \
--header 'x-auth-token: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"first_name": "Contract",
"last_name": "Regression",
"country_code": "US",
"phone_number": "2025550100",
"email": "[email protected]"
}
'import requests
url = "https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders"
payload = {
"first_name": "Contract",
"last_name": "Regression",
"country_code": "US",
"phone_number": "2025550100",
"email": "[email protected]"
}
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({
first_name: 'Contract',
last_name: 'Regression',
country_code: 'US',
phone_number: '2025550100',
email: '[email protected]'
})
};
fetch('https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders', 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",
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([
'first_name' => 'Contract',
'last_name' => 'Regression',
'country_code' => 'US',
'phone_number' => '2025550100',
'email' => '[email protected]'
]),
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"
payload := strings.NewReader("{\n \"first_name\": \"Contract\",\n \"last_name\": \"Regression\",\n \"country_code\": \"US\",\n \"phone_number\": \"2025550100\",\n \"email\": \"[email protected]\"\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")
.header("x-idempotency-key", "<x-idempotency-key>")
.header("x-auth-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"first_name\": \"Contract\",\n \"last_name\": \"Regression\",\n \"country_code\": \"US\",\n \"phone_number\": \"2025550100\",\n \"email\": \"[email protected]\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.uqpaytech.com/api/v1/issuing/cardholders")
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 \"first_name\": \"Contract\",\n \"last_name\": \"Regression\",\n \"country_code\": \"US\",\n \"phone_number\": \"2025550100\",\n \"email\": \"[email protected]\"\n}"
response = http.request(request)
puts response.read_body{
"cardholder_id": "7d6a7ba0-28b7-4f2d-99cb-05e4286bd0dc",
"cardholder_status": "SUCCESS"
}授权
由 UQPAY 提供的登录 API Token。
请求头
指定代表哪个子账户发起请求。应设置为 account_id,该值可通过 List Connected Accounts 接口获取。若省略或为空,则请求以主账户身份执行。
更多信息参见 关联账户。
用于维持操作幂等性的唯一标识符(UUID),确保同一操作的重复执行不会产生意外影响或重复。它有助于在网络错误、重试或失败的情况下保持数据一致性。
请求体
持卡人的电子邮箱地址。
持卡人的名字。长度必须在 1 到 40 个字符之间,只能包含字母和空格。名字开头或结尾不允许有空格。
"Emily"
持卡人的姓氏。长度必须在 1 到 40 个字符之间,只能包含字母和空格。姓氏开头或结尾不允许有空格。
"Toy"
持卡人的出生日期,格式为 yyyy-mm-dd。持卡人须年满 18 周岁且未满 80 周岁。
"1990-01-01"
持卡人的性别。
MALE- 男。FEMALE- 女。
MALE, FEMALE "MALE"
持卡人的国籍,采用 ISO 3166-1 alpha-2 格式。STANDARD 和 ENHANCED KYC 等级必填。
2"SG"
持卡人的居住地址。
所有字段只接受字母(A-Z、a-z)、数字(0-9)、空格,以及以下标点:, . ' / # ( ) - &。包含其他任何字符的请求都会被拒绝——请修正后重新提交。为空的可选字段不做校验。
Show child attributes
Show child attributes
持卡人的身份证件信息。STANDARD 和 ENHANCED KYC 等级必填。
Show child attributes
Show child attributes
KYC 验证信息。ENHANCED KYC 等级必填。
Show child attributes
Show child attributes
身份证件的类型。
pdf, png, jpg, jpeg "pdf"
Base64 编码的身份证件字符串,限制 2MB。
响应
成功创建持卡人。
持卡人的唯一标识符。
"7c4ff2cd-1bf6-4aaa-bf16-266771425011"
持卡人的状态。
FAILED, PENDING, SUCCESS, INCOMPLETE IDV 验证 URL。当 kyc_verification.method 为 SUMSUB_REDIRECT 时返回。
"https://idv.sumsub.com/verify/abc123"
IDV 验证 URL 的过期时间,RFC 3339 格式。当 kyc_verification.method 为 SUMSUB_REDIRECT 时返回。
"2026-04-10T10:00:00+08:00"

