InvestigationExchange hackBitgetUpdated Sep 25

Bitget hack: how $352M left, and where it is now

It started with a 93 TRX test on Tron. We checked all 21 transfers out of Bitget, each on its own chain, from that first test to the last, and followed the money into the next morning.

Live story. Balances below are as of 10:40 UTC on September 25, 2026. Bitget said a full incident report would follow within 24 hours; it had not been published when this went live. We will add dated lines here as the money moves.
Update, September 25, 10:40 UTC: The attacker has now moved almost all the stolen TRX and BNB, and part of it has already been swapped into Bitcoin. Sections 06 and 07 show the routes.
At a glance
On the evening of September 24, 2026, wallets belonging to the crypto exchange Bitget paid out about $352 million to an attacker, on eight blockchains. Most of it went in two bursts that hit five chains within seconds, and the transfers were signed by Bitget's own wallets with settings its customer withdrawals never use. The exchange says it spotted the theft as it began, yet money kept leaving for almost three hours. The attacker sold stablecoins for ETH within minutes, moved money from other chains to Ethereum, and has since begun turning stolen BNB into Bitcoin. By the next morning, most of the haul had not moved.
$352M
Taken, by Bitget's own figure
8
Blockchains the money left on
2h52m
From Bitget's stated detection to the last transfer out
68,465 ETH
Still in the attacker's Ethereum wallets, as of 10:40 UTC on September 25
Key findingsEach line has its own share link
  1. $352M

    Bitget's own figure. Priced in the hour of each transfer, the 21 transfers we traced come to $357.36M; the gap is price timing.

  2. 15 sec

    Bitget wallets paid the attacker on five chains in 15 seconds at 19:01 UTC, then on five chains in 9 seconds at 19:16.

  3. 2h52m

    From 18:31 UTC, when Bitget says it detected the theft, to the last transfer out at 21:23. Money kept leaving after Bitget moved hot wallet funds to reserves at 20:40.

  4. 7

    Theft transfers from Bitget's Ethereum hot wallets used fixed gas limits of 100,000 or 200,000. Customer withdrawals from those wallets never did that week.

  5. 68,465 ETH

    Still in nine Ethereum wallets as of 10:40 UTC on September 25, with 102.43 million XRP in six accounts. Stolen BNB has bought 50.27 BTC through THORChain.

01 · The first burstFive chains in fifteen seconds

At 19:01 UTC on September 24, 2026, Bitget's wallets started paying a stranger on five blockchains at once. First, 19.67 million USDT0, Tether's stablecoin on Arbitrum, left for the same address that had taken a small test transfer on Ethereum half an hour earlier. Within 15 seconds, USDC and a gold token had left on Ethereum, ETH on Optimism and Base, and XRP on the XRP Ledger. This was the heart of the Bitget hack. On every chain that shares Ethereum's address format, the money went to one address.

Bitget is a centralized exchange, or CEX. Its customers deposit coins, trade them and withdraw them. Like every CEX, it keeps some of that money in hot wallets, which pay out withdrawals on their own, day and night. The rest sits in warm and cold wallets that move less often. That evening, some of the hot and warm wallets paid the attacker instead.

Bitget puts the loss at about $352 million. We went to the chains to see how it left and where it went. Bitquery indexes every transfer on the chains involved, so we could pull out each one from a Bitget wallet to the attacker and check it on its own chain. We found 21 transfers on eight chains in under three hours. Then we followed the money into the next morning. It is still moving, so every balance below comes with the time we checked it.

02 · The timelineTwo bursts, then three more waves

The timelineSeptember 24, 2026, UTC
Twenty-one transfers out of Bitget, September 24, 2026Each dot is one transfer to the attacker, sized by its dollar value at the time. Hollow dots are small tests. UTC.EthereumXRP LedgerArbitrumOptimismBaseBSCAvalancheTron20:40 Bitget hot wallets move balances to reserve wallets21:30 CEO posts the first notice18:3019:0019:3020:0020:3021:0021:3018:31 Bitget says it detected the theftFirst burst: five chains in 15 secondsSecond burst: five chains in 9 seconds19:01:2019:01:2319:01:2319:01:2919:01:3219:01:3319:01:3519:16:1419:16:1519:16:1819:16:2019:16:23ArbitrumEthereumEthereumOptimismXRP LedgerBaseEthereumBSCAvalancheTronXRP LedgerEthereum19.67M USDT012.85M USDC3,000.32 XAUt5,737.68 ETH2.25M XRP1,555.32 ETH7,130.86 ETH12,719.46 BNB821,011.97 AVAX20.59M TRX91.42M XRP13,965.93 ETH$19.7M$12.9M$12.8M$15.4M$3.4M$4.2M$19.2M$9.9M$8.6M$7.0M$140.1M$37.5M
Every transfer from a Bitget wallet to the attacker. The two panels under the chart list each burst, second by second. Wallet roles come from our labels.

The first transfers were tests: 93 TRX on Tron and 0.84 ETH on Ethereum, eleven seconds apart. Bitget later gave that same minute as the moment its systems spotted the theft. Half an hour on, a much larger sum of USDT left on Ethereum, and then came the two bursts. The second one drew on a warm wallet on the XRP Ledger, which alone sent 91.4 million XRP.

That was not the end. Two more Ethereum transfers followed about an hour later, twelve seconds apart. Then Bitget's hot wallets on BNB Chain and Ethereum sent hundreds of balances into Bitget's reserve wallets within a few minutes. It looks like an emergency sweep, and it did not stop the theft. Fifteen minutes later a hot wallet on Avalanche sent the attacker 8.2 million USDC, and over the next half hour the XRP warm wallet sent 9.3 million XRP and an Ethereum hot wallet sent 223.2 ETH. Bitget's CEO posted the first public notice seven minutes after that.

03 · The haul$352M across eight chains

By the time that notice went up, the money was gone.

What was takenBy chain
What left Bitget, chain by chainDollar value at prices in the hour of each transfer. Bitget puts the loss at $351.6 million; the gap is price timing.XRP LedgerEthereumArbitrumAvalancheOptimismBSCTronBase$157.8M · XRP$126.6M · ETH, USDT, USDC, XAUt$19.7M · USDT0$16.8M · AVAX, USDC$15.4M · ETH$9.9M · BNB$7.0M · TRX$4.2M · ETHTotal $357.36M across 8 chains
Values at prices in the hour of each transfer, from Bitquery's price data. XRP at the price in the five minutes around each transfer.

XRP was the largest single asset, a bit under half of the total. The Ethereum chain came second, with ETH, two stablecoins and the gold token XAUt. Priced in the hour each transfer left, our total comes to a little more than Bitget's figure. The gap is down to the prices used. Bitget's CEO put the count at 19 transfers. We count 21, three of them small tests.

Our labels mark every paying wallet as Bitget's. One of them, 0xffa8…cd54, is marked as a cold wallet in our labels and by public trackers. But it sends routine transfers most days and tops up the hot wallets, which is how a warm wallet behaves: the middle layer, between hot wallets that pay customers and cold ones that rarely move. Bitget says its cold wallets were not touched.

04 · The fingerprintSigned by Bitget's own wallets

How does that much leave an exchange in one evening? The transfers themselves hold part of the answer.

Each one was an ordinary transaction, signed by the Bitget wallet it left from, in the same queue as customer payouts. On Ethereum, a theft sits between two of them, with the next nonce and the same fee settings. The XRP transfers carry the same signing key and fee as a routine Bitget move made that morning.

One setting gives them away. Every Ethereum transaction sets a gas limit, the most it may spend on fees. Bitget's hot wallets use the same limit for almost every ETH payout and a fresh estimate for each token payout. Every theft used a fixed round number instead.

The fingerprintGas limits, Ethereum hot wallets
The fingerprint: gas limits on Bitget's two Ethereum hot walletsEvery transaction sent by 0x1ab4…8f23 and 0x5bdf…f7ef, 17:00 to 22:00 UTC on September 24.Grey: every other transaction, mostly customer withdrawals. Pink: transfers to the attacker.0100,000200,000300,00017:0018:0019:0020:0021:0022:004,000,000 (failed transfer to a Bitget wallet, off scale)Customer ETH withdrawals: about 63,00020:41 sweep to reserve walletsSix transfers to the attacker: 200,000USDT to the attacker: 100,000
In the eight days to September 24, the two hot wallets sent 35,678 transactions. Customer ETH withdrawals used about 63,000. Only the seven transfers to the attacker used 100,000 or 200,000. Bitget's warm wallet uses fixed limits like these for its own internal transfers.

Theft transfers on the other EVM chains used fixed limits too. That fits what Bitget's CEO, Gracy Chen, said later. In a live Q&A, as Cointelegraph reported, she said attackers broke into a backend system of the wallet service and faked transfer orders. She said those orders then went through Bitget's normal signing process, and that no private keys leaked. The chain cannot show what happened inside Bitget. It does show transfers that look like Bitget's own internal moves rather than customer payouts, signed by Bitget's wallets.

05 · The first hoursWhere the money went first

Once the money landed, the attacker moved fast, starting with the coins that could be frozen.

Where the money wentFrom Bitget to September 25
rwNhef…CTck0x770b…63ee0xd2c2…f8990x600c…84b20x9fa3…4fa00xa6bf…b2720xfd5e…9e540xed5a…1a510xdc29…dc630x52f0…d2840x7c96…3e1c0xa6dd…55450x770b…63ee0xe410…d9460x770b…63ee0x94a4…5da00x770b…63ee0x469a…25dc0x770b…63ee0xe07b…7d570xe07b…7d570xa6dd…5545TBWNgu…YwKDTBWNgu…YwKDWhere the money went, wallet by walletEvery arrow is money we followed on chain, as of 10:40 UTC on September 25. Click an address to open it.Stolen, and first attacker walletNext hopCollected inWhere it sitsXRP Ledger · 102.98M XRP102.43M XRPEthereum · 24,597 ETHEight wallets · 68,295 ETHArbitrum · 19.67M USDT0Optimism · 5,738 ETHBase · 1,555 ETHBNB Chain · 12,719 BNBTHORChain50.27 BTCTron · 20.59M TRX12 wallets, from 08:25 UTC0.72M TRX still inin six attacker accounts0.55M XRP later moved on from one+ 34.75M USDT, 12.85M USDC,3,000 XAUtnone has sent a transactionsold the USDT, USDC andXAUt for ETHtook in 43,698 ETHpaid out 43,698 ETHto five walletsAvalanche · 821K AVAX,8.20M USDCon Ethereum: USDC overCCTP, ETH over Acrosson Ethereum, via Stargate,Across, deBridge, CCTPon Ethereum, viaStargate and Relaythen 0x7c96, 10,712 BNB toon Ethereum, via Across andMayan; holds 170 ETH and218,023 USDT; Circle froze99,990 USDCthen 0x1508…cfd3 and achain of new wallets; 10 ofthem swapped on THORChain36 swaps from 05:36UTC, Sep 25; BNB isnet of refundspaid to 13 Bitcoin addresses;2 swaps not yet paidone was active before thehack; the rest are new6.21M USDT bridged toEthereum; part went on toTHORChain and ChainflipAmounts rounded. The eight wallets plus 170 ETH in 0xe07b…7d57 make the 68,465 ETH in section 07. Addresses open in Bitquery's explorer.The same addresses 0x770b, 0x7c96, 0xe07b and 0xa6dd appear on more than one chain: the attacker reused them.split into five new accounts24,596 ETH, all of it but gas money, straight to three walletshub on Ethereum10,00010,00010,00010,00010,00010,0004,5963,698all tokens22,613 ETH43,698 ETHbridged12,558 ETHbridged5,629 ETHbridged1,542 ETHbridged1,358 ETH5,897 BNB5,683 BNBBTC19.87M TRXswapped, bridged
Each arrow is a transfer, swap or bridge we followed on chain, with its amount. Click an address to open it in Bitquery's explorer, or follow the attacker's wallets with the Bitquery MCP.

Tether and Circle, which issue USDT and USDC, can freeze tokens in a wallet. Here the tokens did not sit still long enough. The USDT was passed on eight minutes after it arrived and had all been sold for ETH within twenty minutes. The USDC and the gold token went the same way within about half an hour. Dumping 3,000 XAUt at once lined up with the gold token dipping more than 2% at its low that hour.

Money on Arbitrum, Avalanche, Optimism and Base came to Ethereum next. Most of it was sold for USDC on its home chain and crossed over Circle's CCTP bridge. The rest crossed as ETH through Stargate, Across, deBridge and Relay. The swaps ran through DEX aggregators, MetaMask Swaps among them. Most of that ETH met in one hub wallet on Ethereum, which passed 43,698 ETH on to five new wallets. By the next morning the ETH sat in nine wallets. Eight of them have never sent a single transaction.

06 · Into BitcoinTurning BNB into Bitcoin

The next morning, the stolen BNB started moving too. THORChain is a cross-chain DEX: anyone can swap a coin on one chain for a coin on another, and it needs no account. The attacker's wallets on BNB Chain sent it BNB again and again, and each swap named a Bitcoin address to be paid. By 10:40 UTC that morning, THORChain had paid 50.27 BTC for that BNB, and more swaps were still in flight.

The Bitcoin side is messier. The same Bitcoin addresses also take a second stream: USDT from Tron, some of it routed through the attacker's own Ethereum wallets. Both streams meet in one Bitcoin wallet, so not all the Bitcoin in it is Bitget's money.

The Tron end of that stream has its own twist. One of the wallets feeding it was getting money five hours before the hack began, and it did not come out of nowhere. It is one of a set of Tron wallets that sprang up two days earlier. Each new one was topped up with TRX for fees by an older one, and the first USDT into the set came out of KuCoin.

Before the hack, that same wallet took in USDT from five older wallets. One of them had just taken 200,000 USDT out of Bybit and passed it on 15 minutes later. It looks like a desk that swaps money for several clients, and KuCoin and Bybit can see which of their accounts the money came from. The next morning, the attacker's Tron address sent that wallet 5.57 million stolen TRX, which puts it on the attacker's route. Whose money came in before the hack, and who runs these wallets, we cannot say.

07 · Where it is nowMost of it has not moved

By the next morning, the biggest piles were sitting still.

WhereHeldWorth nowStatus
Ethereum, nine wallets68,465.05 ETH$185.6MEight wallets have never sent a transaction
XRP Ledger, six accounts102,430,206.28 XRP$159.2M546,000 XRP moved on
Tron, first address722,719.01 TRX$244K19.87 million TRX moved out from 08:25 UTC
BSC, 51 wallets0 BNB$113Almost all of the 12,719 BNB already swapped, bridged or sent to THORChain
Bitcoin, via THORChain50.27 BTC$4.3MPaid for stolen BNB in 34 swaps; 2 more in flight
Frozen by Circle99,989.91 USDC$100KFrozen at 05:00 UTC
Not frozen when we checked218,022.97 USDT$218KSame wallet as the frozen USDC; checked 10:40 UTC
As of 10:40 UTC, September 25, 2026. Balances read from public nodes and Bitquery's data; values at prices for the 10:00 UTC hour. The BSC and Bitcoin lines are still changing.

The ETH on Ethereum, worth about $186 million, sits in wallets that have never sent anything. On the XRP Ledger a small slice has moved on, and the rest waits in six accounts.

The TRX on Tron is another story. From 08:25 UTC the attacker started draining the Tron wallet, and by 10:40 UTC, 19.87 million TRX had gone in 21 payments, leaving 0.72 million. Most of it was swapped for USDT and bridged to Ethereum over USDT0. Some of that went straight into THORChain, to be paid out in Bitcoin, mostly to the same addresses the stolen BNB used.

Another part took the long way round. It was sold for ETH and sent through Umbra, a tool that pays out to one-time addresses. Then it was bridged to Arbitrum and straight back, and fed into Chainflip, a swap service that moves coins between chains. Every hop makes the trail longer to follow.

Very little has been frozen. Circle froze the USDC held in one attacker wallet early the next morning. Tether had not frozen the USDT in that same wallet when we last checked. Native coins such as XRP, ETH and TRX have no issuer that can freeze them. For now, the attacker still holds most of what it took, in wallets anyone can watch.

08 · What Bitget saysBitget's account

Bitget's own statements cover what the chain cannot show. Chen posted the first notice on X that evening, and the company's account followed four minutes later. Bitget says the theft reached part of its hot and warm wallets and that cold wallets stayed safe. It says customer balances are accurate and the loss falls within its User Protection Fund, which Chen said holds over $464 million.

Withdrawals were paused. The next morning, Bitget's public coin list showed withdrawals switched off for every coin on every chain, while deposits stayed open on most of them. We saw no date for turning withdrawals back on in the posts we read.

Chen also said, as Cointelegraph and CNBC reported, that some attacker IP addresses matched VPN services used by a North Korean group. She added that the link is not certain, and we did not test it. The obvious yardstick is the Bybit hack. About $1.5 billion was taken from Bybit in February 2025, and the FBI blamed North Korea five days later. Bitget's loss is about a quarter of that. For other thefts we have traced, see the Aquifer hack, the SecondFi drain and the Tron laundering circuit.

09 · How we did thisMethod and limits

We started from Bitget's wallets in our labels and the addresses that received the stolen money, and pulled every transfer between them. On Ethereum we also checked every large transfer out of Bitget that evening, to make sure none went to another new wallet. We checked each of the 21 on its own chain, then followed the money wallet by wallet, stopping at exchanges, bridges and swap services. Prices are Bitquery's hourly prices.

Three limits apply. Bitget wallets missing from our labels would be missing here. We cannot say who controls the Bitcoin wallets at the end of the THORChain swaps. And the money is still moving, so every balance is tied to the time we checked it.

10 · The recordEvery transfer out of Bitget

UTCChainFrom Bitget walletAmountTransaction
18:31:00TronTJ7hhY…JSdb93.00 TRX (test)698c02…ec4b
18:31:11Ethereum0x1ab4…8f230.84 ETH (test)0xc195…7be6
18:58:59Ethereum0x1ab4…8f2334.75M USDT0xa3ae…9ce5
19:01:20Arbitrum0x1ab4…8f2319.67M USDT00xd032…84e3
19:01:23Ethereum0x1ab4…8f2312.85M USDC0x4090…d7ae
19:01:23Ethereum0x5bdf…f7ef3,000.32 XAUt0xa976…9d29
19:01:29Optimism0x5bdf…f7ef5,737.68 ETH0xf1a2…cc2c
19:01:32XRP LedgerrGDreB…GzFn2.25M XRP9926E4…25F4
19:01:33Base0x97b9…86891,555.32 ETH0x7692…f5c8
19:01:35Ethereum0x1ab4…8f237,130.86 ETH0x67a7…930c
19:03:23Ethereum0xffa8…cd540.65 ETH (test)0x37fa…2ebe
19:16:14BSC0xffa8…cd5412,719.46 BNB0xd456…6903
19:16:15Avalanche0xffa8…cd54821,011.97 AVAX0x9865…ddd6
19:16:18TronTJxe1M…UGx520.59M TRXce9b36…d13f
19:16:20XRP LedgerrwTTsH…XLEf91.42M XRP8DF2EC…4195
19:16:23Ethereum0xffa8…cd5413,965.93 ETH0x8469…0bfa
20:09:11Ethereum0x1ab4…8f231,879.20 ETH0xdd07…f606
20:09:23Ethereum0xffa8…cd541,395.90 ETH0x0c63…e97e
20:55:07Avalanche0x1ab4…8f238.20M USDC0x4d2d…4499
21:19:21XRP LedgerrwTTsH…XLEf9.31M XRP41EFBB…D42A
21:23:11Ethereum0x1ab4…8f23223.20 ETH0x2305…9afb
September 24, 2026. Every transfer checked on a public node for its chain. Avalanche transactions are shown without a link.

FAQ

How much was stolen in the Bitget hack?

Bitget puts the loss at about $351.6 million. Our own count of the 21 transfers, priced in the hour each one left, comes to a little more. The largest part was XRP, a bit under half of the total.

Is Bitget safe? Are customer funds covered?

Bitget says customer balances are accurate and that the loss falls within its User Protection Fund, which its CEO said holds over $464 million. Withdrawals were paused after the theft, and the next morning its public coin list showed them off for every coin. These are Bitget's claims; we have not tested them.

Was North Korea behind the Bitget hack?

Bitget's CEO said some attacker IP addresses matched VPN services used by a North Korean group, and that the link is not certain. We did not test that claim.

Where is the stolen money now?

Most of it had not moved when we last checked. The ETH sat in nine Ethereum wallets and the XRP in six accounts. The stolen TRX and BNB had mostly moved on, and part of it was swapped into Bitcoin. Circle had frozen one wallet's USDC. The table in section 07 has the amounts and the time.

How does the Bitget hack compare to the Bybit hack?

About $1.5 billion was taken from Bybit in February 2025, and the FBI blamed North Korea. That makes Bitget's loss roughly a quarter the size of Bybit's.

Run it yourself

Follow the Bitget money in plain English

Every transfer above can be checked in data anyone can query. The Bitquery MCP server puts that data behind an AI assistant, so you can ask where a wallet sent its money, what a bridge paid out, or whether a stolen balance has moved, without writing the query yourself.

Follow a wallet across Ethereum, BNB Chain, Arbitrum, Base, Optimism and TronSee every transfer in and out of an address, with labelsWatch whether a stolen balance movesPrice any token at the hour of a transfer
Explore Bitquery MCP →Figures measured September 24 and 25, 2026, against Bitquery's data and public nodes for each chain; holdings as of 10:40 UTC on September 25. Written by Bitquery Research with AI tools; every figure was checked against the raw data.
Scope, limits and attribution

This article is provided for informational and educational purposes only and reflects analysis of publicly available on-chain data as of the times stated. It does not constitute legal, financial, compliance, or investment advice.

The findings describe transfers from wallets identified as Bitget's by our labels on eight blockchains, and the onward movement of that money, measured from on-chain data and checked on public nodes. Balances change; every holding is stated with the time it was read.

References to Bitget, THORChain, Circle, Tether, MetaMask and any other party describe on-chain activity or public statements. Wallets are identified by address only; nothing here states who controls them. Statements attributed to Bitget or its staff come from the linked sources.

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 the use of this article.