Skip to main content

💳 Native Checkout Integration

API Update Notice

There have been recent updates to the API endpoints and parameters. Please refer to the Change Record for details.

Native Checkout API: Users can scan the QR code or copy the address on the checkout page built on your sites/apps to make the payments.

Integrate with Native Checkout API to build the checkout page for your sites/apps. Users pay in your sites/apps. No need to lead them to external pages. Take complete control of your users' checkout experience.

📦 1. Create Order

  • Interface Description: Submit payment orders through this interface and obtain receipt information.
  • Interface Address: POST /api/order/create

Request Parameters

FieldTypeRequiredDescription
out_trade_nostringYesMerchant Order ID
currency_idintYesGlobal unique currency ID
fiat_namestringNoFiat name (USD / USDT / JPY / CHF / CAD / NOK / SEK / HKD / SGD / KRW / TWD / CNY / INR / BRL / MXN / ZAR / RUB / TRY / EUR / GBP / AUD / VND / THB)
fiat_amountstringNoFiat amount ("1.2")
token_amountstringNoToken amount
callback_urlstringNoCallback url
time_outint64No10-digit expiration timestamp, fill in 0, default is 30 minutes (1753513764)

Response Field Description

FieldTypeDescriptionExample
trade_nostringTransaction ID"20250629153045a7b3c9d2e5f8a1b4c6"
chainstringBlockchain network"Tron"
tokenstringCryptocurrency token"TRX"
contractstringToken contract address"TRX"
amountstringTransaction amount"15.724197"
modestringPayment mode"address"
pay_addressstringRecipient address"TSg8kWPE2s7z5Lon6bSnZZrYnquGHx2..."
time_expireintegerExpiration timestamp1753515371
decimalintegerToken decimals6
chain_idintegerChain ID3448148188
equityintegerEquity value1
create_timeintegerCreation timestamp1753513571
amount_collectedstringCollected amount"0"
need_confirmsintegerRequired confirmations0
already_confirmsintegerCurrent confirmations0
entrust_urlstringPayment URL"https://checkout.pay.halochat.io/20260....b876498e0771e1"
refererstringReferrer information""
chain_infoobjectChain information{"token": "TRX", "rpc": "...", ...}

Successful Response Example

{
"code": 0,
"msg": "success",
"data": {
"trade_no": "20260317173635066d54f5b6c7269d41",
"chain": "Tron",
"token": "TRX",
"contract": "TRX",
"amount": "16.556743",
"mode": "address",
"pay_address": "THgSjcyhyxfzrjtS7VYw1vnHvb7QkMsY...",
"time_expire": 1773741995,
"decimal": 6,
"chain_id": 3448148188,
"equity": 1,
"create_time": 1773740196,
"amount_collected": "",
"need_confirms": 0,
"already_confirms": 0,
"entrust_url": "https://checkout.pay.halochat.io/20260317173635066d54f5b6c7269d41",
"referer": "",
"chain_info": {
"token": "TRX",
"abi": "",
"rpc": "https://nile.trongrid.io",
"browser_url": "https://nile.tronscan.org/#/transaction",
"decimal": 6,
"logo": "https://halo-n.oss-ap-southeast-1.aliyuncs.com/png/202505/45d1f4b5-b80f-4331-af78-ec557f97d832.png",
"series": "Tron",
"monitor_chain_id": 3448148188
}
}
}

🔍 2. Query Order

  • Interface Description: Use this interface to query the order status.
  • Interface Address: POST /api/order/detail

Request Parameters

FieldTypeRequiredDescription
trade_nostringYesTransaction ID

Response Field Description

FieldTypeDescriptionExample
trade_nostringTransaction ID (platform)"20250629153045a7b3c9d2e5f8a1b4c6"
out_trade_nostringMerchant's order ID"202401011753513569"
chainstringBlockchain network"Tron"
tokenstringCryptocurrency token"TRX"
contractstringToken contract address"TRX"
fiat_namestringFiat currency name"USD"
fiat_amountstringFiat amount to pay"5"
amountstringCrypto amount to send"15.724197"
modestringPayment mode"address"
pay_addressstringRecipient crypto address"TSg8kWPE2s7z5Lon6bSnZZrYnquGHx2..."
statusstringTransaction status"TO-BE-PAID"
time_expireintegerExpiration timestamp (Unix)1753515371
decimalintegerToken decimals6
chain_idintegerChain ID3448148188
equityintegerEquity value1
create_timeintegerCreation timestamp (Unix)1753513571
amount_collectedstringCollected amount"0"
need_confirmsintegerRequired confirmations0
already_confirmsintegerCurrent confirmations0
entrust_urlstringPayment URL (if applicable)""
refererstringReferrer information""
chain_infoobjectChain information{"token": "TRX", "rpc": "...", ...}

Successful Response Example

{
"code": 0,
"msg": "success",
"data": {
"trade_no": "20260317173635066d54f5b6c7269d41",
"out_trade_no": "ORDER_1773740195363",
"chain": "Tron",
"token": "TRX",
"contract": "TRX",
"fiat_name": "USD",
"fiat_amount": "5",
"amount": "16.556743",
"mode": "address",
"pay_address": "THgSjcyhyxfzrjtS7VYw1vnHvb7QkMsY...",
"status": "TO-BE-PAID",
"time_expire": 1773741995,
"decimal": 6,
"chain_id": 3448148188,
"equity": 1,
"create_time": 1773740196,
"amount_collected": "0",
"need_confirms": 0,
"already_confirms": 0,
"entrust_url": "",
"referer": "",
"chain_info": {
"token": "TRX",
"abi": "",
"rpc": "https://nile.trongrid.io",
"browser_url": "https://nile.tronscan.org/#/transaction",
"decimal": 6,
"logo": "",
"series": "",
"monitor_chain_id": 0
}
}
}

💱 3. Price Exchange

  • Interface Description: Get the current exchange rate between TOKEN and legal currency.
  • Interface Address: POST /api/order/exchange-rates

Request Parameters

FieldTypeRequiredDescription
currency_idintYesGlobal unique currency ID
fiat_namestringYesFiat currency abbreviation (USD / USDT / JPY / CHF / CAD / NOK / SEK / HKD / SGD / KRW / TWD / CNY / INR / BRL / MXN / ZAR / RUB / TRY / EUR / GBP / AUD / VND / THB)
fiat_amountstringYesFiat currency amount

Response Field Description

FieldTypeDescription
amountstringAmount
exchange_ratestringExchange rate

Successful Response Example

{
"code": 0,
"msg": "success",
"data": {
"amount": "0.00001971",
"exchange_rate": "100"
}
}

📋 4. App Token List (with balance)

  • Interface Description: Returns cryptocurrencies enabled for receiving payments under the current app (X-Appid), with aggregated balances (same basis as POST /api/account/balance). This is not the full platform catalog; for all supported tokens use §5 Token List.
  • Interface Address: POST /api/currency/app-token-list
  • Request Parameters: Request body is {} (same auth headers as other APIs).

Response Field Description

Root object:

FieldTypeDescription
codeintegerBusiness code, 0 means success
msgstringMessage
dataarrayEnabled tokens and balances for the current app

data[] elements:

FieldTypeDescription
currency_idintegerGlobal unique currency ID
chainstringChain name
networkstringNetwork name
tokenstringToken symbol
contractstringContract address
chain_idintegerChain ID
logostringToken logo URL
decimalintegerToken decimals
balancestringTotal balance (decimal string)
operable_balancestringOperable balance
frozen_amountstringFrozen amount
statusintegerStatus: 1 — enabled, 2 — disabled
transaction_enabledbooleanReceiving enabled (always true in this response)

Successful Response Example

{
"code": 0,
"msg": "success",
"data": [
{
"currency_id": 46,
"chain": "Tron",
"network": "Nile",
"token": "JST",
"contract": "TF17BgPaZYbxxxxhriubPDsA7ArKoLX3",
"chain_id": 3448148188,
"logo": "https://halo-n.oss-ap-southeast-1.aliyuncs.com/png/202505/xxx-c3f3-4d5d-a9b5-0143d78326f9.png",
"decimal": 18,
"balance": "0.785074013",
"operable_balance": "0.785074013",
"frozen_amount": "0",
"status": 1,
"transaction_enabled": true
}
]
}

📋 5. Token List

  • Interface Description: Get the Token list supported by the system. For your app’s enabled receiving tokens and balances, use §4 App Token List.
  • Interface Address: POST /api/currency/token-list
  • Request Parameters: None

Response Field Description

FieldTypeDescription
currency_idintGlobal unique currency ID.
chainstringChain
networkstringNetwork
tokenstringtoken
contractstringContract address. If the current main currency is the same as the currency name, the value will be consistent with the currency name.
chain_idintChain ID. Only the Ethereum series has a value.
logostringLogo
decimalintPrecision

Successful Response Example

{
"code": 0,
"msg": "success",
"data": [
{
"currency_id": 46,
"chain": "Tron",
"token": "JST",
"network": "Nile",
"contract": "TF17BgPaZYbxxxxhriubPDsA7ArKoLX3",
"chain_id": 3448148188,
"logo": "https://halo-n.oss-ap-southeast-1.aliyuncs.com/png/202505/xxx-c3f3-4d5d-a9b5-0143d78326f9.png",
"decimal": 18
}
]
}

💸 6. Payout

  • Interface Description: Merchants can withdraw cash to a specified address through this interface.
  • Interface Address: POST /api/payout/create

Request Parameters

FieldTypeRequiredDescription
currency_idintYesGlobal unique currency ID
amountstringYesCurrency base amount
to_addressstringYesRecipient address
callback_urlstringNoCallback address (default callback address set by merchant APPID)
google_codestringNoGoogle verification code (required if verification is enabled for the current app)

Successful Response Example

{
"code": 0,
"msg": "success",
"data": {
"cost": "0.801502",
"actual_receipt": "0.001",
"trade_no": "202603171746187e582d1b789b27ea55",
"estimated_transfer": "0"
}
}

📊 7. Query Transfer Status

  • Interface Description: Query the order status of payout.
  • Interface Address: POST /api/payout/detail

Request Parameters

FieldTypeRequiredDescription
trade_nostringYesTransaction no

Response Field Description

FieldTypeDescription
trade_nostringTransaction ID
service_chargestringService Fee
gasstringGAS Fee
tokenstringCurrency
amountstringAmount
target_addressstringRecipient Address
start_timeintStart Time
created_timeintCreation Time
statusstringTransaction Status (CONFIRMING-PROGRESS: Confirming, PAID: Success, FAIL: fail, CANCEL: Canceled, PROGRESS: Pending)

Successful Response Example

{
"code": 0,
"msg": "success",
"data": {
"service_charge": "0.000002",
"gas": "0.8015",
"amount": "0.001",
"status": "TRANSFER",
"target_address": "TDYiTL3pke3T9BsoTotbKb922WsXQCmS...",
"start_time": 1773740882,
"created_time": 1773740882,
"trade_no": "202603171748020a09cbb09b4846bc99",
"token": "DK7bKg181cC7pBgX3PxSIH2WdklZ5IPT"
}
}

💰 8. Check Balance

Retrieve single currency balance information for an application via this API.

  • Interface Address: POST /api/account/balance

Request Parameters

FieldTypeRequiredDescription
currency_idintYesGlobal unique currency ID

Response Field Description

FieldTypeDescription
currency_idintGlobal unique currency ID
balancestringRemaining Quantity
balance_usdtstringValue of Remaining Quantity Converted to USDT
operable_balancestringThe operable quantity (If the main currency amount in the wallet address is too low to collect, that wallet address cannot be used. Refer to personal center => network settings for the minimum operable threshold.)
operable_balance_usdtstringValue of Operable Quantity
chainstringChain name
networkstringNetwork
tokenstringToken
contractstringContract Address (main token as abbreviated token name)

Successful Response Example

{
"code": 0,
"msg": "success",
"data": {
"currency_id": 46,
"balance": "0.785074013",
"operable_balance": "0.785074013",
"operable_balance_usdt": "0.043642",
"balance_usdt": "0.043642",
"chain": "Tron",
"network": "Nile",
"token": "JST",
"contract": "TF17BgPaZYbz8oxbjhriubPDsA7ArKoLX3"
}
}

🖼️ 9. Static Payment QR Code

  • Interface Description: Apply for an independent static payment address via the API. It will callback the CallBack interface address of the corresponding APPID.
  • Interface Address: POST /api/payment-qr-code/create

Request Parameters

FieldTypeRequiredDescription
namestringYesQR code name
currency_idintYesGlobal unique currency ID
amountstringNoDefault payment amount (can be "0")

Response Field Description

FieldTypeDescriptionExample
idintUnique QR code ID115
addressstringStatic payment address"TXd8UKLtLqk5V15v7e3W43ZdNw5berp6DP"

Successful Response Example

{
"code": 0,
"msg": "success",
"data": {
"id": 115,
"address": "TXd8UKLtLqk5V15v7e3W43ZdNw5berp6DP"
}
}
💡

This requires the APPID of the QR code application to make a request to this API.


📌 View error code