Cards
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. Two types of cardholders 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": "test123@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\": \"test123@yopmail.com\",\r\n\"mobile_number\": \"11111222222\",\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}\r\n\r\n\r\n\n\n\n\n\n\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
๐ป 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"
}
๐๏ธ Delete Cardholder โ Sandbox
๐ Headers
๐ Query Parameters
๐ป Generated cURL Command
โฏCreate Cardโ
- Endpoint
POST {{baseUrl}}/zoqq/api/v1/card
Description
The card object represents the resource associated with a card issued by Zoqq. It contains details such as the linked account, embossed name (for physical cards), shipping method and information (for physical cards), and card-based spend controls (e.g., transaction limits, blocked merchant category codes, etc.). The card object also specifies the intended user (e.g., clients, customers, or employees), the form factor (physical or virtual), and the usage type (single-use or multi-use).
๐ฉ 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
card_issuance_action string required
NEW, REPLACEMENTcard_type string required
PHYSICAL, VIRTUALcard_holder_id string required
created_by string required
request_id string required
program object required
purpose string required
COMMERCIAL, CONSUMER.authorization_controls object required
allowed_transaction_count string required
SINGLE, MULTIPLE. Single Use means that the card can only be used for 1 successful debit transaction.transaction_limits object required
currency string required
limits array required
amount double required
interval string required
PER_TRANSACTION, DAILY, WEEKLY, MONTHLY, ALL_TIME.postal_address object conditional
city string required
country string required
line1 string required
state string required
postcode string required
is_personalized boolean required
- ๐งฉ Examples
- ๐งช Try It Out
Request Example
- cURL
- Python
- Java
- NodeJs
curl --location --request POST \
--url '{{baseUrl}}/zoqq/api/v1/card' \
--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 '{
"card_issuance_action": "NEW",
"card_type": "PHYSICAL",
"card_holder_id": "{{CardholderID}}",
"created_by": "Postman Test",
"request_id": "{{IdempotencyKey}}",
"program": {
"purpose": "COMMERCIAL"
},
"authorization_controls": {
"allowed_transaction_count": "MULTIPLE",
"transaction_limits": {
"currency": "SGD",
"limits": [
{
"amount": 10000,
"interval": "PER_TRANSACTION"
}
]
}
},
"postal_address": {
"city": "Singapore",
"country": "SG",
"line1": "21 Pasir Ris Street 72",
"state": "Singapore",
"postcode": "518764"
},
"is_personalized": true
}'
import requests
import json
url = "{{baseUrl}}/zoqq/api/v1/card"
payload = json.dumps({
"card_issuance_action": "NEW",
"card_type": "PHYSICAL",
"card_holder_id": "{{CardholderID}}",
"created_by": "Postman Test",
"request_id": "{{IdempotencyKey}}",
"program": {
"purpose": "COMMERCIAL"
},
"authorization_controls": {
"allowed_transaction_count": "MULTIPLE",
"transaction_limits": {
"currency": "SGD",
"limits": [
{
"amount": 10000,
"interval": "PER_TRANSACTION"
}
]
}
},
"postal_address": {
"city": "Singapore",
"country": "SG",
"line1": "21 Pasir Ris Street 72",
"state": "Singapore",
"postcode": "518764"
},
"is_personalized": True
})
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("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 \"card_issuance_action\": \"NEW\",\r\n \"card_type\": \"PHYSICAL\",\r\n \"card_holder_id\": \"{{CardholderID}}\",\r\n \"created_by\": \"Postman Test\",\r\n \"request_id\": \"{{IdempotencyKey}}\", \n \"program\": {\r\n \"purpose\": \"COMMERCIAL\"},\r\n \"authorization_controls\": {\r\n \"allowed_transaction_count\": \"MULTIPLE\",\r\n \"transaction_limits\": {\r\n \"currency\": \"SGD\",\r\n \"limits\": [\r\n {\r\n \"amount\": 10000,\r\n \"interval\": \"PER_TRANSACTION\"\r\n }\r\n ]\r\n }\r\n },\r\n \"postal_address\": {\r\n \"city\": \"Singapore\",\r\n \"country\": \"SG\",\r\n \"line1\": \"21 Pasir Ris Street 72\",\r\n \"state\": \"Singapore\",\r\n \"postcode\": \"518764\"\r\n },\r\n \"is_personalized\": true\r\n }");
Request request = new Request.Builder()
.url("{{baseUrl}}/zoqq/api/v1/card")
.method("POST", 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 data = JSON.stringify({
"card_issuance_action": "NEW",
"card_type": "PHYSICAL",
"card_holder_id": "{{CardholderID}}",
"created_by": "Postman Test",
"request_id": "{{IdempotencyKey}}",
"program": {
"purpose": "COMMERCIAL",
"type": "DEBIT"
},
"authorization_controls": {
"allowed_transaction_count": "MULTIPLE",
"transaction_limits": {
"currency": "SGD",
"limits": [
{
"amount": 10000,
"interval": "PER_TRANSACTION"
}
]
}
},
"postal_address": {
"city": "Singapore",
"country": "SG",
"line1": "21 Pasir Ris Street 72",
"state": "Singapore",
"postcode": "518764"
},
"is_personalized": true
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '{{baseUrl}}/zoqq/api/v1/card',
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
{
"code": 200,
"status": "success",
"message": "",
"data": {
"id": "card-id"
}
}
{
"code": 400,
"status": "Error",
"message": "Error Message"
}
๐ณ Create Card โ Sandbox
๐ Headers
๐ Request Body
๐ป Generated cURL Command
โฏGet All Cardsโ
- Endpoint
GET {{baseUrl}}/zoqq/api/v1/card
Description
This endpoint returns a list of all cards (both physical and virtual) associated with the authenticated user. The response includes key card attributes such as card status, masked number, type, associated cardholder ID, and timestamps for creation and updates.
You can also filter the results using query parameters such as card ID and card status to retrieve specific card records.
๐ฉ 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
status string
ACTIVE, INACTIVEpage_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' \
--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
url = "{{baseUrl}}/zoqq/api/v1/card"
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.get(url, headers=headers, params=params)
print(response.json())
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("{{baseUrl}}/zoqq/api/v1/card"))
.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}}")
.addHeader("Content-Type", "application/json")
.header("Authorization", "Bearer {{AccessToken}}")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: '{{baseUrl}}/zoqq/api/v1/card',
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
{
"code": 200,
"status": "success",
"message": "",
"data": [
{
"cardHashId": "card-hash-id",
"cardStatus": "ACTIVE",
"maskedCardNumber": "************4639",
"cardholderId": "",
"createdAt": "2025-04-02T07:36:56.973+0000",
"updatedAt": "2025-04-23T05:45:12.422+0000",
"nameOnCard": "Postman Test",
"cardType": "VIRTUAL",
"currency": "USD"
},
{
"cardHashId": "card-hash-id",
"cardStatus": "INACTIVE",
"maskedCardNumber": "************6886",
"cardholderId": "",
"createdAt": "2025-03-31T08:02:20.000+0000",
"updatedAt": "2025-03-31T08:02:20.000+0000",
"nameOnCard": "demozoqq",
"cardType": "PHY",
"currency": "SGD"
}
]
}
{
"code": 400,
"status": "Error",
"message": "Error Message"
}