Accounts
Create Account​
This API allows you to create a new account for a user in the system.
- Endpoint
POST {{baseUrl}}/zoqq/api/v1/account
Description
Creates a new global account with specified currency and transfer capabilities. This API enables the creation of a new account for a user within the system. It establishes a global account for the authenticated user in the specified currency and supports multiple transfer methods — such as Local and Swift — allowing both domestic and international transactions.
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Shared X-API key provided by Zoqq |
| x-product-id | string | Yes | Shared ProductID By Zoqq |
| x-request-id | string | Yes | Idempotency key for request tracking |
| x-user-id | string | Yes | User identification key |
| Authorization | string | Yes | Bearer token |
| Content-Type | string | Yes | Must be application/json |
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | Yes | Account type ("virtual_account") |
| country | string | Yes | ISO country code (e.g., "US") |
| currency | string | Yes | Currency code (e.g., "USD") |
| label | string | No | Human-readable account label |
| required_features | array | Yes | Array of required transfer capabilities |
| required_features[].currency | string | Yes | Currency for the feature |
| required_features[].transfer_method | string | Yes | "LOCAL" or "SWIFT" |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code |
| status | string | "success" or "error" |
| message | string | Result description |
| data | array | Created account(s) |
| data[].id | string | Account UUID |
| data[].status | string | "INACTIVE", "ACTIVE", etc. |
| data[].account_number | string | Account identifier |
| data[].account_type | string | Type of account |
| data[].swift_code | string | SWIFT/BIC code |
| data[].supported_features | array | Available transfer methods |
Request Example
- cURL
- Python
- Java
- php
- C#
curl --location --request POST \
--url '{{baseUrl}}/zoqq/api/v1/account' \
--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 '{
"type": "virtual_account",
"country": "SG",
"currency": "SGD",
"label": "New Virtual Account",
"required_features": [
{
"currency": "SGD",
"transfer_method": "LOCAL"
}
]
}'
import requests
import json
url = "{{baseUrl}}/zoqq/api/v1/account"
payload = json.dumps({
"type": "virtual_account",
"country": "SG",
"currency": "SG",
"label": "New Virtual Account",
"required_features": [
{
"currency": "SGD",
"transfer_method": "LOCAL"
}
]
})
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, "{\n \"type\": \"virtual_account\",\n \"country\": \"SG\",\n \"currency\": \"SG\",\n \"label\": \"New Virtual Account\",\n \n \"required_features\": [\n {\n \"currency\": \"SGD\",\n \"transfer_method\": \"LOCAL\"\n }\n ]\n}");
Request request = new Request.Builder()
.url("{{baseUrl}}/zoqq/api/v1/account")
.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();
<?php
$client = new Client();
$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}}'
];
$body = '{
"type": "virtual_account",
"country": "SG",
"currency": "SGD",
"label": "New Virtual Account",
"required_features": [
{
"currency": "SGD",
"transfer_method": "LOCAL"
}
]
}';
$request = new Request('POST', '{{baseUrl}}/zoqq/api/v1/account', $headers, $body);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "{{baseUrl}}/zoqq/api/v1/account");
request.Headers.Add("x-api-key", "{{Shared X-API key By Zoqq}}");
request.Headers.Add("x-product-id", "{{Shared ProductID By Zoqq}}");
request.Headers.Add("x-request-id", "{{IdempotencyKey}}");
request.Headers.Add("x-user-id", "{{UserID}}");
request.Headers.Add("Authorization", "Bearer {{AccessToken}}");
var content = new StringContent("{\n \"type\": \"virtual_account\",\n \"country\": \"SG\",\n \"currency\": \"SG\",\n \"label\": \"New Virtual Account\",\n \n \"required_features\": [\n {\n \"currency\": \"SGD\",\n \"transfer_method\": \"LOCAL\"\n }\n ]\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Response Example
- 200: Created
- 400: Error
{
"status": "success",
"message": "virtual_account created successfully",
"code": 200,
"data": [
{
"id": "account-id",
"status": "ACTIVE",
"account_number": "12345",
"account_holder_name": "Demo",
"label": "New Virtual Account",
"account_type": "Current",
"country_code": "SG",
"institution": {
"address": "12 Marina Boulevard, DBS Asia Central, Marina Bay Financial Centre Tower 3",
"city": "Singapore",
"name": "DBS Bank Ltd",
"zip_code": "018982"
},
"supported_features": [
{
"currency": "SGD",
"local_clearing_system": "FAST",
"transfer_method": "LOCAL",
"type": "DEPOSIT",
"routing_codes": [
{
"type": "bank_code",
"value": "7171"
},
{
"type": "branch_code",
"value": "072"
}
]
},
{
"currency": "SGD",
"local_clearing_system": "RTGS",
"transfer_method": "LOCAL",
"type": "DEPOSIT",
"routing_codes": [
{
"type": "bank_code",
"value": "7171"
},
{
"type": "branch_code",
"value": "072"
}
]
},
{
"currency": "SGD",
"local_clearing_system": "GIRO",
"transfer_method": "LOCAL",
"type": "DEPOSIT",
"routing_codes": [
{
"type": "bank_code",
"value": "7171"
},
{
"type": "branch_code",
"value": "072"
}
]
},
{
"currency": "SGD",
"local_clearing_system": null,
"transfer_method": "SWIFT",
"type": "DEPOSIT",
"routing_codes": [
{
"type": "bank_code",
"value": "7171"
},
{
"type": "branch_code",
"value": "072"
},
{
"type": "swift",
"value": "swift-code"
}
]
}
],
"required_features": [
{
"transfer_method": "LOCAL",
"currency": "SGD"
}
],
"swift_code": "swift-code",
"iban": null
}
]
}
{
"code": 400,
"status": "error",
"message": "Something went wrong"
}
Get Account​
This API allows you to retrieve all accounts associated with a user in the system.
- Endpoint
GET {{baseUrl}}/zoqq/api/v1/account
Description
Returns a list of all accounts (both active and inactive) for the authenticated user, including account details, institution information, and supported transfer features.
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Shared X-API key provided by Zoqq |
| x-product-id | string | Yes | Shared ProductID By Zoqq |
| x-request-id | string | Yes | Idempotency key (UUID recommended) |
| x-user-id | string | Yes | Unique user identifier |
| Authorization | string | Yes | Bearer token |
| Content-Type | string | Yes | Must be application/json |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | No | Filter by specific account ID |
| currency | string | No | Filter by currency (e.g., "USD") |
| status | string | No | Filter by status ("ACTIVE", "INACTIVE") |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code |
| status | string | "success" or "error" |
| message | string | Result description |
| data | array | List of account objects |
| data[].id | string | Account UUID |
| data[].status | string | Account status |
| data[].account_number | string | Bank account number |
| data[].account_type | string | Type of account |
| data[].institution | object | Bank institution details |
| data[].supported_features | array | Available transfer methods |
Request Example
- cURL
- Python
- Java
- php
- C#
curl --location --request GET \
--url '{{baseUrl}}/zoqq/api/v1/account?status=ACTIVE' \
--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/account?status=ACTIVE"
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)
print(response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetAccount {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("{{baseUrl}}/zoqq/api/v1/account?status=ACTIVE"))
.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}}")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = '{{baseUrl}}/zoqq/api/v1/account?status=ACTIVE';
$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}}'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("{{baseUrl}}/zoqq/api/v1/account?status=ACTIVE"),
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}}" }
}
};
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
Response Example
- 200: Success
- 400: Error
{
"code": 200,
"status": "success",
"message": "",
"data": [
{
"id": "account-id",
"status": "ACTIVE",
"account_number": "12345",
"label": "",
"account_type": "Checking",
"country_code": "US",
"institution": {
"address": "89-16 Jamaica Ave",
"city": "Woodhaven, NY",
"name": "Community Federal Savings Bank",
"zip_code": "11421"
},
"supported_features": [
{
"currency": "USD",
"local_clearing_system": "ACH",
"routing_codes": [
{
"type": "ach",
"value": "026073150"
}
],
"transfer_method": "LOCAL",
"type": "DEPOSIT"
},
{
"currency": "USD",
"local_clearing_system": "FEDWIRE",
"routing_codes": [
{
"type": "fedwire",
"value": "026073008"
}
],
"transfer_method": "LOCAL",
"type": "DEPOSIT"
},
{
"currency": "USD",
"routing_codes": [
{
"type": "swift",
"value": "swift-code"
}
],
"transfer_method": "SWIFT",
"type": "DEPOSIT"
}
]
}
]
}
{
"code": 400,
"status": "Error",
"message": "Something went wrong"
}
Update Account​
This API allows you to update an existing account's details in the system.
- Endpoint
PATCH {{baseUrl}}/zoqq/api/v1/account
Description
Updates an existing account's information such as label. This API enables modifications to an account's metadata while preserving its core identifiers and features.
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Shared X-API key provided by Zoqq |
| x-product-id | string | Yes | Shared ProductID By Zoqq |
| x-request-id | string | Yes | Idempotency key for request tracking |
| x-user-id | string | Yes | User identification key |
| x-account-id | string | Yes | User Account ID |
| Authorization | string | Yes | Bearer token |
| Content-Type | string | Yes | Must be application/json |
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | Yes | Account type ("virtual_account") |
| country | string | Yes | ISO country code (e.g., "US") |
| currency | string | Yes | Currency code (e.g., "USD") |
| label | string | No | Human-readable account label |
| required_features | array | Yes | Array of required transfer capabilities |
| required_features[].currency | string | Yes | Currency for the feature |
| required_features[].transfer_method | string | Yes | "LOCAL" or "SWIFT" |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code |
| status | string | "success" or "error" |
| message | string | Result description |
| data | array | Created account(s) |
| data[].id | string | Account UUID |
| data[].status | string | "INACTIVE", "ACTIVE", etc. |
| data[].account_number | string | Account identifier |
| data[].account_type | string | Type of account |
| data[].swift_code | string | SWIFT/BIC code |
| data[].supported_features | array | Available transfer methods |
Request Example
- cURL
- Python
- Java
- php
- C#
curl --location --request PATCH \
--url '{{baseUrl}}/zoqq/api/v1/account' \
--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 'x-account-id: {{AccountID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"label": "SomeChangesForUpdate"
}'
import requests
import json
url = "{{baseUrl}}/zoqq/api/v1/account"
payload = json.dumps({
"label": "SomeChangesForUpdate"
})
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}}',
'x-account-id': '{{AccountID}}',
'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, "{\n \n \"label\": \"SomeChangesForUpdate\"\n}");
Request request = new Request.Builder()
.url("{{baseUrl}}/zoqq/api/v1/account")
.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("x-account-id", "{{AccountID}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
<?php
$client = new Client();
$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}}',
'x-account-id' => '{{AccountID}}',
'Content-Type' => 'application/json',
'Authorization' => 'Bearer {{AccessToken}}'
];
$body = '{
"label": "SomeChangesForUpdate"
}';
$request = new Request('PATCH', '{{baseUrl}}/zoqq/api/v1/account', $headers, $body);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Patch, "{{baseUrl}}/zoqq/api/v1/account");
request.Headers.Add("x-api-key", "{{Shared X-API key By Zoqq}}");
request.Headers.Add("x-product-id", "{{Shared ProductID By Zoqq}}");
request.Headers.Add("x-request-id", "{{IdempotencyKey}}");
request.Headers.Add("x-user-id", "{{UserID}}");
request.Headers.Add("x-account-id", "{{AccountID}}");
request.Headers.Add("Authorization", "Bearer {{AccessToken}}");
var content = new StringContent("{\n \n \"label\": \"SomeChangesForUpdate\"\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Response Example
- 200: Created
- 400: Error
{
"status": "success",
"message": "virtual_account updated successfully",
"code": 200,
"data": [
{
"id": "account-id",
"status": "CLOSED",
"account_number": "12345",
"account_holder_name": "AWX Test One",
"label": "SomeChangesForUpdate",
"account_type": "Current",
"country_code": "HK",
"institution": {
"address": "18th Floor, The Center, 99 Queen’s Road Central, Central",
"city": "Hong Kong SAR",
"name": "DBS Bank (Hong Kong) Limited",
"zip_code": null
},
"supported_features": [
{
"currency": "USD",
"local_clearing_system": "RTGS",
"transfer_method": "LOCAL",
"type": "DEPOSIT",
"routing_codes": [
{
"type": "bank_code",
"value": "016"
},
{
"type": "branch_code",
"value": "478"
}
]
},
{
"currency": "USD",
"local_clearing_system": null,
"transfer_method": "SWIFT",
"type": "DEPOSIT",
"routing_codes": [
{
"type": "bank_code",
"value": "016"
},
{
"type": "branch_code",
"value": "478"
},
{
"type": "swift",
"value": "swift-code"
}
]
},
{
"currency": "AUD",
"local_clearing_system": null,
"transfer_method": "SWIFT",
"type": "DEPOSIT",
"routing_codes": [
{
"type": "bank_code",
"value": "016"
},
{
"type": "branch_code",
"value": "478"
},
{
"type": "swift",
"value": "swift-code"
}
]
},
{
"currency": "SGD",
"local_clearing_system": null,
"transfer_method": "SWIFT",
"type": "DEPOSIT",
"routing_codes": [
{
"type": "bank_code",
"value": "016"
},
{
"type": "branch_code",
"value": "478"
},
{
"type": "swift",
"value": "swift-code"
}
]
}
],
"required_features": [
{
"transfer_method": "LOCAL",
"currency": "USD"
}
],
"swift_code": "swift-code",
"iban": null
}
]
}
{
"code": 400,
"status": "error",
"message": "Something went wrong"
}
Close Account​
This API allows you to permanently delete an account from the system.
- Endpoint
DELETE {{baseUrl}}/zoqq/api/v1/account
Description
Permanently deletes a specified account from the system. This action is irreversible and will remove all account data including transaction history and associated features.
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Shared X-API key provided by Zoqq |
| x-product-id | string | Yes | Shared ProductID By Zoqq |
| x-request-id | string | Yes | Idempotency key (UUID recommended) |
| x-user-id | string | Yes | Unique user identifier |
| x-account-id | string | Yes | User Account ID |
| Authorization | string | Yes | Bearer token |
| Content-Type | string | Yes | Must be application/json |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code |
| status | string | "success" or "error" |
| message | string | Result description |
| data | array | List of account objects |
| data[].id | string | Account UUID |
| data[].status | string | Account status |
| data[].account_number | string | Bank account number |
| data[].account_type | string | Type of account |
| data[].institution | object | Bank institution details |
| data[].supported_features | array | Available transfer methods |
Request Example
- cURL
- Python
- Java
- php
- C#
curl --location --request DELETE \
--url '{{baseUrl}}/zoqq/api/v1/account' \
--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 'x-account-id: {{AccountID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'
import requests
url = "{{baseUrl}}/zoqq/api/v1/account"
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}}',
'x-account-id': '{{AccountID}}',
'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("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{{baseUrl}}/zoqq/api/v1/account")
.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("x-account-id", "{{AccountID}}")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{AccessToken}}")
.build();
Response response = client.newCall(request).execute();
<?php
$client = new Client();
$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}}',
'x-account-id' => '{{AccountID}}',
'Content-Type' => 'application/json',
'Authorization' => 'Bearer {{AccessToken}}'
];
$request = new Request('DELETE', '{{baseUrl}}/zoqq/api/v1/account', $headers);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Delete, "{{baseUrl}}/zoqq/api/v1/account");
request.Headers.Add("x-api-key", "{{Shared X-API key By Zoqq}}");
request.Headers.Add("x-product-id", "{{Shared ProductID By Zoqq}}");
request.Headers.Add("x-request-id", "{{IdempotencyKey}}");
request.Headers.Add("x-user-id", "{{UserID}}");
request.Headers.Add("x-account-id", "{{AccountID}}");
request.Headers.Add("Content-Type", "application/json");
request.Headers.Add("Authorization", "Bearer {{AccessToken}}");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Response Example
- 200: Success
- 400: Error
{
"status": "success",
"message": "virtual_account closed successfully",
"code": 200,
"data": null
}
{
"code": 400,
"status": "Error",
"message": "Something went wrong"
}
Get Balance​
This API allows you to retrieve the available, pending, and reserved balances for all currencies associated with an account.
- Endpoint
GET {{baseUrl}}/zoqq/api/v1/account/balance
Description
This endpoint retrieves the current balance information for all currencies associated with the authenticated user's account. The response includes available balance, pending amounts, and reserved amounts for each currency.
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Shared X-API key provided by Zoqq |
| x-product-id | string | Yes | Shared ProductID By Zoqq |
| x-request-id | string | Yes | Idempotency key (UUID recommended) |
| x-user-id | string | Yes | Unique user identifier |
| Authorization | string | Yes | Bearer token |
| Content-Type | string | Yes | Must be application/json |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code |
| status | string | "success" or "error" |
| message | string | Result description |
| data | array | List of balance objects by currency |
| data[].currency | string | ISO currency code (e.g., "USD", "SGD") |
| data[].available_balance | number | Immediately usable funds |
| data[].pending_amount | number | Funds in pending transactions |
| data[].reserved_amount | number | Funds held for reservations |
Request Example
- cURL
- Python
- Java
- php
- C#
curl --location --request GET \
--url '{{baseUrl}}/zoqq/api/v1/account/balance' \
--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/account/balance"
params = {"currency": "SGD"}
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())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetBalance {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("{{baseUrl}}/zoqq/api/v1/account/balance"))
.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}}")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = '{{baseUrl}}/zoqq/api/v1/account/balance';
$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}}'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("{{baseUrl}}/zoqq/api/v1/account/balance"),
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}}" }
}
};
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
Response Example
- 200: Success
- 400: Error
{
"code": 200,
"status": "success",
"message": "",
"data": [
{
"currency": "SGD",
"available_balance": 42.72,
"pending_amount": 0,
"reserved_amount": 12
},
{
"currency": "USD",
"available_balance": 22.72,
"pending_amount": 5,
"reserved_amount": 10
}
]
}
{
"code": 400,
"status": "error",
"message": "Get balance failed!"
}
Get Account Transactions​
This API returns paginated transaction history with filters for date range and transaction status. Includes detailed information about each transaction including amount, currency, and status..
- Endpoint
GET {{baseUrl}}/zoqq/api/v1/account/transactions
Description
This endpoint returns a paginated list of transactions for the user's account. Transactions can be filtered by date range, type, status, and other criteria.
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Shared X-API key provided by Zoqq |
| x-product-id | string | Yes | Shared ProductID By Zoqq |
| x-request-id | string | Yes | Idempotency key (UUID recommended) |
| x-user-id | string | Yes | Unique user identifier |
| x-account-id | string | Yes | Global account identifier |
| Authorization | string | Yes | Bearer token |
| Content-Type | string | Yes | Must be application/json |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | integer | No | Page number for pagination (default: 1) |
| size | integer | No | Number of items per page (default: 20) |
| from_date | string | No | Start date filter (ISO 8601 format) |
| to_date | string | No | End date filter (ISO 8601 format) |
| currency | string | No | Filter by currency code (e.g., "USD") |
| status | string | No | Filter by status ("SETTLED", "PENDING", etc.) |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code |
| status | string | "success" or "error" |
| message | string | Result description |
| data | array | List of transaction objects |
| data[].id | string | Unique transaction identifier |
| data[].amount | number | Transaction amount |
| data[].currency | string | Currency code |
| data[].type | string | "CREDIT" or "DEBIT" |
| data[].status | string | Transaction status |
| data[].create_time | string | ISO 8601 timestamp |
| data[].description | string | Transaction description |
Request Example
- cURL
- Python
- Java
- php
- C#
curl --location --request GET \
--url '{{baseUrl}}/zoqq/api/v1/account/transactions?page=1&size=10&from_date=2025-01-01&to_date=2025-04-30' \
--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 'x-account-id: {{GlobalAccountID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'
import requests
url = "{{baseUrl}}/zoqq/api/v1/account/transactions"
params = {
"page": 1,
"size": 20,
"from_date": "2023-01-01",
"to_date": "2023-12-31"
}
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}}",
"x-account-id": "{{GlobalAccountID}}",
"Content-Type": "application/json",
"Authorization": "Bearer {{AccessToken}}"
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetTransactions {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("{{baseUrl}}/zoqq/api/v1/account/transactions?page=1&size=10"))
.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("x-account-id", "{{GlobalAccountID}}")
.header("Content-Type", "application/json")
.header("Authorization", "Bearer {{AccessToken}}")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = '{{baseUrl}}/zoqq/api/v1/account/transactions?page=1&size=10';
$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}}',
'x-account-id: {{GlobalAccountID}}',
'Content-Type: application/json',
'Authorization: Bearer {{AccessToken}}'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("{{baseUrl}}/zoqq/api/v1/account/transactions?page=1&size=10"),
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}}" },
{ "x-account-id", "{{GlobalAccountID}}" },
{ "Content-Type", "application/json" },
{ "Authorization", "Bearer {{AccessToken}}" }
}
};
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
Response Example
- 200: Success
- 400: Error
{
"status": "success",
"message": "virtual_accounts transactions details",
"code": 200,
"data": [
{
"amount": 1000.0,
"create_time": "2025-04-09T10:12:37+0000",
"description": "Test from Postman",
"currency": "USD",
"id": "",
"type": "CREDIT",
"status": "SETTLED"
}
]
}
{
"code": 400,
"status": "error",
"message": "Get Account Transaction failed!"
}
Get Balance History​
This API returns paginated balance history with filters for date range. Includes detailed information about each balance change including amount, currency, and transaction type.
- Endpoint
GET {{baseUrl}}/zoqq/api/v1/account/balance/history
Description
This endpoint returns a paginated list of balance changes for the user's account. Results can be filtered by date range and include detailed information about each transaction affecting the balance.
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Shared X-API key provided by Zoqq |
| x-product-id | string | Yes | Shared ProductID By Zoqq |
| x-request-id | string | Yes | Idempotency key (UUID recommended) |
| x-user-id | string | Yes | Unique user identifier |
| Authorization | string | Yes | Bearer token |
| Content-Type | string | Yes | Must be application/json |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | integer | No | Page number for pagination (default: 1) |
| size | integer | No | Number of items per page (default: 20) |
| from_date | string | No | Start date filter (ISO 8601 format) |
| to_date | string | No | End date filter (ISO 8601 format) |
| currency | string | No | Filter by currency code (e.g., "USD") |
| transaction_type | string | No | Filter by transaction type ("DEPOSIT", "PAYOUT", etc.) |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code |
| status | string | "success" or "error" |
| message | string | Result description |
| data | array | List of balance history objects |
| data[].id | string | Unique transaction identifier |
| data[].amount | number | Transaction amount (positive for credit, negative for debit) |
| data[].currency | string | Currency code |
| data[].balance | number | Account balance after transaction |
| data[].description | string | Transaction description |
| data[].fee | number | Fee amount (if applicable) |
| data[].create_time | string | ISO 8601 timestamp |
| data[].source_type | string | Source of transaction ("DEPOSIT", "PAYOUT", etc.) |
| data[].transaction_type | string | Detailed transaction type ("CONVERSION_BUY", "HOLD", etc.) |
Request Example
- cURL
- Python
- Java
- php
- C#
curl --location --request GET \
--url '{{baseUrl}}/zoqq/api/v1/account/balance/history?page=1&size=10&from_date=2025-04-01&to_date=2025-04-07' \
--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/account/balance/history"
params = {
"page": 1,
"size": 20,
"from_date": "2025-04-01",
"to_date": "2025-04-07"
}
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())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetBalanceHistory {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("{{baseUrl}}/zoqq/api/v1/account/balance/history?page=1&size=10"))
.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}}")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = '{{baseUrl}}/zoqq/api/v1/account/balance/history?page=1&size=10';
$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}}'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("{{baseUrl}}/zoqq/api/v1/account/balance/history?page=1&size=10"),
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}}" }
}
};
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
Response Example
- 200: Success
- 400: Error
{
"status": "success",
"message": "balance history details",
"code": 200,
"data": [
{
"id": "",
"amount": -1.0,
"currency": "SGD",
"balance": 8919.86,
"description": "Pay SGD 1.00 to (Individual Local SG)",
"fee": 0.0,
"create_time": "2025-05-07T12:13:24+0800",
"source_type": "PAYOUT",
"transaction_type": "PAYOUT"
},
{
"id": "",
"amount": 12.86,
"currency": "SGD",
"balance": 8920.86,
"description": "Buy SGD 12.86",
"fee": 0.0,
"create_time": "2025-05-07T11:28:39+0800",
"source_type": "CONVERSION",
"transaction_type": "CONVERSION_BUY"
},
{
"id": "",
"amount": 60000.0,
"currency": "DKK",
"balance": 60000.0,
"description": "Test from Postman - GA (First DKK)",
"fee": 0.0,
"create_time": "2025-04-30T19:38:41+0800",
"source_type": "DEPOSIT",
"transaction_type": "DEPOSIT"
}
]
}
{
"code": 400,
"status": "error",
"message": "Get Balance History failed!"
}