USDT on Tron
One chain, one token, six decimals. Addresses are registered and confirmed before they can receive.
USDT on Tron (TRC-20) is the only chain and the only token this API moves. There is no Ethereum, no BSC, no other stablecoin.
Sending on the wrong chain loses the funds
A transfer of USDT on any other network, or of any other token on Tron, cannot be credited and cannot be returned. Check the network in your wallet before every send.
Precision
Six decimal places, exactly — Tron USDT's own precision. Every amount on the
wire is a decimal string with 6 places ("250.000000"), never a JSON number.
See Money.
Receiving USDT from us (buy flow)
USDT is sent to an address you registered and confirmed. Registration is two steps:
POST /v1/walletsregisters the address.POST /v1/wallets/{id}/confirmconfirms it.
An unconfirmed address cannot receive: creating an order against one is refused
with WALLET_NOT_DELIVERABLE. The two steps exist so that a typo'd address is
caught before value moves rather than after.
Sending USDT to us (sell flow)
You send to your deposit address, then attach the transaction hash with
PATCH /v1/orders/{id}.
Your deposit address is long-lived and shared across your orders
The same address serves every one of your orders, so the address alone cannot tell two of them apart. The transaction hash is what attributes a deposit. Until you attach it, nothing links your send to the order you meant.
A hash is normalised before comparison — case and a leading 0x are ignored,
since those are the same on-chain transaction. One hash attributes exactly one
order: attaching a hash already used elsewhere is refused with
TX_HASH_ALREADY_USED, and an order that already has one returns
TX_HASH_ALREADY_ATTACHED.
Finality
Send the funds before the order's deadline. A deposit is attributed once it is
confirmed on-chain and matched to your order, at which point you receive
order.funds_confirmed.