Guide · Method

Crypto cost basis across multiple wallets and exchanges

You've got CSVs from Binance, Coinbase, Kraken, maybe a hardware wallet and a bit of DeFi, and no clear idea how to turn that mess into one number for HMRC. The good news is the rule is simpler than the pile of files suggests: HMRC wants one combined pool per coin, not a separate sum per exchange. Here's how to pull it all together, why your exchange's own tax report gets it wrong, and the transfers that quietly trip everyone up.

MTBy Mai Thanh Tung·Last updated July 2026UK 2025/26 tax year
Quick answer

In the UK you keep one Section 104 pool for each coin that combines everything you hold of it across every wallet and exchange, using a single average cost. You do not work out a separate cost basis per exchange, and moving your own coins between your own wallets is not a taxable event. That one combined pool is exactly why an exchange's own tax report, which only sees what happened on that one exchange, usually gets your gains wrong.

If you only ever bought and sold on a single exchange, cost basis is fairly easy. The mess starts the moment you use more than one venue: a bit on Binance, some on Coinbase, a cold wallet for the coins you want to hold, maybe a DEX swap or two. Now you're staring at a folder of CSVs that all look different and don't obviously add up. The instinct is to work out the tax exchange by exchange and bolt the answers together. That instinct is wrong, and it usually makes your bill look bigger than it really is.

The one rule: one pool per coin, across everything

HMRC pools cryptoassets. For each type of coin you hold, you have a single Section 104 pool with one pooled average cost, and that pool covers allof that coin you own, no matter where it sits. Your Bitcoin on Binance, your Bitcoin on Kraken and your Bitcoin in a hardware wallet are not three separate holdings for tax; they are one pool of Bitcoin. HMRC's manual is explicit that each type of token has its own single pool, so the venue simply doesn't come into it.

The same logic runs all the way through. The same-day and 30-day matching rules also apply across your whole holding of a coin, not per account. If you sell some ETH on one exchange and buy ETH on another within 30 days, those still match under the bed-and-breakfast rule, because HMRC sees one pool of ETH, not two. So the very first thing to do is stop thinking in exchanges and start thinking in coins.

Moving your own coins between your own wallets is not a disposal

This is the other half of the puzzle, and the bigger source of wrong numbers. Sending your own crypto from one wallet or exchange you control to another wallet or exchange you control is not a disposal, so there is no Capital Gains Tax on the move itself. Nothing changed hands, you still own the same coins, so there is nothing to tax. What matters is that the cost basis travels with the coin: the pooled cost stays exactly the same, the coins just moved location.

The phantom disposal trap

Transfers read as a sell plus a buy are the biggest cause of wrong crypto tax

When you move coins between your own wallets, a spreadsheet or an import that only sees one side of the move often reads the withdrawal as a sale and the deposit as a fresh purchase. That invents a disposal that never happened, and a cost basis that isn't real, and your gains balloon. The fix is to match every outgoing transfer to its matching incoming one so they cancel out, and are never counted as a trade. If your history has transfers in it, getting this right is usually the difference between the correct number and a badly inflated one.

How to actually consolidate it

The method is the same however messy the pile is. You are building one combined timeline per coin:

  1. Gather everything. Export the full transaction history from every exchange and pull the activity from every wallet (on-chain explorers help for self-custody). Miss a source and the numbers will be wrong.
  2. Put it all in pounds, in date order. Every buy, sell, swap, fee, staking reward and transfer, converted to its GBP value at the time, merged into one list per coin.
  3. Net out internal transfers.Match each move between your own wallets so it counts as neither a sale nor a purchase. This is the step people skip, and it's the one that matters most.
  4. Apply the matching rules across the whole holding. Same-day first, then the 30-day rule, then the Section 104 pool for the rest, using the pooled average cost. Do this on the combined pool, not exchange by exchange.
Worked example

The same Bitcoin, three different answers

Say you did this across three places:

  • Bought 1 BTC on Binance for £15,000.
  • Bought 1 BTC on Coinbase for £25,000.
  • Moved the Coinbase BTC to your hardware wallet (a transfer, not a sale).
  • Later sold 1 BTC on Kraken for £30,000.

The correct answer. Your pool is 2 BTC that cost £40,000 in total, so the pooled average is £20,000 per BTC. The transfer to your wallet changes nothing. When you sell 1 BTC for £30,000, the allowable cost is the pooled average, £20,000, so your gain is £30,000 − £20,000 = £10,000. Simple, once it's pooled.

What the exchange reports would tell you.Kraken only ever saw 1 BTC arrive with no purchase behind it, so its report may show a cost of £0 and a “gain” of £30,000. Binance, looking only at its own BTC, would give £30,000 − £15,000 = £15,000. Both are wrong, because neither can see your full holding. Only the combined pool gives the real figure, and here it's less than half what a single exchange would have you report.

Why your exchange's own tax report is usually wrong

Exchange tax reports are convenient, and for a simple single-exchange history they can be fine. Across multiple venues they fall down for two honest reasons, neither of which is the exchange being dishonest.

  • It only sees its own four walls.Your exchange can only report on what happened there. It can't see the coins you bought elsewhere, the wallet you hold, or the cost basis that came in on a transfer, so it fills the gaps with guesses (often a zero cost), which inflates the gain.
  • It may use the wrong method.Plenty of exchange reports default to FIFO or a US-style method rather than HMRC's Section 104 pooling. Even on a single exchange that can give a different number to the one HMRC actually wants.

So a per-exchange report is a starting point for your own records, not a finished tax figure. The tax answer only exists once everything is combined.

The problems that actually break the numbers

  • Missing purchase history.If your records can't show what you originally paid, the cost defaults to nothing and you get taxed on the whole amount. Tracking down old buys, including from exchanges that no longer exist, is usually the biggest chunk of the work.
  • Transfers counted as trades. Covered above, and the single most common way a spreadsheet inflates a bill.
  • Duplicates. Importing overlapping date ranges, or the same file twice, double-counts trades.
  • Unsupported wallets or exchanges.Anything a tool can't read, you have to build into the right format by hand.
  • CSV differences. Date formats, timezones and fee columns vary by venue, and small mismatches quietly move the numbers.

How our calculator handles this

A quick, honest note, because this is the exact job the tool exists for. When you upload your CSVs from every exchange and wallet, CryptoCGT merges them into one Section 104 pool per coin, prices each event in pounds at the time, and matches your internal transfersso they aren't counted as phantom disposals. It applies the same-day and 30-day rules across your whole holding, gives you the SA108 figures, and shows the workings so you can see how each number was reached. The consolidation across venues, and the transfer matching, are precisely where a tool earns its keep over a spreadsheet. Always check the figures against your own records before you file.

New to all this? Start with how UK crypto tax works, and read crypto-to-crypto swaps if a lot of your history is trades between coins. This is general information, not personal tax advice; if your history is large or unusual, it is worth having a qualified UK crypto tax adviser check it.

Sources

See your own number — free, no account

Drop your exchange CSV and read your full Capital Gains Tax figure on screen, with the Section 104 working shown. You only pay if you download the report.

Start free →

This guide is information, not tax advice.Figures and thresholds are for the tax year shown (England, Wales & Northern Ireland; Scottish income tax bands differ). Rates and rules can change, and your own position may differ — check your circumstances and speak to an accountant before you file. CryptoCGT is an information tool, not a regulated tax adviser.