List KYB
curl --request GET \
--url https://pay-api.holdstation.com/partners/kyb \
--header 'Partner-App-Key: <partner-app-key>' \
--header 'X-HSPay-Signature: <x-hspay-signature>' \
--header 'X-HSPay-Timestamp: <x-hspay-timestamp>'import requests
url = "https://pay-api.holdstation.com/partners/kyb"
headers = {
"Partner-App-Key": "<partner-app-key>",
"X-HSPay-Signature": "<x-hspay-signature>",
"X-HSPay-Timestamp": "<x-hspay-timestamp>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'Partner-App-Key': '<partner-app-key>',
'X-HSPay-Signature': '<x-hspay-signature>',
'X-HSPay-Timestamp': '<x-hspay-timestamp>'
}
};
fetch('https://pay-api.holdstation.com/partners/kyb', 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://pay-api.holdstation.com/partners/kyb",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Partner-App-Key: <partner-app-key>",
"X-HSPay-Signature: <x-hspay-signature>",
"X-HSPay-Timestamp: <x-hspay-timestamp>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://pay-api.holdstation.com/partners/kyb"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Partner-App-Key", "<partner-app-key>")
req.Header.Add("X-HSPay-Signature", "<x-hspay-signature>")
req.Header.Add("X-HSPay-Timestamp", "<x-hspay-timestamp>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://pay-api.holdstation.com/partners/kyb")
.header("Partner-App-Key", "<partner-app-key>")
.header("X-HSPay-Signature", "<x-hspay-signature>")
.header("X-HSPay-Timestamp", "<x-hspay-timestamp>")
.asString();require 'uri'
require 'net/http'
url = URI("https://pay-api.holdstation.com/partners/kyb")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Partner-App-Key"] = '<partner-app-key>'
request["X-HSPay-Signature"] = '<x-hspay-signature>'
request["X-HSPay-Timestamp"] = '<x-hspay-timestamp>'
response = http.request(request)
puts response.read_body{
"message": "success",
"data": {
"success": true,
"kybs": [
{
"id": "7c2f1a90-4d3b-4e2a-9f61-0b8c5d7e1234",
"partner_id": "11111111-1111-1111-1111-111111111111",
"subject_type": 2,
"reference_id": "merchant-00042",
"status": 2,
"legal_name": "ABC Trading Co., Ltd",
"registration_number": "0312345678",
"incorporation_country": "VN",
"incorporation_date": "2019-03-14",
"rejection_reason": "",
"submitted_at": "2026-08-15T04:12:33Z",
"reviewed_at": "2026-08-16T09:41:02Z"
}
],
"total_count": 1,
"page": 1,
"page_size": 20
}
}
{
"error": "invalid request",
"error_code": "BAD_REQUEST",
"message": "Invalid parameters"
}
{
"error": "unauthorized",
"error_code": "UNAUTHORIZED",
"message": "Invalid or missing signature"
}
Partner Business KYB
List KYB
List your business verification records, newest first.
GET
/
partners
/
kyb
List KYB
curl --request GET \
--url https://pay-api.holdstation.com/partners/kyb \
--header 'Partner-App-Key: <partner-app-key>' \
--header 'X-HSPay-Signature: <x-hspay-signature>' \
--header 'X-HSPay-Timestamp: <x-hspay-timestamp>'import requests
url = "https://pay-api.holdstation.com/partners/kyb"
headers = {
"Partner-App-Key": "<partner-app-key>",
"X-HSPay-Signature": "<x-hspay-signature>",
"X-HSPay-Timestamp": "<x-hspay-timestamp>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'Partner-App-Key': '<partner-app-key>',
'X-HSPay-Signature': '<x-hspay-signature>',
'X-HSPay-Timestamp': '<x-hspay-timestamp>'
}
};
fetch('https://pay-api.holdstation.com/partners/kyb', 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://pay-api.holdstation.com/partners/kyb",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Partner-App-Key: <partner-app-key>",
"X-HSPay-Signature: <x-hspay-signature>",
"X-HSPay-Timestamp: <x-hspay-timestamp>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://pay-api.holdstation.com/partners/kyb"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Partner-App-Key", "<partner-app-key>")
req.Header.Add("X-HSPay-Signature", "<x-hspay-signature>")
req.Header.Add("X-HSPay-Timestamp", "<x-hspay-timestamp>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://pay-api.holdstation.com/partners/kyb")
.header("Partner-App-Key", "<partner-app-key>")
.header("X-HSPay-Signature", "<x-hspay-signature>")
.header("X-HSPay-Timestamp", "<x-hspay-timestamp>")
.asString();require 'uri'
require 'net/http'
url = URI("https://pay-api.holdstation.com/partners/kyb")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Partner-App-Key"] = '<partner-app-key>'
request["X-HSPay-Signature"] = '<x-hspay-signature>'
request["X-HSPay-Timestamp"] = '<x-hspay-timestamp>'
response = http.request(request)
puts response.read_body{
"message": "success",
"data": {
"success": true,
"kybs": [
{
"id": "7c2f1a90-4d3b-4e2a-9f61-0b8c5d7e1234",
"partner_id": "11111111-1111-1111-1111-111111111111",
"subject_type": 2,
"reference_id": "merchant-00042",
"status": 2,
"legal_name": "ABC Trading Co., Ltd",
"registration_number": "0312345678",
"incorporation_country": "VN",
"incorporation_date": "2019-03-14",
"rejection_reason": "",
"submitted_at": "2026-08-15T04:12:33Z",
"reviewed_at": "2026-08-16T09:41:02Z"
}
],
"total_count": 1,
"page": 1,
"page_size": 20
}
}
{
"error": "invalid request",
"error_code": "BAD_REQUEST",
"message": "Invalid parameters"
}
{
"error": "unauthorized",
"error_code": "UNAUTHORIZED",
"message": "Invalid or missing signature"
}
Lists the partner’s own KYB records, newest first. Use
reference_id to check whether a merchant has already been filed and to recover its id.
See the Partner Business KYB guide for the lifecycle.
Authentication
string
required
Your partner app key.
string
required
Base64-encoded Ed25519 signature of the sign data.
string
required
Unix timestamp (seconds) of the request. Must be within 60 seconds of server time.
Query Parameters
string
Exact match on your own id for the subject.
integer
1 = partner (self), 2 = sub-merchant.integer
1 = Pending, 2 = Approved, 3 = Rejected.integer
Page number. Defaults to
1.integer
Results per page. Defaults to
20, capped at 100.{
"message": "success",
"data": {
"success": true,
"kybs": [
{
"id": "7c2f1a90-4d3b-4e2a-9f61-0b8c5d7e1234",
"partner_id": "11111111-1111-1111-1111-111111111111",
"subject_type": 2,
"reference_id": "merchant-00042",
"status": 2,
"legal_name": "ABC Trading Co., Ltd",
"registration_number": "0312345678",
"incorporation_country": "VN",
"incorporation_date": "2019-03-14",
"rejection_reason": "",
"submitted_at": "2026-08-15T04:12:33Z",
"reviewed_at": "2026-08-16T09:41:02Z"
}
],
"total_count": 1,
"page": 1,
"page_size": 20
}
}
{
"error": "invalid request",
"error_code": "BAD_REQUEST",
"message": "Invalid parameters"
}
{
"error": "unauthorized",
"error_code": "UNAUTHORIZED",
"message": "Invalid or missing signature"
}
Each entry has the same shape as the Get KYB record, including
persons[] and documents[]. The example above is abbreviated.