How to Add an NFT Purchase to a Crypto Tax Ledger
To record an NFT purchase in a portfolio-tracking/realized-vs-unrealized-gains-crypto/">crypto tax ledger, you enter it as a disposal of the cryptocurrency you spent and an acquisition of the NFT as an asset. The tax treatment depends on your jurisdiction, but the ledger entry itself follows a standard double-entry pattern: one line for the outgoing crypto, one for the incoming NFT.
What makes NFT purchases different from token trades
An NFT purchase is not a token-to-token swap. You are exchanging one asset (cryptocurrency) for a different type of asset (a non-fungible token). Most portfolio trackers and tax software treat this as a disposal event for the crypto side and a new acquisition for the NFT side. The NFT is not "fungible" with other NFTs, so each one gets its own cost basis entry.
Information you need before you start
Before you open your ledger, collect these details from the transaction:
- Date and time of the purchase (blockchain timestamp)
- Transaction hash (the unique ID on-chain)
- Wallet address you paid from
- Cryptocurrency used (ETH, SOL, MATIC, etc.) and the exact amount
- USD value of the crypto at the time of the transaction (this becomes your cost basis for the NFT)
- Gas fee paid to execute the transaction
- NFT contract address and token ID (the unique identifier for that specific NFT)
- Name or collection of the NFT (for your own records)
If you bought on a marketplace like OpenSea or Blur, the platform may also charge a service fee. That fee is typically part of the total cost basis, not a separate expense.
Step-by-Step: Adding the Purchase to Your Ledger
1. Record the Crypto Disposal
Create a transaction entry for the cryptocurrency you spent. This is a disposal (sale or trade) of that crypto.
- Date: The block timestamp
- Asset sold: The crypto you paid (e.g., 0.5 ETH)
- Proceeds: The USD value of that crypto at the time of the trade
- Cost basis: The original cost basis of the crypto you are spending (calculated from your existing holdings using your chosen cost basis method)
- Gain or loss: Proceeds minus cost basis. If you bought that ETH at a lower price, you have a taxable gain. If you bought it higher, a loss.
2. Record the NFT Acquisition
Create a second entry for the NFT as a new asset.
- Date: Same block timestamp
- Asset acquired: The NFT, identified by contract address and token ID (most software has a field for this)
- Cost basis: The USD value you paid, including the crypto spent plus any platform fees. The gas fee may be treated separately (see below)
- Quantity: 1 (NFTs are non-fungible; you never hold fractional units from a single purchase)
3. Handle the Gas Fee
Gas fees are transaction costs, not part of the NFT's purchase price. How you record them depends on your tax software:
- Option A: Record gas as a separate fee transaction with zero asset exchange. This is cleaner for audit trails.
- Option B: Add the gas fee to the cost basis of the NFT. Some software does this automatically.
Check your software's documentation. If you are using a CSV import, you may need to add a separate row for the gas fee with a transaction type like "fee" or "gas."
What about platform fees?
Marketplace fees (e.g., OpenSea's 2.5% or Blur's variable fee) are part of the purchase cost. Include them in the proceeds amount of the crypto disposal and the cost basis of the NFT. Do not record them as a separate expense unless your software explicitly supports that treatment.
Common Mistakes
Entering the NFT as a token trade. A swap of ETH for an NFT is not a token-to-token trade. If you record it as a trade between two fungible assets, the ledger will show you holding a quantity of "NFT" that looks like a token balance. That breaks cost basis tracking for the NFT and can cause errors when you sell it later.
Forgetting the gas fee. Gas is a real cost. If you ignore it, your cost basis is understated and your eventual gain is overstated.
Using the wrong date. The block timestamp, not the date you remembered to log in, is the transaction date. Some software lets you override the date; if yours does, use the on-chain timestamp.
Mixing up contract address and token ID. You need both. The contract address identifies the collection; the token ID identifies the specific NFT. Entering only one can cause duplicates or mismatches if you hold multiple NFTs from the same collection.
If You Bought with a Credit Card or Fiat
Some platforms let you buy an NFT directly with a credit card or bank transfer. In that case, there is no crypto disposal to record. You simply record an acquisition of the NFT with a cost basis equal to the fiat amount you paid (including any platform fees). No gain or loss event occurs on the purchase side.
What to do if your software doesn't support nfts
Not all portfolio trackers treat NFTs as separate assets. If yours does not, you have two workarounds:
- Record the NFT as a custom asset with quantity 1 and a label that includes the collection name and token ID.
- Record the purchase as a withdrawal of the crypto (no disposal) and a manual cost basis note in a separate spreadsheet. This is not ideal for tax reporting, but it keeps your crypto disposal history accurate.
If you plan to sell the NFT later, the cost basis you record now is what you will subtract from the sale proceeds. Get it right at purchase time to avoid reconstructing it from blockchain data months or years later.
Not financial advice. venko.tech publishes market data and general information about digital assets. Crypto assets are volatile and you can lose everything you put in. Nothing here is a recommendation to buy, sell or hold, and we make no price predictions.
Prices are sourced from third parties and may be delayed or wrong. Verify anything you intend to act on against a primary source.