You open your crypto tax report and there it is: a five-figure gain on coins you're pretty sure you never sold at a profit. Maybe you didn't sell them at all — you just moved them from an exchange to a hardware wallet. But the software says you owe tax on the full amount.

That's a phantom gain: a profit that exists in the report but never happened in your life. It is one of the most common and most expensive failure modes in crypto tax software, and it almost always traces back to the same root cause — a $0 cost basis.

This is not tax advice. It's an explanation of how the software behaves and why, with links to primary sources. For decisions about your own return, talk to a tax professional.

What a phantom gain actually is

Your taxable gain on any sale is sale price minus cost basis — what you paid to acquire the asset. Sell 1 ETH for $3,000 that you bought for $2,400, and your gain is $600.

Now suppose the software never saw the purchase. It watched 1 ETH arrive in your wallet from an address it doesn't recognize, and later watched you sell it for $3,000. With no acquisition record, most tax tools do the conservative thing and assign a cost basis of zero — Koinly, for example, documents this behavior explicitly, and it's the standard approach across the category. The arithmetic becomes $3,000 minus $0.

You made $600. The report says $3,000. The extra $2,400 is a phantom gain, and if you file the report as-is, you pay real tax on it.

There's a second cost hiding underneath the obvious one. When the acquisition record is lost, the acquisition date is lost with it. Coins you held for three years can show up as acquired the moment they landed in the new wallet — which can flip a long-term gain into a short-term one taxed at a higher rate. In one Koinly forum thread from April 2026, a user who moved BTC through a Trezor before selling on Kraken hit exactly this: the broken link zeroed the basis and put long-term coins at risk of short-term treatment.

None of this is the software being malicious. A $0 basis is the honest answer to a missing record. The problem is that the records go missing constantly.

The five ways your cost basis disappears

Nearly every phantom gain starts with one of five events.

1. Wallet-to-wallet transfers

The most common trigger by far. You move coins between your own wallets — exchange to hardware wallet, hot wallet to cold storage. Economically, nothing happened: same owner, same coins. But on the record, it looks like coins leaving one place and arriving at another, and unless your tax tool pairs the two sides as a transfer, the receiving wallet has coins with no purchase history.

This is not niche behavior. In Coinbase and CoinTracker's 2026 Crypto Tax Readiness Report, a survey of 3,000 US crypto users, 71% said they had moved crypto between wallets or platforms. Every one of those moves is a chance for basis to fall through the cracks.

2. Bridges and cross-chain moves

Bridge ETH to Arbitrum or USDC to Solana, and the on-chain record usually shows an asset vanishing on one chain and a different asset appearing from nowhere on another. No transaction says "these are the same funds." Unless the tool links both legs, the destination chain's coins are born with no history — $0 basis by definition.

3. Exchange withdrawals to self-custody

A special case of the transfer problem, but worth naming separately because it's where the biggest holding periods get destroyed. The exchange side of the story lives in a CSV or an API while the wallet side lives on-chain, and if the two don't stitch together — timestamps far apart, amounts that differ by a network fee, one side imported by CSV and the other by API — the withdrawal and the deposit go unpaired. Your oldest, most appreciated coins arrive in your wallet looking freshly acquired at $0.

4. Rebase and reflection tokens

Some tokens change your balance without any transaction: rebasing tokens like AMPL or Aave's aTokens, reflection tokens that redistribute on every trade. The protocol mints coins directly into your wallet, so there is no acquisition event for the software to find. Koinly's forum has long-running threads on rebase positions where part of the balance has no origin the importer can see — and when you sell, that part sells at $0 basis.

5. API and import gaps

Sometimes the acquisition happened in full view of a connected exchange, and the data still doesn't arrive. Exchange APIs can omit transaction types or enforce hard time windows: in a May 2026 forum thread, a MEXC user found 34 of 206 transactions had lost their purchase history because the API only returned recent trades. DeFi positions are worse — a BASE liquidity-pool user reported 119 of 358 transactions missing cost basis. Every dropped acquisition is a future phantom gain.

How big can this get? A reproducible experiment

Small gaps compound into large numbers. An analysis by the crypto tax firm Summ, covering 30,000 US users, found that 57% of transactions happened on platforms outside 1099-DA reporting and estimated that broken basis chains left the average affected investor with $14,500 in overstated capital gains. The new Form 1099-DA doesn't close that gap on its own — for self-custody and transferred-in coins, Box 1g is often blank or wrong for the exact same reasons.

To see the mechanism at full scale, we ran our own experiment on the most public wallet cluster on Ethereum: vitalik.eth plus the Etherscan-tagged VB addresses and one media-documented cold wallet — five addresses, all publicly attributed. We computed realized gains on the cluster's native-ETH history twice with the same engine, data, and classifications. The only difference between the runs: whether transfers between the entity's own wallets carried their cost basis, or lost it — the $0-basis behavior you get when wallets aren't linked.

In our reproducible on-chain analysis, the run that lost basis on self-transfers reported roughly $45.0 million more in realized gains across the cluster's history through early 2023 than the run that carried basis correctly — same coins, same sales, same prices. In the 2022 tax year alone, the gap was about $20.9 million: $31.3 million of reported gains versus $10.5 million when basis traveled with the coins. In the largest single distortions, the basis-aware run showed a loss where the naive run showed a multi-million-dollar gain — the phantom gain flipping the sign of the outcome entirely.

Two honesty notes, because numbers like these deserve them. First, this is our own analysis, built entirely on public key-less APIs with a per-wallet balance tie-out as the quality gate — no private data, so the method can be rerun from scratch by anyone. Independent verification is in progress, and we present the figure as a reproducible analysis rather than an audited one. Second, the absolute gain levels are modeling artifacts (every outflow to an unattributed address is treated as a disposal, which overstates both runs equally); the number that matters is the difference between the runs, caused by exactly one thing — whether transfers preserve basis. It is not an assertion about anyone's actual tax position.

The takeaway is not the headline figure. It's that the gap scales with two things almost everyone has: transfers between your own wallets, and time between acquiring and selling.

How to check your own report for phantom gains

You don't need special tooling to find the worst of these. A manual pass takes an evening.

  1. Pull the warnings list. Every major tool flags this problem somewhere — "missing purchase history," "zero cost basis," "missing cost basis." Filter your transactions to those flags. Each one is a place where you're currently being taxed on 100% of a sale. If your tool is Koinly, we've written a full guide to its missing purchase history warning — what each cause looks like and how to fix it.

  2. Check your largest disposals first. Sort sales by proceeds and inspect the top ten. A large sale with a basis of $0, or an acquisition date that matches a transfer rather than a purchase, is a phantom gain in the making.

  3. Trace one coin end to end. Pick one asset you've moved around and follow it: purchase, withdrawal, wallet arrival, sale. At each hop, is the transfer shown as a transfer, or as an unrelated withdrawal and deposit? Unpaired legs are where basis dies.

  4. Compare gains against your own memory of the year. If the report says you realized far more profit than you believe you took, don't assume the software knows better. The Coinbase and CoinTracker survey found 76% of users knew their cost basis might need adjusting, but only 35% had ever adjusted it — that gap between suspecting and checking is where overpayment lives.

  5. Cross-check against a second source. When a college professor ran identical transaction data through five crypto tax platforms, the results ranged from a $1,516 loss to a $2,696 gain against a true answer of a $1,266 loss. Disagreement between sources doesn't tell you which is right, but it tells you where to dig.

Steps 2 and 3 are the slow ones, and they're the ones we automated. Run my free scan to have the trace done for you on your own Ethereum wallets — read-only, no sign-up, and every flagged event comes back with its tx-hash so you can check the work.

What you should not do is delete warnings or hand-edit a basis you can't document. A clean-looking report is not the same as a correct one.

Why Rev. Proc. 2024-28 makes this worse, not better

Until the end of 2024, US taxpayers could treat all their crypto as one big pool — the "universal" method — which quietly forgave a lot of transfer-tracking sloppiness. Rev. Proc. 2024-28 ended that: from January 1, 2025, cost basis must be tracked per wallet or per account, and taxpayers were expected to allocate existing basis across wallets under a safe harbor with a hard deadline.

Read that against the five causes above and the problem is obvious. Per-wallet accounting means the question is no longer "did I ever buy this coin somewhere?" but "does this specific wallet hold documented basis for this specific coin?" A transfer that loses its paperwork doesn't just confuse your software — it strands the basis in the wallet the coins left, while the wallet doing the selling shows up empty-handed at $0.

The transition has already produced casualty reports: users whose long-held coins now surface as short-term gains because one transfer went unlinked, and tool support forums filling with per-wallet migration questions since the switchover. The IRS now expects wallet-level basis hygiene, and the tools, taxpayers, and data pipelines are all catching up at once. Phantom gains are the gap between that expectation and the state of most people's records.

The good news: unlike a lot of tax problems, this one is checkable. The basis chain either connects or it doesn't, and every break is visible if you know where to look. Finding the breaks before filing season — rather than in April, or in an amended return — is the whole game.

FAQ

What are phantom gains in crypto?

Phantom gains are profits that appear in a crypto tax report but were never actually made. They typically occur when software loses track of what you originally paid for coins — most often after a wallet-to-wallet transfer, a bridge, or an incomplete exchange import — and assigns a $0 cost basis, so the entire sale amount is reported as gain instead of just the actual profit.

Why does my crypto tax software show a $0 cost basis?

A $0 cost basis means the software found a sale but never found the matching purchase. Common causes: a wallet or exchange you didn't connect, a transfer that wasn't recognized as a move between your own accounts, a bridge that broke the trail, tokens minted by rebases, or an exchange API that returned incomplete history. The software defaults to zero because it won't invent a purchase price it can't see.

Do I owe tax if I transfer crypto between my own wallets?

Moving crypto between wallets you own is not a taxable event under US rules — no sale means no gain. But if your tax software fails to recognize the movement as a self-transfer, it may treat the coins as newly acquired at $0 basis, which inflates the gain it reports when you eventually sell. The transfer itself doesn't create tax; the lost record of it does. Since 2025, per-wallet tracking under Rev. Proc. 2024-28 makes documenting these transfers more important, not less.


This is not tax advice, and none of the above is a substitute for a qualified tax professional who can look at your actual records.

If you'd rather have the breaks in your basis chain found for you before they become phantom gains on a filed return, Verilot Check reads your Ethereum wallets directly on-chain and flags every transfer between your own addresses that would otherwise be booked as a sale, with a tx-hash on every line. Free and read-only — no wallet connection, no sign-up, up to 5 wallets and 500 events per scan, Ethereum mainnet today. Run my free scan.