Send USDT
You can send USDT from your main wallet (HD index 0) in two ways:
| Method | Auth | Use case |
|---|---|---|
| Dashboard | Email OTP | Manual withdrawals, moving funds to your own wallet |
API (/merchant/wallets/send) | Session cookie + OTP | Automated sends authenticated as you |
For programmatic sends on behalf of your users, use the derive API instead.
Dashboardโ
- Go to Wallets in the dashboard sidebar
- Your current USDT balance is shown on each network card
- Click Send USDT and fill in the destination address, amount, and network
- Click Continue โ HelaMesh sends a 6-digit OTP to your email
- Enter the OTP and click Confirm send
- 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โ
| Field | Type | Required | Notes |
|---|---|---|---|
toAddress | string | yes | TRON base58 or BSC hex destination |
amount | string | yes | Decimal USDT, up to 6 decimal places |
network | string | yes | "TRON" or "BSC" |
otp | string | yes | 6-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
}
| Field | Notes |
|---|---|
txHash | The on-chain transaction hash. Verify on Tronscan or BSCScan. |
swept | true 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):
| Network | Token | Minimum | Typical cost |
|---|---|---|---|
| TRON | TRX | 10 TRX | 5โ8 TRX per transfer |
| BSC | BNB | 0.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.