BLOG

How to Import a Bitcoin Wallet for Taxes: Addresses, xpub and Missing History

Published on April 14, 2026 - 9 min read

How to Import a Bitcoin Wallet for Taxes: Addresses, xpub and Missing History

Overview

Someone copies their Bitcoin address out of their wallet, pastes it into a tax tool, and gets back four transactions and a balance of zero. They have been using that wallet for three years and it currently holds coins. Nothing is broken.

This is the single most confusing thing about Bitcoin tax imports, and it is not a bug in anyone's software. It is how Bitcoin wallets are designed to work. A modern Bitcoin wallet is not one address — it is a tree of thousands of them, and the address shown in the interface is only the most recent leaf.

If you import Bitcoin, Litecoin or Dogecoin by address, you are almost certainly importing a fraction of your history. This article explains why, and what to import instead.

Bitcoin Does Not Have Accounts

Ethereum has accounts with balances. You have one address, it holds a number, and that number goes up and down. It is intuitive, which is why most people assume Bitcoin works the same way.

Bitcoin does not track balances at all. It tracks unspent outputs — discrete chunks of coin, each locked to an address. Your "balance" is software adding up every chunk your wallet can unlock.

Crucially, a Bitcoin transaction consumes whole chunks. If you hold one output worth 0.5 BTC and want to send 0.1 BTC, the protocol spends the entire 0.5 and creates two new outputs: 0.1 to the recipient, and roughly 0.4 back to you. That 0.4 is called change.

Change Addresses Are Where Your History Goes

Your change does not return to the address you sent from. It goes to a brand new address, generated by your wallet, that you have never seen and will never be shown.

Wallets do this for privacy. If change returned to the sending address, anyone could follow your entire financial life by watching one string. Instead, each wallet derives an effectively unlimited supply of addresses from your seed phrase, splitting them into two branches: one for receiving, one for change.

The consequence for tax reporting is direct. After your first outgoing payment, your coins are sitting on an address that is not the one you copied. Import that one address and you will see:

  • the deposits that happened to land on it;
  • the transaction where you spent from it;
  • and then nothing, forever, because everything afterwards happened on addresses derived later.

The balance reads zero. The wallet says otherwise. Both are telling the truth about different things.

The Extended Public Key

The fix is to import the branch rather than the leaf.

An extended public key — the string beginning xpub, ypub or zpub — is the parent from which all your addresses are derived. Give a tax tool the extended public key and it can generate every receive address and every change address in the account, then read the history of all of them, in order.

That is what an extended public key is for. It is a read-only credential, and this distinction matters:

  • an extended public key can derive addresses and read history;
  • it cannot sign transactions or move funds;
  • it does reveal your full balance and transaction history to whoever holds it, which is a privacy consideration, not a security one.

Your seed phrase and private keys are a different thing entirely. No tax tool ever needs them, and any service that asks for them should be closed immediately.

Which Prefix Do You Have?

The prefix tells you which address format the account uses. You may have several accounts in one wallet using different formats, especially if you have been holding since before 2018.

PrefixAddress formatAddresses look like
xpubLegacy1...
ypubWrapped SegWit3...
zpubNative SegWitbc1q...

Litecoin and Dogecoin follow the same design with their own prefixes — Litecoin commonly uses Ltub or Mtub, Dogecoin uses dgub — and the same rule applies: import the extended key, not an address.

If your wallet offers several accounts, each has its own extended public key. Export all of them. An old legacy account you stopped using in 2019 still holds the acquisition history behind coins you later consolidated and sold.

Import a Bitcoin wallet

Where to Find It

The export lives in different places depending on your wallet, and it is usually described as an account-level detail rather than something prominent.

  • Ledger Live — open the account, then the account settings, and look for the extended public key or account details.
  • Trezor Suite — account details include the public key (XPUB), with an option to show or export it.
  • Electrum — Wallet, then Information; the master public key is displayed there.
  • Sparrow — the account's settings display the extended public key alongside the derivation path.

If your wallet does not expose one at all, it is likely a single-address wallet or a custodial account, and importing the addresses individually is the correct approach. In that case, list every address the wallet has ever shown you, not just the current one.

Why This Matters for the Numbers

Missing history does not just produce a short list. It produces wrong tax figures, and it does so quietly.

Consider a straightforward case. You bought 0.5 BTC in 2021, moved it around your own wallet twice over the following years, and sold it in 2026. If the import only captures the sale, the report has proceeds and no acquisition. Depending on how the gap is handled, that either produces a gain calculated against a cost of nothing — massively overstating what you owe — or an unexplained hole that has to be resolved before you can file.

The reverse also happens. Consolidating several small outputs into one looks, to an incomplete import, like coins arriving from an unknown source. It is not a disposal and it is not income, but it needs the surrounding history to be recognisable as neither.

This is the same class of problem as a missing exchange account, and it has the same fix: import the complete source. Finding missing transactions in a tax report covers how to spot the gaps.

Check your transaction history

Fees, Consolidation and Self-Transfers

Bitcoin's model creates two events that people do not expect to see in a tax record.

Consolidation. Sweeping many small outputs into one is a transaction on the blockchain, but beneficial ownership never changes. It is not a disposal. It will, however, appear in your imported history and should be recognised as an internal movement.

Fees. Every transaction pays a network fee in BTC, and paying it disposes of that small amount. HMRC lists transaction fees paid for having a transaction included on the distributed ledger among allowable costs. For someone who consolidates often, or who transacted during a period of high fees, this is not a trivial sum.

Neither of these is optional detail. They are part of what makes the arithmetic come out right.

An Import Checklist

Before generating a report that includes Bitcoin activity, confirm:

  • you imported extended public keys, not individual addresses;
  • every account in the wallet is covered, including old formats you no longer use;
  • Litecoin and Dogecoin accounts got the same treatment;
  • the exchanges you bought from or sold to are connected;
  • your imported balance matches what your wallet shows.

That last one is the useful test. If the numbers agree, your history is probably complete. If they do not, a balance mismatch usually has a short list of causes.

Conclusion

Bitcoin's privacy design and its tax reporting requirements pull in opposite directions. The wallet works hard to make sure no single string reveals your activity, and then reporting asks you to produce exactly that.

The extended public key is the answer to both. It stays read-only, it cannot spend, and it captures the complete history that an individual address structurally cannot. Import that, check your balance agrees, and the Bitcoin side of your report stops being guesswork.

Import by extended public key

Official Resources

This article provides general information and is not tax advice. Never share a seed phrase or private key with any service, including a tax tool.

Keep reading

How to Do Your Ledger Crypto Taxes: Import Every Chain From One DeviceHow to Do Your Ledger Crypto Taxes: Import Every Chain From One Device

A Ledger device holds coins on many separate blockchains at once. Here is how to import all of them for crypto tax reporting without losing history.

9 min read
How to Do Your Solana and Phantom Crypto Taxes: Staking, Airdrops and SPL TokensHow to Do Your Solana and Phantom Crypto Taxes: Staking, Airdrops and SPL Tokens

Solana wallets generate hundreds of small reward receipts and a pile of airdropped tokens. Here is how each is treated and how to import them for tax.

9 min read
How to Do Your MetaMask Crypto Taxes: One Address, 14 NetworksHow to Do Your MetaMask Crypto Taxes: One Address, 14 Networks

Your MetaMask address is identical on every EVM network, but each network keeps its own history. Here is how to import all of them for tax reporting.

9 min read
Are Crypto Gas Fees Tax Deductible? Failed Transactions, Approvals and On-Chain CostsAre Crypto Gas Fees Tax Deductible? Failed Transactions, Approvals and On-Chain Costs

HMRC allows some crypto transaction fees as costs and refuses others. Here is what the guidance actually says about gas, swaps, approvals and failed transactions.

10 min read
Does Your Crypto Exchange Report You to the Tax Office? CARF and DAC8 ExplainedDoes Your Crypto Exchange Report You to the Tax Office? CARF and DAC8 Explained

From 1 January 2026 crypto platforms collect and report user and transaction data automatically. Here is what CARF and DAC8 cover, and the dates that matter.

10 min read
API Import or CSV Upload: Which Crypto Tax Workflow Fits You?API Import or CSV Upload: Which Crypto Tax Workflow Fits You?

Compare API imports and CSV uploads for crypto tax records, including completeness, security, sync workflow, and current CryptoTaxBridge support.

9 min read