Skip to main content
This guide shows you how to follow a USDT transfer out of BOT Chain: find its ID in the deposit transaction, check whether it was delivered or refunded, and confirm arrival on the other chain.
Everything on this page uses testnet (chain 968). Get free test tokens from the faucet.

How a transfer is recorded

When you call deposit, the bridge router on BOT Chain:
  1. Emits DepositEvent with a depositNonce. This number is the transfer’s ID on the router.
  2. Stores a record under that nonce in refundDatas(nonce).
After the destination chain releases the USDT, the router emits ExecutionConfirmed(localNonce) and executionConfirmed(nonce) returns true. If the transfer is refunded instead, the router emits Refunded and the record’s refunded flag becomes true. BOT Chain doesn’t document these status fields. This page is based on the router’s ABI and on testnet transfers. On 2026-10-01, a 1,000 USDT deposit to Sepolia was confirmed 54 seconds after the deposit block. On 2026-10-02, two 11 USDT deposits to BSC testnet were both delivered, one of them released on BSC testnet 38 seconds after the deposit block.

Steps

1

Set up the project

Use the bot-defi project from Wrap BOT. This script only reads.
2

Write the script

track-transfer.ts
  • The filter keeps only events from the router. The bridge contract emits a separate Deposit event with its own per-destination nonce, which you don’t need here.
  • refundDatas returns a tuple. Item 3 is refunded.
3

Run it

Verify it worked

Output for the deposit made in Bridge USDT out on testnet on 2026-10-02. It printed pending on the first two runs and delivered on the third:
Output
To check mainnet transfers, use botChain instead of botChainTestnet.

Confirm arrival on the destination

“Delivered” means the router recorded the release. To see the USDT itself, open the recipient’s address on the destination explorer and look for an incoming USDT transfer from the gateway listed in Contract addresses: On BNB Smart Chain the amount shows with 18 decimals.

What a refund means

A refund returns the USDT to the sender on BOT Chain when a transfer isn’t delivered. On testnet, transfer 389 was refunded: the sender deposited 202 USDT and got 201 back, so the bridge fee wasn’t returned. Refunds are triggered by the bridge operator. In the router’s ABI, adminRefund needs an operator role, so you can’t start one yourself. If a transfer stays pending for much longer than usual, contact BOT Chain with the deposit transaction hash.

Troubleshooting

Check the hash is the deposit transaction, not the approve before it, and that you’re on the right network.
The validators and relayer may be waiting for the destination side, or the destination may lack liquidity. Wait and check again, then contact BOT Chain with the hash.
Check the recipient address and the destination chain in the script’s first line, then look for the gateway transfer on that chain’s explorer. On BNB Smart Chain, check you formatted with 18 decimals.

Next steps

Bridge USDT out

Send a transfer.

Bridge overview

How lock and release works.
Last modified on October 2, 2026