Get Token
Get Bearer Token. Do remember to pass in the Bearer Token in the API request header
URL: https://{DOMAIN}/api/getToken
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
string |
body |
Required |
Login email | |
| password | string |
body |
Required |
Login password |
Response
{
"bearer_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjM4NDBmNWExYWU1NjNlMzY5OWQ1NTg4MDYwOTBjYTIyNmZmZjc3N2EzNjI3MGNkNzk2ODQ3YmNjYzU3MDFlOGIwNmU5MGUwMmFkOWJhMzZlIn0.eyJhdWQiOiIxIiwianRpIjoiMzg0MGY1YTFhZTU2M2UzNjk5ZDU1ODgwNjA5MGNhMjI2ZmZmNzc3YTM2MjcwY2Q3OTY4NDdiY2NjNTcwMWU4YjA2ZTkwZTAyYWQ5YmEzNmUiLCJpYXQiOjE3MjM4MDE2MDMsIm5iZiI6MTcyMzgwMTYwMywiZXhwIjoxNzU1MzM3NjAzLCJzdWIiOiI4Iiwic2NvcGVzIjpbXX0.dLr5bgggx0P5f1tfwn-BUiBMZHov9Co-6QpOD_J3r_mx5nu54ykBw3td_bZjEojqEvQ83YsbPi1cSwgZ04BE0OzMW_yqn0HKFraJ6ZUI2eiuFQksdvU9p6f8hrVatIFapiYF6wjE-qR3pNVby9cufO02t3MAZHY8xHjH2P_JsTLQ3fRmG0iNS6zXvfOp27A2ns9yLQEuydd7p2qaac67LyWC_XwHAOH4Gr3JAA61YCX6Z-gW8NnKYL4iI_jXH5-bNoYMQjcgNuAdv-7zfGBQEmEhpeHrEIyzpVAIEwtJtHYRVNKu-P0e6Fms_hmhr2DPKiHzNUiIL_uS3kXeO9IaMaPiYeXhC9elnn_Av_9tSUDgO2LZEsU4QcKP0E1D506OF5A4oqy5No-0QpR4yI78hCE4C4kREQKvbcPSfd1nU8SsfH8HVp7i-b-kXooc-a11yn69ZZ8O0THSbMbTYabdSuE0KusF2fqAu691v6Dw-7fr30eA2y1ai5YAVRBMoj5m03mjuxHkdfYcaOu8tP8laLchaqPo8rYHxDKuzklBPMTbDx3WvvkZ08gD52WwE3xKZtx_iFxi7FQglhR_A_pjD84W3Vcz7pdOwPeqX6FXdFbftaVpBnhJAVxFmv6CcrtK6-S9h7SIYV4ClABi97U-001Rw_qxGbp-uWnkLgcEEkY"
}
Deposit With API
URL: https://{DOMAIN}/api/deposit
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| Authorization | string |
header |
Required |
Bearer token get from getToken API Bearer "TOKEN" |
| customer_id | string |
body |
Required |
Customer unique ID |
| currency | string |
body |
Required |
Fiat currency USD/CNY/MYR/VND/IDR/INR/HKD/KRW/PHP/EUR/CAD/GBP/AUD/JPY/MMK/BDT |
| fiat_amount | string |
body |
Required |
Fiat amount |
| asset | string |
body |
Required |
Crypto Asset TRC20-USDT,TRC20-USDC,ERC20-USDT |
| callback_url | string |
body |
Required |
A webhook to receive the transaction status update. |
| transaction_id | string |
body |
optional |
An unique transaction reference ID from you side. |
| rate | string |
body |
optional |
Rate from crypto to fiat, example: USDT/CNY |
Response
Success
Without Promotion:
{
"message": "success",
"transaction_id": "2024081661723802660",
"transaction_reference_id": "TRANSACTIONRF-ID",
"customer_id": "IT Test",
"fiat_amount": "230520000",
"currency": "VND",
"crypto_amount": "9096.319200",
"asset": "ERC20-USDT",
"forex": "0.00003946000000",
"wallet_address": "aa",
"expiry_time": "2024-08-16 12:04:20"
}
With Promotion:
{
"message": "success",
"transaction_id": "2026071561784095670792166",
"transaction_reference_id": "2026071505",
"customer_id": "IT Test",
"fiat_amount": "100",
"currency": "USD",
"crypto_amount": "100.069979",
"asset": "ERC20-USDT",
"forex": "1.00069979000000",
"wallet_address": "0x89e0074cecedf2139b4f8302fa5599c77676331bf",
"expiry_time": "2026-07-15 08:07:51",
"promo": {
"rate": "3.00000000",
"fiat": "3.00",
"crypto": "3.002099370000000000"
}
}
Failed
{
"message": "ERROR MESSAGE"
}
Deposit With Cashier
URL: https://{DOMAIN}/cashier
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| data | string |
Query String |
Required |
Encrypted string with the required parameters. Please refer to the following table for the parameter details.
For encryption details please refer to here. Please remember to do urlencode for the encrypted string.
|
| id | string |
Query String |
Required |
An unique ID for merchant. We will provide the when account is ready. |
| language | string |
Query String |
Optional |
Default is English en/id/th/zh/vn |
Response
HTML cashier page returned
Paramters
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| transaction_id | string |
- |
Optional |
An unique transaction reference ID from you side. |
| customer_id | string |
- |
Required |
A customer unique id from you end. |
| currency | string |
- |
Required |
Fiat currency USD/CNY/MYR/VND/IDR/INR/HKD/KRW/PHP/EUR/CAD/GBP/AUD/JPY/MMK/BDT |
| fiat_amount | string |
- |
Required |
Fiat amount |
| asset | string |
body |
Required |
Crypto Asset TRC20-USDT,TRC20-USDC,ERC20-USDT |
| rate | string |
body |
optional |
Rate from crypto to fiat, example: USDT/CNY |
| callback_url | string |
body |
Required |
A webhook to receive the transaction status update. |
| logo | url |
body |
Optional |
If you wish to use your own logo in our cashier, please pass in the logo url here. Recommended size is 280px * 75px |
Withdrawal
URL: https://{DOMAIN}/api/withdrawal
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| Authorization | string |
header |
Required |
Bearer token get from getToken API Bearer "TOKEN" |
| customer_id | string |
body |
Required |
Customer unique IDPlease pass in "Settlement" when isSettlement is true |
| currency | string |
body |
Required |
Fiat currency USD/CNY/MYR/VND/IDR/INR/HKD/KRW/PHP/EUR/CAD/GBP/AUD/JPY/MMK/BDT |
| fiat_amount | string |
body |
Required |
Fiat amount |
| asset | string |
body |
Required |
Crypto Asset TRC20-USDT,TRC20-USDC,ERC20-USDT |
| crypto_amount | string |
body |
Required |
Crypto amount |
| withdrawal_address | string |
body |
Required |
Recipient's address |
| token | string |
body |
Required |
A token returned from getSellRate API. Be aware that asset, currency, fiat_amount, crypto_amount, withdrawal_address is binded with the token. The request will be auto rejected if any value not matched with the data when query the getSellRate API. The token only valid for 5 minutes. |
| callback_url | string |
body |
Required |
A webhook to receive the transaction status update. |
| transaction_id | string |
body |
optional |
An unique transaction reference ID from you side. |
| is_settlement | boolean |
body |
optional |
Pass in as true when want submit settlement thru API request |
Response
Success
{
"message": "success",
"transaction_id": "2024081561723708300",
"transaction_reference_id": "test123123321",
"amount": "9.096319",
"asset": "TRC20-USDT",
"status": "pending"
}
Success with warning message
{
"message": "success",
"transaction_id": "2024081561723708300",
"transaction_reference_id": "test123123321",
"amount": "9.096319",
"asset": "TRC20-USDT",
"status": "pending",
"warning": "Insufficient Hot Wallet Balance. Please topup and proceed on backoffice"
}
Failed
{
"message": "ERROR MESSAGE"
}
Get Deposit Rate
URL: https://{DOMAIN}/api/getDepositRate
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| Authorization | string |
header |
Required |
Bearer token get from getToken API Bearer "TOKEN" |
| fiat_amount | string |
body |
Required |
Fiat amount |
| from | string |
body |
Required |
From Fiat Currency USD/CNY/MYR/VND/IDR/INR/HKD/KRW/PHP/EUR/CAD/GBP/AUD/JPY/MMK/BDT |
| to | string |
body |
Required |
To Crypto USDT,USDC |
Response
Success
{
"amount": "1070.905072",
"asset": "USDT",
"forex": "0.31456",
"token": null
}
Failed
{
"message": "ERROR MESSAGE"
}
Get Withdrawal Rate
URL: https://{DOMAIN}/api/getWithdrawalRate
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| Authorization | string |
header |
Required |
Bearer token get from getToken API Bearer "TOKEN" |
| fiat_amount | string |
body |
Required |
Fiat amount |
| from | string |
body |
Required |
From Fiat Currency USD/CNY/MYR/VND/IDR/INR/HKD/KRW/PHP/EUR/CAD/GBP/AUD/JPY/MMK/BDT |
| to | string |
body |
Required |
To Crypto USDT,USDC |
| withdrawal_address | string |
body |
Optional |
Withdrawal address. withdrawal token will be returned when this parameter in place |
Response
Success with withdrawal_address parameter
{
"amount": "1070.905072",
"asset": "USDT",
"token": "9cb441c3d5cd4135e1180cf246e2dbb3",
"forex": "0.31456"
}
Success without withdrawal_address parameter
{
"amount": "1070.905072",
"asset": "USDT",
"forex": "0.31456",
"token": "null"
}
Failed
{
"message": "ERROR MESSAGE"
}
Get Withdrawal Token
If you have your own rate supported, please use this endpoint to get the withdrawal token.
URL: https://{DOMAIN}/api/apiGetWithdrawalToken
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| Authorization | string |
header |
Required |
Bearer token get from getToken API Bearer "TOKEN" |
| rate | string |
body |
Required |
Rate from crypto to fiat, example: USDT/CNY |
| currency | string |
body |
Required |
From Fiat Currency USD/CNY/MYR/VND/IDR/INR/HKD/KRW/PHP/EUR/CAD/GBP/AUD/JPY/MMK/BDT |
| asset | string |
body |
Required |
To Crypto USDT,USDC |
withdrawal_address | string |
body |
Required |
Recipient address | crypto_amount | string |
body |
Required |
Crypto amount to withdraw | fiat_amount | string |
body |
Required |
Fiat amount convert from crypto |
Response
Success with withdrawal_address parameter
{
"token": "9cb441c3d5cd4135e1180cf246e2dbb3"
}
Failed
{
"message": "ERROR MESSAGE"
}
Get Balance
URL: https://{DOMAIN}/api/getBalance
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| Authorization | string |
header |
Required |
Bearer token get from getToken API Bearer "TOKEN" |
Response
Success
{
"ERC20-USDT": "0.000000000000000000",
"TRC20-USDT": "0.000000000000000000",
"TRC20-USDC": "0.000000000000000000"
}
Failed
{
"message": "ERROR MESSAGE"
}
Get Transaction Status
URL: https://{DOMAIN}/api/getTransactionStatus
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| Authorization | string |
header |
Required |
Bearer token get from getToken API Bearer "TOKEN" |
| transaction_id | string |
body |
Required |
Transaction ID from our end |
Response
Success
{
"transaction_id": "2024072961722231976",
"transaction_date": "2024-07-29 05:46:17",
"fiat_amount": "230520.000000000000000000",
"currency": "VND",
"crypto_amount": "9.096319",
"asset": "ERC20-USDT",
"customer_id": "IT Test",
"status": "pending",
"hash": "",
"fee": "0.000000000000000000",
"fee_usd": null,
"forex": "0.00003945999913",
"actual_amount": "9.096319",
"actual_fiat": "230520.000000000000000000"
}
Failed
{
"message": "ERROR MESSAGE"
}
Deposit Callback (Webhook)
URL: The callback_url passed in when submitting deposit request
Note: We will trigger the callback when deposit status update. Please return us "SUCCESS" and http status code 200. System will sending in next minute if failed return the correct response for the next 24 hours
Note: Before triggering the callback, we will perform a callback check from your end. Please prepare an endpoint for the checking to prevent duplicate callback. You may refer here
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| Signature | string |
header |
Signature to verify the payload. To generate the signature:
|
|
| actual_amount | string |
body |
Actual received amount in crypto | |
| actual_fiat | string |
body |
Actual amount in fiat converted from actual received crypto amount | |
| asset | string |
body |
Crypto Asset TRC20-USDT,TRC20-USDC,ERC20-USDT |
|
| crypto_amount | string |
body |
Requested crypto amount | |
| currency | string |
body |
Requested fiat currency | |
| customer_id | string |
body |
Customer unique ID | |
| fiat_amount | string |
body |
Requested fiat amount | |
| forex | string |
body |
Forex convert from fiat to crypto | |
| hash | string |
body |
Blockchain transaction hash | |
| status | string |
body |
Transaction status completed, expired, received_more, received_less |
|
| transaction_id | string |
body |
An unique transaction ID from our side. | |
| transaction_reference_id | string |
body |
optional |
An unique transaction reference ID from you side. |
Response
Callback sample
{
"actual_amount": "1010.000000000000000000",
"actual_fiat": "1010.00000000",
"asset": "ERC20-USDT",
"crypto_amount": "100.000000",
"currency": "USD",
"customer_id": "TEST12312",
"fiat_amount": "100.00000000",
"forex": "1.00000000000000",
"hash": "6ced0264d47fd4e244de2de282b24039c40a041666b3c2b1631251838fa0f0c0",
"status": "completed",
"transaction_id": "2024082581724580395",
"transaction_reference_id": "321312312"
}
Withdrawal Callback (Webhook)
URL: The callback_url passed in when submitting withdrawal request
Note: We will trigger the callback when withdrawal status update. Please return us "SUCCESS" and http status code 200. System will sending in next minute if failed return the correct response for the next 24 hours
Note: Before triggering the callback, we will perform a callback check from your end. Please prepare an endpoint for the checking to prevent duplicate callback. You may refer here
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| Signature | string |
header |
Signature to verify the payload. To generate the signature:
|
|
| asset | string |
body |
Crypto Asset TRC20-USDT,TRC20-USDC,ERC20-USDT |
|
| crypto_amount | string |
body |
Requested crypto amount | |
| currency | string |
body |
Requested fiat currency | |
| customer_id | string |
body |
Customer unique ID | |
| fiat_amount | string |
body |
Requested fiat amount | |
| forex | string |
body |
Forex convert from fiat to crypto | |
| hash | string |
body |
Blockchain transaction hash | |
| recipient_address | string |
body |
Withdrawal address | |
| status | string |
body |
Transaction status completed, rejected |
|
| transaction_id | string |
body |
An unique transaction ID from our side. | |
| transaction_reference_id | string |
body |
optional |
An unique transaction reference ID from you side. |
Response
Callback sample
{
"asset": "TRC20-USDT",
"crypto_amount": "1060.196021",
"currency": "MYR",
"customer_id": "IT Test",
"fiat_amount": "5000.000000000000000000",
"forex": "0.21203920420000",
"hash": "70c59b41cc28fb2d39c547bb48747d9984edac0c0dd8fc6d2850cfdd589c63be",
"recipient_address": "TFbRMT9fsLELwqNx8gHAbkAP8djrQJbBYg",
"status": "completed",
"transaction_id": "2024082561724572798",
"transaction_reference_id": "test12312332112"
}
Callback Status Check
URL: Please provide the callback checking URL to us.
Note: Please return pending or completed in string with HTTP Status Code 200.
pending:Not yet receive callback on your endcompleted:Callback received and status updated on your end, but due to uncertainty issue, we didn't receive acknowledge from the callback.
Note: We will stop the callback if the status returned is completed. Callback will not send as well if the response is not pending
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| transaction_id | string |
body |
An unique transaction ID from our side. |
Response
Ready to receive callback
{
"pending"
}
Callback received
{
"completed"
}
Encryption
The details to prepare the encryption string. Encryption we are using is AES with the following details:
Cipher Mode:CBCPadding:PKCS5PaddingKey Size in Bits:128Secret Key:We will provide you once account is ready. Please add the suffix "0" until 16 characters if the key u get is less than 16 characters.IV:Same value with the secret keyYou may use any online tools to test the encryption like https://www.devglan.com/online-tools/aes-encryption-decryption
Request
| Parameter | Type | Position | # | Description |
|---|---|---|---|---|
| transaction_id | string |
- |
Optional |
An unique transaction reference ID from you side. |
| customer_id | string |
- |
Required |
A customer unique id from you end. |
| currency | string |
- |
Required |
Fiat currency USD/CNY/MYR/VND/IDR/INR/HKD/KRW/PHP/EUR/CAD/GBP/AUD/JPY/MMK/BDT |
| fiat_amount | string |
- |
Required |
Fiat amount |
| asset | string |
body |
Required |
Crypto Asset TRC20-USDT,TRC20-USDC,ERC20-USDT |
| callback_url | string |
body |
Required |
A webhook to receive the transaction status update. |
Example
Parameters: (Please convert the parameters to json before encrypt)
{
"transaction_id": "Txn-ID",
"fiat_amount": "100.00",
"callback_url": "https://google.com",
"currency": "USD",
"customer_id": "IT",
"asset": "ERC20-USDT"
}
Secret Key: abcd123400000000
IV: abcd123400000000
Response
Encrypted Data: 3BdGFUafH640TtxaeGJcAHgU1ywOdRJEkInWNOsBZr9FSldjWRZ4D63rzkXBNDEoumfUH98vS2d1RdkWF0DH2vECCtNncgU+0GsGvjNtodOIciGW3YBIeoOJk3DxqxNoNJqlRS+SbiXiBvzL0GwGsWyH2vV5gFNoxBLNOy1i/FzwMgq5ExmF2P/n4XyNPqdjOARGSJi8EGOU5Ac9leOnHw==