Ask a long-time stacker how much bitcoin they own and you will usually get a precise answer. Ask what they paid for it, on average, across every exchange, every recurring buy and every wallet move since they started, and the answer often gets vague.
That gap is expensive. When coins are sold, the gain is calculated from your cost basis, and since 2026 brokers report basis to the IRS only for certain coins bought after 2025 on their own platform. Everything older, and everything that moved in from somewhere else, depends on records you keep.
Tracking a stack is really three jobs: counting it, pricing it, and doing both without broadcasting your entire financial history to strangers.
Three Questions Your Records Must Answer
A good tracking system answers three questions at any moment:
- How much do I hold, and where? Balances per wallet and per account, not one blended total.
- What did I pay for it? Cost basis in dollars, including fees, with dates and times.
- What happened to it? Every sale, spend, gift and transfer, so the trail is complete.
The second question matters more than it used to. Under Treasury regulations effective for acquisitions and dispositions on or after January 1, 2025, basis is tracked wallet by wallet (or account by account), as summarized in IRS Notice 2026-20. A single combined list of every purchase no longer matches how the rules work. The tax side is explained in Tax Basics for US Bitcoin Stackers.
The Humble Spreadsheet Still Wins
For cost basis, nothing beats a plain ledger you control. One row per event, with columns like these:
| Column | Example | Why it matters |
|---|---|---|
| Date and time | 2026-03-04 09:15 | Holding period starts the day after purchase |
| Event type | Buy, sell, spend, transfer, gift | Only some events are taxable |
| Amount (BTC) | 0.00025 | Exact units, not rounded |
| Price paid or received (USD) | $16.85 | The basis or the proceeds |
| Fees (USD) | $0.15 | Purchase fees generally add to basis |
| Wallet or account | Exchange A, hardware wallet | Basis is tracked per wallet since 2025 |
| Transaction ID | First and last characters | Proves a transfer stayed yours |
Recurring buys generate a lot of rows, so most platforms let you export a CSV of trade history. Exporting every few months, rather than once at tax time, avoids the scramble when a platform changes formats or closes accounts.
A transfer between your own wallets is not taxable, but it is the row people most often forget. Logging the transaction ID on both ends shows the coins never left your control. To check a dollar figure against a sats amount while filling rows, the BTC/sats converter helps.
Analogy: A wallet balance is your bank statement. Your spreadsheet is the box of receipts. The statement tells you what you have. Only the receipts tell you what it cost.
Watch-Only Wallets: Seeing Without Spending
Typing balances by hand gets old. A watch-only wallet solves that by tracking your addresses without holding any key that can spend from them.
It works because of how modern wallets generate addresses. Under BIP 32, a wallet derives an endless family of keys from one seed. One branch of that family can be summarized by an extended public key, usually called an xpub (or zpub and similar variants). Give a wallet app the xpub and it can derive every receiving and change address in that account, look them up on the blockchain, and show the live balance. It cannot sign a transaction. The underlying math is covered in Private Keys and Public Keys in Plain English.
Newer wallets often export an output descriptor instead (defined starting with BIP 380), a string that bundles the xpub with the exact script type and derivation path. Descriptors remove the guesswork about which address format a wallet uses, which is why many tools now prefer them.
The Privacy Price of an xpub
Here is the part app onboarding screens skip. An xpub is not a password, but it is not harmless either.
BIP 32 itself lists audits as a use case: an owner can share account extended public keys when "an auditor needs full access to the list of incoming and outgoing payments." That is exactly what you hand over. Whoever holds your xpub can see:
- Every address in that account, including ones you have not used yet.
- Your full balance and every past transaction in the account.
- Future payments into that account, for as long as you keep using it.
If you paste an xpub into a hosted portfolio service, its servers can link all of that to your email, your IP address and any other accounts you connected. A data breach at that service becomes a map of your holdings.
There is also a security edge case. BIP 32 warns that a parent extended public key plus any one non-hardened child private key is equivalent to the parent extended private key. In plain terms: an xpub that leaks alongside a single compromised private key from the same branch can expose the whole account.
How stackers commonly reduce the exposure, in general terms:
- Keep xpubs off cloud services, or use them only with software that runs locally.
- Connect watch-only software to your own Bitcoin node, so balance lookups do not reveal your addresses to a third-party server.
- Use separate accounts (separate xpubs) for different purposes, so one leak does not reveal everything.
The address and output mechanics behind all this are in How Transactions Work.
What This Means for You
- Track per wallet, not in one pile. Since 2025, US basis rules follow the wallet or account the coins sit in.
- Keep receipts, not just balances. A spreadsheet with dates, prices, fees and transaction IDs answers the questions a balance cannot.
- Export history on a schedule. Platform CSVs are easiest to get while the account is open and active.
- Treat an xpub as private data. It reveals every address and transaction in an account to whoever holds it.
- Prefer local tools for watching. Software that runs on your own machine or node leaks far less than a hosted dashboard.
Your stack is only as clear as your records, and only as private as your xpub.