The following details the required parameters for the Customer Onboarding v5 request, along with validation rules and
sample requests.
Use this request to create customers to onboard in the HK region. The endpoint accepts both individual and corporate
customers.
For API reference,
see Create Customer v5.
Create Customer v5
POST /api/v5/client/{clientHashId}/customers
Path parameters
| Parameter | Type | Required | Description |
|---|
clientHashId | string | Yes | Unique client identifier, generated and shared before the integration is set up. |
Body Parameters
| Parameter | Type | Required | Accepted Values / Notes |
|---|
type | string | Yes | individual or corporate. |
kycType | string | Yes | minimum or full. Use full when onboarding for payouts. |
region | string | Yes | Use HK. |
externalId | string | Optional | Client-defined unique ID (max 36). Returned in webhooks and GET APIs. |
Individual Customers
| Field | Type | Required | Notes |
|---|
firstName | string | Yes | Max 40. |
middleName | string | Optional | Max 40. |
lastName | string | Yes | Max 40. |
email | string | Yes | Max 60; must match the valid email regex. |
nationality | enum | Yes | Category: countryName. |
mobile | numeric | Yes | Without country code; max 15 digits. |
mobileCountryCode | numeric | Yes | Max 6 digits. |
dateOfBirth | date | Yes | YYYY-MM-DD; age ≥ 18. |
billingAddress Object
| Field | Type | Required | Notes |
|---|
addressLine1 | string | Yes | Max 100. |
addressLine2 | string | Optional | Max 100. |
city | string | Yes | Max 50. |
state | enum/string | Conditional | category=isoState for countryCode=xx (e.g., HK, IN). If enum list is empty, pass state manually (max 50 chars). |
postcode | string | Yes | Max 10. |
country | enum | Yes | Category: countryName. |
expectedAccountUsage Object
| Field | Required | Notes |
|---|
credit.monthlyTransactionVolume | Yes | Category: monthlyTransactionVolume. |
credit.topTransactionCountries | Yes | Category: countryName. |
debit.monthlyTransactionVolume | Yes | Category: monthlyTransactionVolume. |
debit.topTransactionCountries | Yes | Destination countries for payouts. |
intendedUses | Yes | Category: intendedUseOfAccount. |
intendedUsesDescription | Conditional | Required if Other is selected. Max 300 chars. |
Corporate Customers (Full KYC)
| Field | Type | Required | Notes |
|---|
businessType | enum | Yes | Category: businessType. |
businessName | string | Yes | Max 80. |
tradeName | string | Yes | If not available, set equal to businessName. |
businessRegistrationNumber | string | Yes | Max 30. |
registeredDate | date | Yes | YYYY-MM-DD; past date. |
registeredCountry | enum | Yes | Category: countryName. |
website | string | Optional | website or verified social profile; else upload PROOF_OF_BUSINESS. |
isMultiLayeredCompany | boolean | Yes | true/false. If true upload CORPORATE_STRUCTURE |
addresses Object
| Field | Type | Required | Notes |
|---|
registeredAddress.addressLine1 | string | Yes | Max 100. |
registeredAddress.addressLine2 | string | Optional | Max 100. |
registeredAddress.city | string | Yes | Max 50. |
registeredAddress.state | enum/string | Conditional | category=isoState for countryCode=xx (e.g., US, CA). If enum list is empty, pass state manually (max 50 chars). |
registeredAddress.postcode | string | Yes | Max 10. |
registeredAddress.country | enum | Yes | Category: countryName. |
isBusinessAddressSameAsRegisteredAddress | boolean | Yes | If false, provide businessAddress details |
documents (array of object)
Provide business documents
| Field | Type | Required | Notes |
|---|
type | enum | Yes | category: documentType Check Required Documents |
fileIds | uuid | Yes | Received from the response of Upload file API |
applicant object
| Field | Type | Required | Notes |
|---|
externalId | string | Optional | referenceId to identify the applicant. |
firstName | string | Yes | Max 40 each. |
lastName | string | Yes | Max 40 each. |
dateOfBirth | date | Yes | Past date; age ≥ 18. |
email | string | Yes | Max 60; valid email. |
mobile | numeric | Yes | 15 digit limits. |
mobileCountryCode | numeric | Yes | 1–3 digits |
nationality | string | Yes | Max 2 char. |
sharePercentage | numeric | Optional | Required only if position title is UBO/SHAREHOLDER. |
positions.title | array of object | Yes | Include DIRECTOR, REPRESENTATIVE, UBO as applicable. |
documents | array of object | Conditional | LOA required if applicant is not a UBO/ DIRECTOR/ PARTNER. |
address | object | Yes | address of the applicant |
Stakeholders
Stakeholders can be individuals or corporates with position such as UBO, Director, Partner, *
Trustee*, Shareholder.
stakeholders.individual object
| Field | Type | Required | Notes |
|---|
externalId | string | Optional | referenceId to identify the applicant. |
firstName | string | Yes | Max 40 each. |
lastName | string | Yes | Max 40 each. |
dateOfBirth | date | Yes | Past date; age ≥ 18. |
email | string | Optional | Max 60; valid email. |
mobile | numeric | Optional | 15 digit limits. |
mobileCountryCode | numeric | Optional | 1–3 digits |
nationality | string | Yes | Max 2 char. |
sharePercentage | numeric | Optional | Required only if position title is UBO/SHAREHOLDER. |
positions.title | array of object | Yes | Include DIRECTOR, REPRESENTATIVE, UBO as applicable. |
address | object | Yes | address of the applicant |
stakeholders.corporate object