Cardholder
You can create cardholders, which are authorized representatives of your business that can be issued cards.
Create Cardholderโ
- Endpoint
POST {{baseUrl}}/zoqq/api/v1/card/cardholder
Description
Cardholders are authorized representatives of your business. Depending on the program, one or both of the following cardholder types are permitted: INDIVIDUAL and DELEGATE.
INDIVIDUAL : A cardholder who is associated with a named individual that is a representative of your business. Can be associated with a personalized or non-personalized card.
DELEGATE : A cardholder assigned only to non-personalized cards. They act as authorized users on behalf of your business. Cards issued to delegate cardholders will be associated with the name of your business.
Creating a cardholder requires passing a name screening process, which involves submitting basic information about the cardholder.
๐ฉ Request Headers
x-api-key string required
x-product-id string required
x-request-id string required
x-user-id string required
agent-code string
subagent-code string
Content-Type string required
application/jsonAuthorization string required
๐ฆ Request Body Parameters
email string required
mobile_number string required
country_code string
individual object conditional
date_of_birth string required
YYYY-MM-DD))name object required
title string
first_name string required
middle_name string
last_name string required
address object required
city string required
country string required
line1 string required
state string required
postcode string required
employers array
business_identifiers array
country_code string
number string
type string
business_name string
postal_address object conditional
city string required
country string required
line1 string required
state string required
postcode string required
type string required
INDIVIDUAL, DELEGATEcreated_by string required
- ๐งฉ Examples
- ๐งช Try It Out
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request POST \
--url '{{baseUrl}}/zoqq/api/v1/card/cardholder' \
--header 'x-api-key: {{Shared X-API key By Zoqq}}' \
--header 'x-product-id: {{Shared ProductID By Zoqq}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'
--data-raw '{
"email": "testapiair78@yopmail.com",
"mobile_number": "86689006",
"individual": {
"date_of_birth": "1990-01-01",
"name": {
"title": "Mr",
"first_name": "John",
"middle_name":"P",
"last_name": "Doe"
},
"address": {
"city": "New York",
"country": "SG",
"line1": "123 5th Avenue",
"state": "NY",
"postcode": "10001"
}
},
"postal_address": {
"city": "New York",
"country": "SG",
"line1": "123 5th Avenue",
"state": "NY",
"postcode": "10001"
},
"type": "INDIVIDUAL",
"created_by": "test"
}'
import requests
import json
url = "{{baseUrl}}/zoqq/api/v1/card/cardholder"
payload = json.dumps({
"email": "testapiair78@yopmail.com",
"mobile_number": "86689006",
"individual": {
"date_of_birth": "1990-01-01",
"name": {
"title": "Mr",
"first_name": "John",
"middle_name": "P",
"last_name": "Doe"
},
"address": {
"city": "New York",
"country": "SG",
"line1": "123 5th Avenue",
"state": "NY",
"postcode": "10001"
}
},
"postal_address": {
"city": "New York",
"country": "SG",
"line1": "123 5th Avenue",
"state": "NY",
"postcode": "10001"
},
"type": "INDIVIDUAL",
"created_by": "test"
})
headers = {
'x-api-key': '{{Shared X-API key By Zoqq}}',
'x-product-id': '{{Shared ProductID By Zoqq}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"email\": \"testapiair78@yopmail.com\",\r\n \"mobile_number\": \"86689006\",\r\n \"individual\": {\r\n \"date_of_birth\": \"1990-01-01\",\r\n \"name\": {\r\n \"title\": \"Mr\",\r\n \"first_name\": \"John\",\r\n \"middle_name\":\"P\",\r\n \"last_name\": \"Doe\"\r\n },\r\n \"address\": {\r\n \"city\": \"New York\",\r\n \"country\": \"SG\",\r\n \"line1\": \"123 5th Avenue\",\r\n \"state\": \"NY\",\r\n \"postcode\": \"10001\"\r\n }\r\n },\r\n \"postal_address\": {\r\n \"city\": \"New York\",\r\n \"country\": \"SG\",\r\n \"line1\": \"123 5th Avenue\",\r\n \"state\": \"NY\",\r\n \"postcode\": \"10001\"\r\n },\r\n \"type\": \"INDIVIDUAL\",\r\n \"created_by\": \"test\"\r\n }");
Request request = new Request.Builder()
.url("{{baseUrl}}/zoqq/api/v1/card/cardholder")
.method("POST", body)
.addHeader("x-api-key", "{{Shared X-API key By Zoqq}}")
.addHeader("x-product-id", "{{Shared ProductID By Zoqq}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("x-user-id", "{{UserID}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let data = JSON.stringify({
"email": "testapiair78@yopmail.com",
"mobile_number": "86689006",
"individual": {
"date_of_birth": "1990-01-01",
"name": {
"title": "Mr",
"first_name": "John",
"middle_name": "P",
"last_name": "Doe"
},
"address": {
"city": "New York",
"country": "SG",
"line1": "123 5th Avenue",
"state": "NY",
"postcode": "10001"
}
},
"postal_address": {
"city": "New York",
"country": "SG",
"line1": "123 5th Avenue",
"state": "NY",
"postcode": "10001"
},
"type": "INDIVIDUAL",
"created_by": "test"
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '{{baseUrl}}/zoqq/api/v1/card/cardholder',
headers: {
'x-api-key': '{{Shared X-API key By Zoqq}}',
'x-product-id': '{{Shared ProductID By Zoqq}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200: Success
- 400: Error
{
"status": "success",
"message": "Cardholder created successfully.",
"code": 200,
"data": [
{
"id": "cardholder-id"
}
]
}
{
"code": 400,
"status": "Error",
"message": "Error Message"
}
๐ชช Create Cardholder โ Sandbox
๐ Headers
๐ Request Body
๐ป Generated cURL Command
โฏGet All Cardholdersโ
- Endpoint
GET {{baseUrl}}/zoqq/api/v1/card/cardholder
Description
This API returns a list of all cardholders, allowing you to view and manage cardholder details easily.
๐ฉ Request Headers
x-api-key string required
x-product-id string required
x-request-id string required
x-user-id string required
Content-Type string required
application/jsonAuthorization string required
๐ Query Parameters
status string
PENDING, READYpage_num integer
page_size integer
- ๐งฉ Examples
- ๐งช Try It Out
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request GET \
--url '{{baseUrl}}/zoqq/api/v1/card/cardholder' \
--header 'x-api-key: {{Shared X-API key By Zoqq}}' \
--header 'x-product-id: {{Shared ProductID By Zoqq}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'
import requests
import json
url = "{{baseUrl}}/zoqq/api/v1/card/cardholder"
payload = {}
headers = {
'x-api-key': '{{Shared X-API key By Zoqq}}',
'x-request-id': '{{IdempotencyKey}}',
'Content-Type': 'application/json',
'x-product-id': '{{Shared ProductID By Zoqq}}',
'x-user-id': '{{UserID}}',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.json())
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{{baseUrl}}/zoqq/api/v1/card/cardholder")
.method("GET", body)
.addHeader("x-api-key", "{{Shared X-API key By Zoqq}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("Content-Type", "application/json")
.addHeader("x-product-id", "{{Shared ProductID By Zoqq}}")
.addHeader("x-user-id", "{{UserID}}")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: '{{baseUrl}}/zoqq/api/v1/card/cardholder',
headers: {
'x-api-key': '{{Shared X-API key By Zoqq}}',
'x-product-id': '{{Shared ProductID By Zoqq}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200: Success
- 400: Error
{
"status": "success",
"message": "Cardholder fetched successfully",
"code": 200,
"data": [
{
"id": "cardholder-id",
"email": "demo@yopmail.com",
"status": "READY",
"individual": null,
"mobile_number": "91-95053039",
"postal_address": null,
"type": "DELEGATE",
"created_by": "test",
"created_at": "2025-07-10T05:42:45"
},
{
"id": "cardholder-id",
"email": "testapiair99@yopmail.com",
"status": "PENDING",
"individual": {
"date_of_birth": "1990-01-01",
"identification": {
"country": "US",
"expiry_date": "2030-12-31",
"number": "ID123456789",
"type": "PASSPORT"
},
"name": {
"title": "miss",
"first_name": "John",
"middle_name": "singh",
"last_name": "Doe"
},
"address": {
"city": "New York",
"country": "SG",
"line1": "123 5th Avenue",
"state": "NY",
"postcode": "10001"
}
},
"mobile_number": "1234567890",
"postal_address": {
"city": "New York",
"country": "SG",
"line1": "123 5th Avenue",
"state": "NY",
"postcode": "10001"
},
"type": "INDIVIDUAL",
"created_by": "test",
"created_at": "2025-08-08T06:03:12"
}
]
}
{
"code": 400,
"status": "Error",
"message": "Error Message",
}
๐งพ Get All Cardholders โ Sandbox
๐ Headers
๐ Query Parameters (Optional)
โฏ๐ป Generated cURL Command
โฏGet Cardholder Detailsโ
- Endpoint
GET {{baseUrl}}/zoqq/api/v1/card/cardholder
Description
This API is used to retrieve the details of a specific cardholder. You must provide the Cardholder ID as a query parameter to identify the cardholder.
๐ฉ Request Headers
x-api-key string required
x-product-id string required
x-request-id string required
x-user-id string required
Content-Type string required
application/jsonAuthorization string required
๐ Query Parameters
id string required
- ๐งฉ Examples
- ๐งช Try It Out
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request GET \
--url '{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}' \
--header 'x-api-key: {{Shared X-API key By Zoqq}}' \
--header 'x-product-id: {{Shared ProductID By Zoqq}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'
import requests
import json
url = "{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}"
payload = {}
headers = {
'x-api-key': '{{Shared X-API key By Zoqq}}',
'x-product-id': '{{Shared ProductID By Zoqq}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}")
.method("GET", body)
.addHeader("x-api-key", "{{Shared X-API key By Zoqq}}")
.addHeader("x-product-id", "{{Shared ProductID By Zoqq}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("x-user-id", "{{UserID}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: '{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}',
headers: {
'x-api-key': '{{Shared X-API key By Zoqq}}',
'x-product-id': '{{Shared ProductID By Zoqq}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200: Success
- 400: Error
{
"status": "success",
"message": "Cardholder fetched successfully",
"code": 200,
"data": [
{
"id": "cardholder-id",
"email": "demo@yopmail.com",
"status": "READY",
"individual": null,
"mobile_number": "91-95053039",
"postal_address": null,
"type": "DELEGATE",
"created_by": "test",
"created_at": "2025-07-10T05:42:45"
}
]
}
{
"code": 400,
"status": "Error",
"message": "Error Message"
}
๐ Get Cardholder Details โ Sandbox
๐ Headers
๐ Query Parameters
๐ป Generated cURL Command
โฏUpdate Cardholderโ
- Endpoint
PATCH {{baseUrl}}/zoqq/api/v1/card/cardholder
Description
This endpoint updates card holder information including physical address, postal address, and contact details.Update a cardholder with selected information. All fields are optional, and only those provided will be updated. If a composite object, e.g. name is provided, then all of its child fields must be provided and valid. Updating the cardholder may re-trigger the name screening process.
๐ฉ Request Headers
x-api-key string required
x-product-id string required
x-request-id string required
x-user-id string required
Content-Type string required
application/jsonAuthorization string required
๐ฆ Request Body Parameters
mobile_number string
country_code string
individual object conditional
address object required
city string required
country string required
line1 string required
state string required
postcode string required
postal_address object conditional
city string required
country string required
line1 string required
state string required
postcode string required
updated_by string required
๐ Query Parameters
id string required
- ๐งฉ Examples
- ๐งช Try It Out
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request PATCH \
--url '{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}' \
--header 'x-api-key: {{Shared X-API key By Zoqq}}' \
--header 'x-product-id: {{Shared ProductID By Zoqq}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'
--data '{
"individual": {
"address": {
"city": "Austin",
"country": "US",
"line1": "1234 Elm Street",
"state": "TX",
"postcode": "94932"
}
},
"postal_address": {
"city": "Los Angeles",
"country": "US",
"line1": "5678 Oak Avenue",
"state": "CA",
"postcode": "94932"
},
"updated_by": "user"
}'
import requests
import json
url = "{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}"
payload = json.dumps({
"individual": {
"address": {
"city": "Austin",
"country": "US",
"line1": "1234 Elm Street",
"state": "TX",
"postcode": "94932"
}
},
"postal_address": {
"city": "Los Angeles",
"country": "US",
"line1": "5678 Oak Avenue",
"state": "CA",
"postcode": "94932"
},
"updated_by": "user"
})
headers = {
'x-api-key': '{{Shared X-API key By Zoqq}}',
'x-product-id': '{{Shared ProductID By Zoqq}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("PATCH", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"individual\": {\r\n \"address\": {\r\n \"city\": \"Austin\",\r\n \"country\": \"US\",\r\n \"line1\": \"1234 Elm Street\",\r\n \"state\": \"TX\",\r\n \"postcode\": \"94932\"\r\n }\r\n },\r\n \"postal_address\": {\r\n \"city\": \"Los Angeles\",\r\n \"country\": \"US\",\r\n \"line1\": \"5678 Oak Avenue\",\r\n \"state\": \"CA\",\r\n \"postcode\": \"94932\"\r\n },\r\n \"updated_by\": \"user\"\r\n}");
Request request = new Request.Builder()
.url("{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}")
.method("PATCH", body)
.addHeader("x-api-key", "{{Shared X-API key By Zoqq}}")
.addHeader("x-product-id", "{{Shared ProductID By Zoqq}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("x-user-id", "{{UserID}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let data = JSON.stringify({
"individual": {
"address": {
"city": "Austin",
"country": "US",
"line1": "1234 Elm Street",
"state": "TX",
"postcode": "94932"
}
},
"postal_address": {
"city": "Los Angeles",
"country": "US",
"line1": "5678 Oak Avenue",
"state": "CA",
"postcode": "94932"
},
"updated_by": "user"
});
let config = {
method: 'patch',
maxBodyLength: Infinity,
url: '{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}',
headers: {
'x-api-key': '{{Shared X-API key By Zoqq}}',
'x-product-id': '{{Shared ProductID By Zoqq}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200: Success
- 400: Error
{
"status": "success",
"message": "Cardholder updated successfully.",
"code": 200
}
{
"code": 400,
"status": "Error",
"message": "Error Message"
}
๐ Update Cardholder โ Sandbox
๐ Headers
๐ Query Parameters
๐ Request Body
๐ป Generated cURL Command
โฏDelete Cardholderโ
- Endpoint
DELETE {{baseUrl}}/zoqq/api/v1/card/cardholder
Description
Permanently deletes a specified cardholder from the system. This action is irreversible.
๐ฉ Request Headers
x-api-key string required
x-product-id string required
x-request-id string required
x-user-id string required
Content-Type string required
application/jsonAuthorization string required
๐ Query Parameters
id string required
- ๐งฉ Examples
- ๐งช Try It Out
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request DELETE \
--url '{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}' \
--header 'x-api-key: {{Shared X-API key By Zoqq}}' \
--header 'x-product-id: {{Shared ProductID By Zoqq}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'
import requests
import json
url = "{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}"
payload = {}
headers = {
'x-api-key': '{{Shared X-API key By Zoqq}}',
'x-product-id': '{{Shared ProductID By Zoqq}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}")
.method("DELETE", body)
.addHeader("x-api-key", "{{Shared X-API key By Zoqq}}")
.addHeader("x-product-id", "{{Shared ProductID By Zoqq}}")
.addHeader("x-request-id", "{{IdempotencyKey}}")
.addHeader("x-user-id", "{{UserID}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
const axios = require('axios');
let config = {
method: 'delete',
maxBodyLength: Infinity,
url: '{{baseUrl}}/zoqq/api/v1/card/cardholder?id={{CardholderID}}',
headers: {
'x-api-key': '{{Shared X-API key By Zoqq}}',
'x-product-id': '{{Shared ProductID By Zoqq}}',
'x-request-id': '{{IdempotencyKey}}',
'x-user-id': '{{UserID}}',
'Content-Type': 'application/json',
'Authorization': 'Bearer {{AccessToken}}'
}
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response Example
- 200: Success
- 400: Error
{
"status": "success",
"message": "Cardholder deleted successfully.",
"code": 200
}
{
"code": 400,
"status": "Error",
"message": "Error Message"
}