A thief took $15.99M from 40 CoinDCX wallets. CoinDCX was still using them that morning
Forty wallets, one new address and $16 million in USDT. We read the public record of every wallet involved, back to 2023, and traced the stolen USDT to where it sits now.
- $15.99M
- 5 minutes
- 276
- $15.82M
- $9.63M
- $2.28M
01 · What happenedCoinDCX wallets were emptied, and the exchange called them old
On the evening of 21 October, about $16 million left wallets belonging to CoinDCX. CoinDCX is one of India's biggest crypto exchanges. The money went to one new address. Within hours it was split up and sent on to other exchanges.
The coins were USDT, the dollar stablecoin, on TRON, the blockchain most exchanges use to move USDT cheaply. Darcy, who works at the security firm Salus, was first to flag the transfers, in a post early the next morning. CoinDCX replied that users' funds were safe and that the wallets were old addresses, created in January 2025 and compromised in its July 2025 hack. They "have not been used by CoinDCX since", it added. Co-founder Sumit Gupta added that none of the exchange's current addresses had sent money to them.
Bitquery reads TRON's full public record, so we tested that claim wallet by wallet. It does not hold up. The exchange's own system was moving customer deposits through the drained wallets on the morning of the theft. CoinDCX's treasury had been refilling one of them all year. We also traced where the money came from and where it went. What the record cannot show is how the thief got the keys.
02 · How a deposit movesDeposit addresses, hot wallets and the fee that moves them
When you send USDT to CoinDCX, the app gives you a deposit address of your own. A program the exchange runs, usually called a sweeper, watches all of those addresses. When a deposit lands, it moves the coins into a hot wallet, the wallet the exchange uses for day-to-day payments. Exchanges keep most of their money offline in cold wallets, also known as treasury wallets. They top up the hot wallets from there.
On TRON, each USDT transfer costs a small fee, which crypto people call gas. It is paid in TRX, TRON's own coin. A fresh deposit address holds no TRX, so before each move CoinDCX sent it 15 TRX from a hot wallet whose address starts with TFLx.
A deposit address only moves money when someone with its private key tells it to. So if the exchange's sweeper was still moving deposits through these addresses in October, CoinDCX still held the keys and was still using them. The full TRON record behind this check, block by block, is open through Bitquery's TRON API.
03 · The night of 21 OctoberFive minutes between CoinDCX's last move and the thief's first
That morning the hot wallet that collects deposits, TU7Bb, passed a batch of them on to a treasury wallet. Just after noon UTC, TFLx sent its usual 15 TRX to one of the deposit addresses. Seconds later that address moved its deposit into the collecting wallet.
Five minutes later the same wallet, TFLx, paid 100 TRX into a brand-new address. That was the thief's first move. Over the next half hour TFLx sent the new address all its USDT and all its TRX. That TRX paid for each deposit move.
The thief tested with small amounts through the afternoon, then emptied 35 deposit addresses, one after another, into the new address. About 20 minutes later the big one followed, 15.8 million USDT from a single deposit address, TQKJQr.
CoinDCX's own system kept running. More than five hours after the theft, it moved a small deposit from a second address into the collecting wallet. It had done the same all year.
The thief also held the keys to two older wallets of the exchange. One was a hot wallet that went quiet in October 2023. The other was funded by a CoinDCX cold wallet earlier that year. So the thief held keys the exchange had retired long ago as well as keys it used every day. That points to access to a whole store of keys.
04 · Still in useThe exchange moved deposits through these wallets until the day of the theft
CoinDCX's statement says these addresses fell out of use after the July hack. The record shows the opposite.
Start with the deposit addresses. All 35 small deposit addresses the thief emptied had a deposit moved out by the exchange after 1 September. For 22 of them it happened in the final week. Their money went into TU7Bb, the hot wallet that collects deposits, and on into the treasury.
The fee wallet points the same way. TFLx kept sending 15 TRX top-ups every month after the July hack, apart from two gaps. Since August it sent 276 of them. Each one was followed by a deposit move into the collecting wallet, usually within half a minute. That is a program at work, and the money it moved landed in CoinDCX's hot wallet.
The treasury wallets point the same way. They kept the fee wallet topped up with TRX this spring and summer. Last year one of them also sent TFLx more than $27M in USDT. Bitquery's address labels mark these as CoinDCX wallets, and they were moving money on the day of the theft. Gupta's point was that no current address had paid these old ones. These payments say otherwise.
05 · The $15.82 millionOne deposit address held 99% of what was taken
Almost all the money came from TQKJQr. It belonged to one big depositor. ZachXBT says it was a liquidity provider. Over 14 months that depositor paid in more than $100M. CoinDCX moved each deposit on within a minute, $85M of it in all. The sweeper was thorough. In May it even passed on four tiny transfers from a look-alike address, the calling card of address poisoning scams.
Then the moves stopped for one stretch. The 88 deposits that arrived from late January to the end of March were never moved. Together they come to exactly the amount the thief took from this address. To the cent.
Why those deposits stayed there is not clear from the record. In those same weeks TFLx sent no top-ups at all, until the treasury refilled it on 1 April. But TQKJQr held enough TRX of its own to pay for a move. And on 11 March CoinDCX swept 518 other deposit addresses in six minutes and left this one, which by then held more than $9 million. When top-ups came back, each new deposit was moved on within a minute. The old pile stayed exactly where it was until the thief came for it in October.
There are two ways to read that. If the exchange had credited those deposits to the depositor, the theft cost it the money. If it had not, a customer's deposits went uncredited for months. Only its books can say which.
06 · Where the money wentOKX, Binance and Gate within a day
The thief started moving the money in the early evening, UTC. Over the next ten hours the new address split it across six wallets, four of them brand new, and from there it fanned out. The first deposit at Binance landed half an hour later, and by the next morning $9.63M had reached deposit addresses at OKX, Binance and Gate.
| Where | How it got there | USDT |
|---|---|---|
| OKX | Two OKX deposit addresses, TMLWVq…oQQF (via a busy wallet) and TTQgHQ…tS39 | 5,461,300 |
| Binance | Binance deposit addresses THkMta…iYyA and TF6tAo…yoeu; 158,728.50 USDT came back out | 2,772,797 |
| Gate | Gate wallet TBA6Cy…SqPt, four transfers | 1,392,200 |
Binance sent about 159,000 USDT back out to one of the thief's wallets, which looks like a withdrawal from the account the thief had just paid into. Exchange accounts come with names and IDs, so these deposits are where investigators can reach a person.
Another $4.1M went into busy wallets that hundreds of other people pay into, most of it to a single wallet. We could not tell who runs them. A little over $100k left TRON through the USDT0 and Bridgers bridges.
At the time of writing, $2.28M was still sitting in seven wallets on the thief's side. Around noon UTC on 22 October the thief moved three of those balances to three new wallets. None of it went to an exchange. Tether, the company that issues USDT, can freeze USDT on any TRON address, and it froze millions within hours in the Ledger CryptoBilis theft. It had frozen none of these.
| Wallet | Holds (USDT) |
|---|---|
| TQPyFb2HodpR9WYRidAye1V2NzJXKNHS1V | 719,995 |
| TBSCauarNdfPh7NuKmDwERcp1gAvYQkr5W | 664,978 |
| TWdVwEJCNZZ3JEh4dv98DoziCaeXYuSfdE | 498,483 |
| THrBCA8MGJpQF8guWWSVf4KfBgVatMMYHJ | 345,598 |
| TVK3dRqe9Aqfcdxvp9fWScAMdGmDBHyG6L | 20,000 |
| TH5kFHYHzDQVWHs85hVhBM7VfFmet7UfpG | 20,000 |
| TTb34rZMrTi3gHNKeFLg1qaaTqXsdyG48v | 9,956 |
| Total | 2,279,010 |
07 · The claimsWhat the record says about each claim
Here is each public claim set against the chain. The posts are CoinDCX's statement, Gupta's reply, Darcy's follow-up and ZachXBT's reply to CoinDCX.
The wallets' age is the easiest claim to test. CoinDCX says they were created in January 2025. Most were in use long before that, and none started that month. Three deposit addresses got their first deposit after the July 2025 hack, and CoinDCX swept them like any other.
| Claim | What the record shows | Verdict |
|---|---|---|
| Statement: the addresses "have not been used by CoinDCX since" July 2025 | The exchange moved customer deposits out of all 35 small drained addresses between 1 September and 21 October 2026, and sent the money on to its treasury. | Not true |
| Statement: the addresses were created in January 2025 | The hot wallet TFLx… was first funded in October 2023. 26 of the 40 drained wallets were in use before 2025, and none started in January 2025. | Not true |
| Gupta: no current address sent money to these old addresses | Treasury wallets sent 14,519 TRX to TFLx… between April and August 2026. | Not true |
| Statement: the addresses were compromised in July 2025 | No theft from them shows up in July 2025, and $15.82M sat in one of them for seven months untouched. | Not supported |
| Statement: users' funds are safe | The drained money sat in the exchange's deposit addresses. Whether it had been credited to users is not visible on chain. | Open |
| Darcy: TFLx… kept handing out 15 TRX after the hack | It sent 276 of them from August to the morning of the theft, and each was followed by a deposit move. | True |
| Darcy: Binance got 2,020,943 USDT, Gate 1,392,199 | We count 2,020,943 and 1,392,200 on those routes. Another 761,854 reached a third Binance deposit address at 09:35 UTC. | True |
| ZachXBT: TQKJQr… was in use for 10 months after July 2025 | Deposits were moved out of it until 4 May 2026. The 88 deposits left behind add up to the stolen amount. | True |
Darcy's follow-up also asked whether CoinDCX had taken its users' money itself. Nothing in the record points that way. None of the stolen USDT went back to a CoinDCX wallet; it went through new wallets, in round amounts, to other exchanges, which is how thieves usually cash out.
08 · Is CoinDCX safe?What this means for CoinDCX users
CoinDCX says users' funds are safe and trading goes on as usual. The TRON record can neither confirm nor rule that out. The record shows wallets. Customer balances sit in the exchange's own books. We only checked TRON.
What the record does show is that keys to wallets the exchange was still using ended up with someone else. It also shows that CoinDCX's first answer did not match its own wallets' history. In July 2025 CoinDCX said it would cover a $44M loss from its treasury. This time it has not yet said whether the drained deposits were credited, or when it last used these keys. Both answers sit in its own records.
If you sent USDT on TRON to CoinDCX and it never showed up, contact the exchange's support team. Give them the transaction hash.
09 · How we traced itMethod and limits
We read every USDT and TRX transfer into and out of the thief's first address. For each wallet that paid it, we read its history back to 2023, and matched each fee top-up to the deposit move that followed it. We then followed the money forward, step by step, until it reached an exchange, a bridge, or a wallet that still holds it. A separate review checked each claim from scratch on a second copy of the data, and its corrections are in this version.
The transfers come from Bitquery's TRON data. The full history is also sold as files on the Bitquery Data Store, as TRON and TRON transfers datasets. Any wallet in this story can be followed with the Bitquery MCP, which lets you ask an AI assistant where a wallet's money went. We traced earlier thefts the same way, including the NGRAVE LIQUID theft and the Bitget hack, and followed a $110M laundering circuit that ran through the biggest exchanges.
Balances were read at 12:15 UTC on 22 October. The thief's wallets can move at any time.
The record shows which wallets moved money and when. It does not show who signed each transfer, how the keys were taken, or whether the exchange had credited the drained deposits to customer accounts.
We call a wallet CoinDCX's when Bitquery's address labels say so and its behaviour fits: deposit addresses that pass deposits to a CoinDCX hot wallet, and a hot wallet that pays CoinDCX treasury wallets. The treasury wallet TQTKhx… carries no label; we link it to CoinDCX through its transfers.
The 80 TRX passed on from TQKJQr… at 15:34:57 matches how the exchange's system handles TRX deposits on other addresses, but it could also have been a test by the thief. We do not lean on it.
Two of the first wallets the money reached were already in use before the theft: a Binance deposit address and a busy wallet with hundreds of senders. Their totals can mix stolen money with other money.
Busy wallets that took $4.13M have no labels and no memos, so we do not say who runs them.
We searched for Huione and Xinbi labels on about 100 wallets downstream and found none. That does not rule out a link further along.
10 · The addressesWhere to look
These are the main addresses in this story. All are on TRON.
| Role | Address |
|---|---|
| Thief's first address | TAg6SZ1HhgVVjUaKY1paQoFBUS2JFrg5bT |
| Deposit address that held $15.82M | TQKJQrWok6fsBqZi3mkLkL6qX4YEgjqWUy |
| Hot wallet that paid the fees | TFLxNHunhEizmeEdiMyA3r2XGLSKaEznGd |
| Hot wallet, idle since 2023 | TM5r1bNJ2TjZwfS757tPPtr84MwtEjL9qN |
| Hot wallet that collects deposits | TU7BbAsb8t371eMijQeiGXsiLvY1vZbsFs |
| CoinDCX treasury | TU1GiqjrMuus4kDRD5VQgAXRNUH1D2Whod |
| CoinDCX treasury | TQTKnUuM6uJSM6gL5hA5JcGxRVgitNQtNh |
| Depositor of the $15.82M | TSC5MzYDNqtp3HDpqCNpTAs5pnT7wt4Hrd |
| Split wallet, took $7.14M | TMJMTCvtPgMRQmLBYUTmdwfEozoveccUjq |
| Split wallet, took $4.00M | TFaHkHcMGWLnnBCaGVpHBHufb1DNNHbadh |
| Split wallet, took $3.00M | TUNxeav4BWVoFGGaE97ygHkKYdKLJTHkbU |
Follow the CoinDCX money in plain English
Every transfer in this story comes from Bitquery's TRON data. The Bitquery MCP server puts that data behind an AI assistant, so you can ask where a wallet's money went, or which labels an address carries, without writing a query. The full history is also sold as files on the Bitquery Data Store, as TRON blocks and TRON transfers.
This article is provided for informational and educational purposes only and reflects analysis of publicly available on-chain data as of the dates indicated. It does not constitute legal, financial, compliance, or investment advice, and nothing in it is a recommendation to buy, sell, hold or withdraw any token or asset, or to use or avoid any exchange.
The findings describe transfers and balances observed on TRON between March 2025 and 22 October 2026. Attributions come from Bitquery's address labels and from on-chain behaviour; they may be incomplete or incorrect and may be revised as more data becomes available.
References to CoinDCX, Binance, OKX, Gate, Tether or any other named company, service or person describe what the public record shows about addresses and transactions linked to them, and what those parties have said in public. They are not statements about any party's intent, security practices, solvency or conduct, and nothing here asserts that any named party acted unlawfully or negligently. The wallets that received the drained funds are described by their behaviour and attributed to nobody.
Nothing herein should be relied upon as a definitive determination of fact. Readers should conduct their own independent verification before taking any action. The authors and publisher accept no liability for any loss or damage arising from reliance on this material. All trademarks and company names are the property of their respective owners.
Reported by Gaurav Agarwal for Bitquery Research, with AI tools; every figure was checked against the raw data.
FAQ
Was CoinDCX hacked in October 2026?
On 21 October a thief took about $16M in USDT from CoinDCX wallets on TRON. CoinDCX says its wallets were not breached and that the drained addresses were old ones it stopped using after July 2025. The record shows the exchange's own system moving deposits through those wallets on the morning of the theft.
How much was stolen from CoinDCX?
About $16 million in USDT, plus a few thousand TRX. Almost all of it came from a single address holding deposits that had never been moved on.
Is CoinDCX safe?
CoinDCX says users' funds are safe and trading continues. The theft hit TRON wallets that the exchange was still using. CoinDCX has not said whether the drained deposits had been credited to the customer who made them.
Where did the stolen USDT go?
About 60% reached deposit addresses at OKX, Binance and Gate within a day. About a quarter went into busy wallets with unknown owners, and $2.28M was still in the thief's wallets at the time of writing.
Were these wallets compromised in the July 2025 CoinDCX hack?
CoinDCX says so. The record shows no theft from them at the time of that hack. The exchange kept moving deposits through them until the day of the theft, and the drained $15.8M sat in one of them for seven months first.
Can Tether freeze the stolen USDT?
Yes. Tether can freeze USDT on any TRON address. At the time of writing it had not frozen any of the wallets that held the stolen USDT.