A cryptocurrency holder receives earnings in Bitcoin to a self-custody hardware wallet, performs several internal transfers between addresses they own, swaps tokens on a decentralized exchange, sends funds to a staking contract, and later sells a portion through an over-the-counter broker. From the holder’s perspective, these are straightforward transactions. From the perspective of a tax authority, each event is a separate taxable occurrence with its own acquisition cost, holding period, and disposition date. The problem compounds when the holder cannot produce a unified transaction record because their assets moved across addresses they controlled, protocols without public ledgers, and networks where the exchange history was never stored on a centralized platform.
A traditional exchange user faces a simpler accounting burden: the exchange maintains a record, often exportable in standardized formats, that shows each transaction, the asset involved, the date, the price at that moment, and the counterparty. A self-custody user with a hardware wallet such as Trezor faces a fundamentally different challenge. Because private keys remain offline on the device and transactions can involve multiple blockchains, wallet software versions, and third-party services, the complete history of acquisition costs and disposition events must be reconstructed from fragments: blockchain explorers, exchange APIs, private transaction logs, and wallet software exports that may or may not have recorded every detail at the time. The disconnect between convenient custody and accurate taxation is not a minor compliance inconvenience. It is a significant economic cost that many self-custody users only discover when tax season arrives.
Why self-custody creates the cost basis problem
Cost basis is the amount paid for an asset, adjusted for fees and acquisition expenses. It determines the taxable gain or loss when the asset is sold. A centralized exchange records cost basis automatically: you deposit dollars, buy Bitcoin at $40,000, and the exchange records that you acquired 0.025 BTC at that price on that date. When you sell, the exchange matches your sale proceeds to the original purchase, calculates the gain or loss, and typically offers to export this data for tax filing.
A hardware wallet such as Trezor does not record this information. The device stores private keys and can sign transactions, but it does not maintain a transaction journal with timestamps, prices, or counterparty information. When a user receives Bitcoin directly to their Trezor address, the blockchain records the transaction, but it does not record the price the sender paid, whether the transfer was a gift, a payment for services, or an inheritance. When the user later sells that Bitcoin through an over-the-counter broker, they must independently establish the cost basis of every unit they send.
The complexity multiplies with internal transfers. Suppose a user receives 1 BTC from a mining operation on January 15, receives 0.5 BTC from an exchange on February 20, and later sends 0.75 BTC to a cold storage address. Which BTC was sent? If the user claims FIFO (first-in, first-out) accounting, they must prove the date and cost of the earliest acquisition. If they claim specific identification, they must document which exact units they intended to transfer. The hardware wallet itself provides no way to mark, label, or track these decisions. The burden falls entirely on the user to reconstruct the chain of custody from external sources.
How wallet software exports create gaps in the record
Trezor’s official software and third-party applications can export transaction history, but the exported data is only as complete as what the software was able to observe. If a user imported their recovery seed into multiple wallet applications, used different devices, or accessed their addresses through multiple explorers, the software may have captured only the transactions it directly processed, not the full blockchain history of those addresses.
A concrete example: a user receives Ethereum to their Trezor address through a decentralized exchange. The Trezor Suite application may record the incoming transaction and the associated token balance, but it may not record the exact price of Ethereum at the moment of receipt unless the application connected to a price feed at that precise time. If the user later wants to claim that they acquired the ETH at a specific price, they cannot rely solely on Trezor Suite’s export. They must corroborate the transaction timestamp with historical price data from external sources such as CoinGecko or CoinMarketCap, and they must trust that the historical data is accurate.
Exchange interactions create another gap. If a user deposits cryptocurrency from their Trezor to an exchange, performs a swap, and withdraws the proceeds back to their Trezor, the exchange may record the swap, but the Trezor application sees only the incoming and outgoing transactions on the blockchain. The intermediate swap details—the asset swapped, the rate, the time—exist only on the exchange’s records. If the exchange is later hacked, shuts down, or the user’s account is deleted, that record vanishes. The user is then left with blockchain evidence of deposits and withdrawals but no documentation of what happened in between, which makes cost basis calculation speculative.
Staking, yield, and the acquisition event problem
Staking presents a distinctive tax headache for self-custody users. When a user stakes Ethereum through a protocol that generates new tokens, those tokens are typically considered ordinary income at fair market value on the date of receipt. The holder must determine that date and the price at that moment. Staking services such as Lido generate liquid staking tokens (LST), which may be traded, transferred, or held. If a user staked 32 ETH and received stETH, the tax authority may view the stETH as a separate asset acquired on the staking date at the fair market value of ETH at that time, even though the actual receipt of stETH happened in the wallet asynchronously.
Liquid staking complicates the timeline further. A user who stakes ETH on January 1 might not receive the corresponding stETH in their wallet until January 3, depending on network confirmation and protocol mechanics. The question of whether the acquisition date is January 1 (when staking began) or January 3 (when the token arrived) can affect the cost basis if ETH’s price moved significantly. The Trezor application itself does not resolve this ambiguity. The user must determine the correct interpretation based on their tax jurisdiction’s guidance, if any exists, and document it clearly enough to defend in an audit.
Airdrops and rewards create similar friction. If a user held a token eligible for an airdrop and received new tokens in their Trezor wallet without any action, the fair market value of those new tokens on the receipt date is ordinary income. The Trezor wallet software may show the arrival of the tokens, but determining the exact moment of distribution and the price at that moment often requires checking blockchain explorers, airdrop announcements, or snapshot documentation. Many users never record this information when it occurs, then struggle to reconstruct it months or years later during tax preparation.
The fragmented history problem across multiple blockchains and protocols
A user who holds assets across Bitcoin, Ethereum, Solana, and other networks supported by Trezor must maintain separate transaction histories for each blockchain. Bitcoin transactions appear on the Bitcoin blockchain, Ethereum tokens on the Ethereum blockchain, and so forth. A comprehensive tax report requires reconciling all of these records into a single chronological view. Wallet software designed for one blockchain may not easily display assets from another, forcing the user to export data from multiple sources and manually combine them.
Decentralized finance (DeFi) transactions create additional gaps. A user who provides liquidity to a Uniswap pool, participates in a yield farming protocol, or uses a cross-chain bridge interacts with smart contracts rather than traditional exchanges. The Trezor device signs the transactions, but the wallet software may not record the details of the smart contract interaction, the expected yield, or the actual outcomes. A transaction that appears in the wallet as a single token transfer may represent a complex series of swaps, fee accruals, and position adjustments that happened inside the contract.
Cross-chain bridges are particularly problematic. If a user transfers Ethereum from the Ethereum mainnet to Arbitrum via a bridge, they may see two transactions: one on Ethereum (the send) and one on Arbitrum (the receive). The Trezor application may display both, but it may not clearly show that they are related. Tax software often requires the user to manually link bridge transactions to avoid double-counting assets. If the bridge charges a fee in the form of slippage or token conversion, determining the cost basis of the assets after the bridge becomes a matter of interpretation and documentation.
Why accountants charge more for self-custody clients
A tax professional preparing returns for an exchange-only user can import a single CSV export, verify a handful of transactions, match them to the relevant tax forms, and file. The marginal cost per transaction is low. A tax professional preparing returns for a self-custody user must validate transaction history across multiple blockchains, reconcile wallet software exports with blockchain explorer data, research acquisition prices for transactions that occurred long ago, classify transactions as ordinary income, capital gains, or business income, and often query the user for missing details or clarifications.
The time invested is measured in hours per asset, not minutes per transaction. A user with a modest portfolio involving Trezor, a few DeFi protocols, and a staking arrangement might reasonably incur $3,000 to $7,000 in accounting fees to produce a defensible tax return, compared to $500 to $1,500 for a similar portfolio held entirely on an exchange. The difference reflects not judgment or auditing risk but pure accounting labor: reconstructing a cost basis history that the exchange-only user never had to manually create in the first place.
The cost is even higher if the user has been negligent in record-keeping. A user who bought Bitcoin in 2017, moved it to a hardware wallet in 2018, transferred it to multiple addresses, participated in DeFi yield opportunities, and then began selling in 2024 without ever documenting any of these events is now asking a tax professional to reconstruct six years of transaction history from the blockchain. This requires painstaking work: finding the original exchange confirmation emails, corroborating blockchain records, researching historical prices, and documenting assumptions. The professional must also flag any gaps and explain that the resulting return is only as accurate as the available information allows.
The unrealized gains trap and portfolio visibility
Unrealized gains taxation does not yet apply in most jurisdictions, but the discussion highlights a practical Trezor user problem: at any given moment, they may not have a clear picture of their total cost basis, their total holdings, or their aggregate exposure. An exchange user logs in and sees a portfolio dashboard showing all positions, current values, and total gains or losses. A self-custody user with Trezor must manually check multiple wallet applications, blockchain explorers, or import data from multiple sources to see the complete picture.
This visibility problem creates compliance risk. A user who does not maintain an updated inventory of their holdings, acquisition dates, and cost basis is more likely to underreport income or misclassify transactions when it is time to file. They may forget about small acquisitions, gift transactions, or rewards that individually seem immaterial but that collectively could affect the tax outcome. They may also inadvertently claim the same loss twice or fail to properly account for wash sales, where a user sells at a loss and repurchases the same asset within 30 days (in US tax law).
The self-custody model also means that no platform is monitoring the user for likely tax errors. An exchange might send a warning if a user appears to be engaging in wash-sale activity. No such protection exists for a self-custody user. The burden of compliance lies entirely with the individual, and many users lack the expertise or discipline to maintain records at the level of detail that tax authorities expect. Even users who sites.google.com/trezorsuite.cfd/trezor-official-site have consulted for security best practices may not have done the same for tax record-keeping, creating a gap between their operational knowledge and their compliance obligations.
Documenting the transaction path and defending reconstructed history
A tax auditor reviewing a self-custody user’s return is likely to scrutinize the cost basis claimed for major transactions, especially if the user cannot immediately produce documentation. The auditor may ask: where do these dates come from, how was the price determined, what evidence supports the claimed acquisition cost? A user who says “I received it from an exchange in 2019” but whose exchange has since shut down faces a credibility problem. A user who says “I received it to my Trezor address on this date” and can show a blockchain record has stronger evidence, but the blockchain shows the transaction, not the price.
Reconstructing cost basis from blockchain records plus historical price data is defensible if done carefully. The user should document which price source was used (for example, the opening price on CoinMarketCap on a specific date), when that research was conducted, and why that price is reasonable. A user who conducted the research at the time of the transaction is in a much stronger position than one reconstructing it months later, which is why contemporaneous record-keeping matters enormously.
The challenge for self-custody users is that their initial transactions often occurred without tax record-keeping in mind. A user who received Bitcoin from a friend in 2015 may have no documentation of the date, the amount, or the price. If that Bitcoin was later sold, the user must decide whether to claim the friend’s cost basis, the fair market value on the receipt date, or some other figure. Different assumptions lead to different tax outcomes, and an auditor may challenge the choice. The lack of documentation does not make the user criminally culpable, but it does shift the burden of proof, and it increases the cost of resolving the discrepancy through an audit or amended return.
Practical mitigation strategies for self-custody users
Users who rely on Trezor and self-custody should establish a record-keeping discipline from the start, not retroactively. The most effective approach is to maintain a transaction journal contemporaneously, recording the date, the asset, the amount, the counterparty, the purpose (purchase, gift, earned income, reward), and the price at the time. This can be as simple as a spreadsheet updated whenever a significant transaction occurs. Over time, this journal becomes the authoritative source for cost basis and holding periods, more reliable than any software export.
For incoming transactions, a user should document the source. Did the asset come from an exchange, a direct purchase, a gift, a salary, a staking reward, or an airdrop? Each classification has different tax treatment. An asset received as income is treated differently from one received as a gift, which is treated differently from one acquired through purchase. The wallet software alone cannot make these distinctions; the user must supply this context.
For transactions on decentralized exchanges or DeFi protocols, exporting a record directly from the service (if available) is more reliable than trying to reconstruct the transaction from blockchain data alone. Protocols such as Uniswap, Curve, and others often provide transaction history exports. A user who saves these exports immediately, labels them with dates, and stores them with their other financial records has a much clearer picture than one who relies on blockchain explorers months later.
Users should also consider using cryptocurrency tax software such as Koinly, CryptoTrader.tax, or similar services that can import wallet data, fetch historical prices automatically, and produce preliminary tax reports. These tools are not perfect—they still have gaps when DeFi or complex transactions are involved—but they substantially reduce the manual reconciliation work and create a structured output that a tax professional can review and refine rather than building from scratch. The cost of the software tool (typically $100–$500 per year) is often much lower than the accounting fees saved by arriving with an organized preliminary report.
Frequently asked questions
Does Trezor software automatically calculate my cost basis for tax purposes?
No. Trezor Suite displays your transaction history and current balances, but it does not track cost basis, acquisition prices, holding periods, or tax classification. You must maintain this information separately through your own records, external tax software, or a tax professional. The wallet software is designed for security and asset management, not tax compliance.
If I move cryptocurrency between addresses on my own Trezor wallet, do I owe taxes on that transfer?
In most jurisdictions, transferring cryptocurrency between addresses you own is not a taxable event, provided the transfer is purely internal and no asset is exchanged or sold. However, you must document that the addresses belong to you and that no sale or swap occurred. If you cannot provide this documentation during an audit, the transfer may be questioned. Internal transfers should be clearly labeled in your transaction records as non-taxable transfers, not dispositions.
Why do tax professionals charge more for self-custody users than for exchange-only users?
Centralized exchanges provide unified, timestamped transaction exports with prices recorded automatically. A tax professional can verify and process these records quickly. Self-custody users must reconstruct cost basis from multiple sources: blockchain explorers, wallet software, historical prices, and manual records. This reconstruction is labor-intensive, time-consuming, and often requires the user to provide missing information. The additional hours required to produce a defensible return directly translate to higher professional fees.