Does your ledger add up — and what is the gap costing you?

A missing exchange export does not make a crypto tax tool fail. It makes it produce a smaller, confident, wrong answer: coins appear from nowhere, there is no cost to subtract, and the gain comes out too big. Every scan we run says, for free, exactly how many dollars of your gain exist only because a cost record is missing — and which file would make them go away.

THE SAME LEDGER, READ TWO WAYS
WALLET FILE ONLY
$60,000

1 BTC arrives from nowhere and is sold for $60,000. No purchase behind it, so no cost to subtract. The whole $60,000 reads as gain, the scan completes without a single error, and nothing about the output looks wrong.

WITH THE EXCHANGE EXPORT ADDED
$40,000

The withdrawal matches the deposit, the transfer is not a taxable event, and the original $20,000 purchase carries across the move. Same coins, same sale, $20,000 less gain — and the difference was one file.

This is not a hypothetical shape. It is the exact failure a blank-basis 1099-DA commits at scale, which is why a tool built to correct it must never commit it quietly itself.

What the check reports

The money, not a flag

Every disposal that draws on coins with no acquisition record contributes its proceeds — pro rata, so a half-documented sale counts as half exposed rather than wholly exposed. The total is the gain that would vanish if the missing history turned up. It is computed, not estimated.

Which asset, which wallet, which date

A number alone is not actionable. The report names the asset, the venue or address the coins were disposed from, the share of that asset's proceeds affected, and the date of the first sale that hit the gap — so you know which export to go and find and roughly how far back it needs to reach.

Coins you hold but cannot explain

Listed separately, because they cost nothing this year and everything in the year you sell. Finding the file now is far easier than finding it after the exchange that holds it has shut down.

Transfers still outstanding

A withdrawal we could not match to any deposit you gave us is never treated as a sale — taxing your own movement is the exact error this product exists to correct. It is counted here so you can see that one end of the move is still in a file you have not added.

Nothing filled in, ever

A guessed cost understates your tax and hides the gap that produced it, and you would not learn otherwise until somebody with subpoena power did. The number moves when a real record arrives and at no other time.

Why not a balance-discrepancy indicator?

Because balances drift for reasons that change your tax by nothing at all — staking rebases, dust, unsolicited airdrops, rounding at eighteen decimals — so an indicator built on them cries wolf, and an alert nobody acts on is worse than no alert. It also stays silent in the case that actually costs you: an exchange you closed years ago has a balance of zero today and reports no discrepancy whatsoever, while the coins that left it are the ones with no cost behind them. Measuring the money rather than the balance catches that and skips the noise.

Run it on your own data

Free, no account, and the answer is visible before you pay for anything. Add a CSV export, or paste a wallet address — the check runs on whatever you give it and gets more useful with every source you add.

Check my ledger →

Questions

What exactly does the check measure?

The dollars of gain in your ledger that exist only because we could not find where some coins came from. When a disposal draws on coins with no acquisition record, the engine gives those coins a zero cost — the conservative default — and the proceeds attached to them become gain with nothing subtracted. That figure is exact, not an estimate: it is the proceeds resting on invented lots. Supply the missing history and it falls, usually to zero.

Why not just compare my balance to what the exchange says?

Because a balance difference tells you two numbers disagree without telling you what the disagreement costs, and a number you cannot spend is a number nobody acts on. It is also frequently wrong in a way that wastes your time: balances drift for staking rebases, dust, airdrops and rounding, none of which change your tax by a cent. We measure the thing that changes your tax.

Does a gap mean the scan failed?

No, and that is exactly the danger. A missing export produces no error at all. It produces a smaller ledger that computes cleanly and reports a gain that is too big, because the cost side of the story is the part that went missing. That is the same shape as a blank-basis 1099-DA — the failure this product exists to correct — so it is the one failure we cannot quietly commit ourselves.

Why don't you just estimate the missing cost?

Because a guessed basis understates your tax and hides the gap that produced it, and you would never find out until somebody with subpoena power did. Nothing is filled in. A coin with no acquisition record keeps a zero basis, the report says what that costs, and the number moves only when a real record arrives.

What if the coins were mined, earned or airdropped rather than bought?

Then the cost is not missing — it is income you recognised at fair value on the day you received it, and that value becomes your basis. Tell the decision card that and the basis is set from the fair market value at receipt, with the price source cited. The gap closes without any file.

I am holding coins with no history but haven't sold them. Does that matter?

Not to this year's tax, and very much to the year you sell. They are listed separately for that reason: they cost nothing today and everything on the day they are disposed of. The export that explains them is much easier to obtain now than after the exchange holding it shuts down — see the <a class="cite" href="/graveyard">Exchange Graveyard</a> for how often that happens.

Is this behind the paywall?

No. It is on the free scan, before you create an account or pay anything. Charging for the number that tells you whether the rest of the answer can be trusted would be selling you the doubt.

What about transfers between my own wallets?

Those are matched, not taxed. Where a withdrawal from one source can be matched to a deposit into another, the basis carries across and there is no disposal. What the report counts is the ones that could not be matched, which usually means one end of the move is in a file you have not added yet.