Send Stablecoin

Send USDT from your Neutron wallet to an external blockchain address. Currently supports TRON (TRC-20) with ETH (ERC-20) coming next.

Overview

Your Neutron Wallet  ──►  Neutron  ──USDT on-chain──►  External Wallet

Use case: Withdrawing USDT to an exchange, another wallet, or paying a vendor in stablecoins.

Supported Chains

ChainMethodTokenStatus
TRON"tron"USDT (TRC-20)✅ Available
Ethereum"eth"USDT (ERC-20)🔜 Coming soon

Create Transaction

Send USDT via TRON

curl -X POST https://api.neutron.me/api/v2/transaction/ \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -d '{
    "sourceReq": {
      "ccy": "USDT",
      "method": "neutronpay",
      "reqDetails": {}
    },
    "destReq": {
      "ccy": "USDT",
      "amtRequested": 100,
      "method": "tron",
      "reqDetails": {
        "address": "TQd1nbhg9xj4bjLFtetXc4JVb2stSMJ8s9"
      }
    }
  }'

Send from BTC wallet (auto-convert)

You can also send USDT from a BTC balance — Neutron handles the conversion:

curl -X POST https://api.neutron.me/api/v2/transaction/ \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -d '{
    "sourceReq": {
      "ccy": "VND",
      "amount": 2500000,
      "method": "neutronpay",
      "reqDetails": {}
    },
    "destReq": {
      "ccy": "USDT",
      "method": "tron",
      "reqDetails": {
        "address": "TQd1nbhg9xj4bjLFtetXc4JVb2stSMJ8s9"
      }
    }
  }'

Request Fields

FieldTypeRequiredDescription
sourceReq.ccystringSource currency ("USDT", "BTC", "VND", etc.)
sourceReq.methodstring"neutronpay" (from your wallet)
destReq.ccystring"USDT"
destReq.methodstring"tron" (or "eth" when available)
destReq.amtRequestednumberAmount of USDT to send (set on source or dest, not both)
destReq.reqDetails.addressstringDestination blockchain address
extRefIdstringYour own reference ID (must be unique)
deductNetworkFeesFromDestbooleanIf true, fees are deducted from the sent amount instead of your wallet
notestringInternal note for this transaction
⚠️

Set the amount on one side only (source OR dest), not both.

Response

{
  "txnId": "c7d8e9f0-1234-5678-9abc-def012345678",
  "accountId": "ne01-abc123def456",
  "txnState": "quoted",
  "sourceReq": {
    "ccy": "USDT",
    "method": "neutronpay",
    "amtRequested": 100,
    "neutronpayFees": 1.00,
    "networkFees": 0.50,
    "reqStatus": "0"
  },
  "destReq": {
    "ccy": "USDT",
    "method": "tron",
    "amtRequested": 100,
    "reqStatus": "0",
    "reqDetails": {
      "address": "TQd1nbhg9xj4bjLFtetXc4JVb2stSMJ8s9"
    }
  },
  "fxRate": 1,
  "createdAt": 1770342000000
}

Confirm Transaction

Review the fees, then confirm:

curl -X PUT https://api.neutron.me/api/v2/transaction/c7d8e9f0-1234-5678-9abc-def012345678/confirm \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

After confirmation, Neutron broadcasts the USDT transfer on-chain.

Fee Options

The deductNetworkFeesFromDest flag controls where fees come from:

SettingBehaviorRecipient gets
false (default)Fees deducted from your wallet balanceFull amount
trueFees deducted from the sent amountAmount minus fees

Example: Sending 100 USDT with 1.50 total fees:

  • false → Recipient gets 100 USDT, you pay 101.50 total
  • true → Recipient gets 98.50 USDT, you pay 100 total

Transaction States

StateMeaning
quotedTransaction created — review fees before confirming
srccreatedFunds reserved from wallet
destsentUSDT transfer broadcast on-chain
completedTransaction confirmed on-chain ✅
failedTransaction failed (e.g., insufficient balance)
usercanceledCancelled before confirmation

See Transaction Status Types for the complete state reference.

Notes

  • No KYC required for stablecoin sends. KYC is only needed for fiat payouts to bank accounts.
  • TRON USDT transfers typically confirm within seconds to a few minutes.
  • Double-check the destination address — on-chain transfers are irreversible.
  • Ensure sufficient balance to cover the amount plus fees (unless using deductNetworkFeesFromDest).

Related