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
email 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 ID
Please 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:
  • Sort the payload by key with ASCII in ascending order
  • Join the Secret Key and Payload
  • MD5 the string result
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:
  • Sorting the payload by key with ASCII in ascending order
  • Join the Secret Key and Payload
  • MD5 the string result
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 end
  • completed: 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: CBC
  • Padding: PKCS5Padding
  • Key Size in Bits: 128
  • Secret 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 key
  • You 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==