Skip to main content

Send USDT

You can send USDT from your main wallet (HD index 0) in two ways:

MethodAuthUse case
DashboardEmail OTPManual withdrawals, moving funds to your own wallet
API (/merchant/wallets/send)Session cookie + OTPAutomated sends authenticated as you

For programmatic sends on behalf of your users, use the derive API instead.


Dashboardโ€‹

  1. Go to Wallets in the dashboard sidebar
  2. Your current USDT balance is shown on each network card
  3. Click Send USDT and fill in the destination address, amount, and network
  4. Click Continue โ€” HelaMesh sends a 6-digit OTP to your email
  5. Enter the OTP and click Confirm send
  6. The transaction hash appears with a link to the block explorer
Sweep before send

Before broadcasting the outbound transaction, HelaMesh automatically sweeps USDT from all confirmed invoice addresses (index 1, 2, 3โ€ฆ) back to your main address (index 0). This consolidates your funds so the send always goes from a single address. The sweep confirms on-chain before the send is broadcast.


APIโ€‹

Step 1 โ€” Request OTPโ€‹

POST /merchant/wallets/request-send-otp
Cookie: hm_session=โ€ฆ

Response:

{ "ok": true, "message": "OTP sent to you@example.com" }

Step 2 โ€” Sendโ€‹

POST /merchant/wallets/send
Cookie: hm_session=โ€ฆ
Content-Type: application/json

Bodyโ€‹

FieldTypeRequiredNotes
toAddressstringyesTRON base58 or BSC hex destination
amountstringyesDecimal USDT, up to 6 decimal places
networkstringyes"TRON" or "BSC"
otpstringyes6-digit code from the email sent in step 1

Exampleโ€‹

// Step 1
await fetch('https://api.helamesh.com/merchant/wallets/request-send-otp', {
method: 'POST',
credentials: 'include',
});

// Step 2 โ€” after user enters OTP
const res = await fetch('https://api.helamesh.com/merchant/wallets/send', {
method: 'POST',
credentials: 'include',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({
toAddress: 'TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE',
amount: '50.00',
network: 'TRON',
otp: '123456',
}),
});

const result = await res.json();
console.log('txHash:', result.txHash);

Responseโ€‹

200 OK
{
"ok": true,
"txHash": "a1b2c3d4e5f6...",
"network": "TRON",
"amount": "50.00",
"toAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
"swept": true
}
FieldNotes
txHashThe on-chain transaction hash. Verify on Tronscan or BSCScan.
swepttrue if invoice addresses were swept into index-0 before the send

Check your balanceโ€‹

GET /merchant/wallets/balance?network=TRON
GET /merchant/wallets/balance?network=BSC
Cookie: hm_session=โ€ฆ
200 OK
{
"network": "TRON",
"balance": "125.50"
}

Gas requirementsโ€‹

Sends require native gas at your main address (index 0):

NetworkTokenMinimumTypical cost
TRONTRX10 TRX5โ€“8 TRX per transfer
BSCBNB0.001 BNB~0.0003 BNB per transfer

If your address lacks gas, the send endpoint returns 400 Insufficient TRX/BNB for gas. Top up your main address with TRX or BNB from any exchange or wallet before retrying.