Crypto Cost Basis, Explained: FIFO, Specific ID, and the Records That Set Your Tax Bill
By the Stoia team · September 12, 2026 · 8 min read
Your crypto cost basis is what you paid for a unit, including the fee to buy it, and it is the number that decides your tax bill: gain or loss is simply what you received minus that basis. Which basis applies to a given sale depends on which lot you sold, and the method you use to answer that question (first in, first out, or specific identification of a lot) can change the gain on an identical sale by thousands of dollars.
What cost basis is: price paid plus fees
Basis is the tax system's memory of what an asset cost you. For units you bought, it is the dollar amount you paid, plus any fee you paid to make the trade. Buy 0.1 units at $40,000 per unit with a $20 exchange fee and your basis in that lot is $4,020, not $4,000. On the way out, fees work in the other direction: a $20 fee on the sale reduces your proceeds. Both adjustments lower the taxable gain, which is why keeping fee records is worth the tedium.
Basis is tracked per lot, a specific quantity acquired on a specific date at a specific price. Three buys are three lots, even if they are the same coin in the same wallet. That single fact is the source of nearly every complication below, because when you sell part of a holding, someone has to decide which lot went out the door.
Why every disposal needs a basis: sales, swaps, and spending
The IRS treats crypto as property, so a capital gain or loss is realized on every disposal, not just every cash-out. Three events count:
- Selling for dollars. Proceeds are the dollars received; gain is proceeds minus basis.
- Swapping one coin for another. Trading Bitcoin for Ethereum is a sale of the Bitcoin at its fair market value at that moment, followed by a buy of the Ethereum at the same value. The Bitcoin lot needs a basis to compute the gain; the new Ethereum lot gets a basis equal to what the Bitcoin was worth when swapped.
- Spending it. Paying for a $3,000 laptop with crypto is a disposal of $3,000 worth of crypto. If the units you spent cost $1,800, you owe tax on a $1,200 gain, and you own a laptop with no basis question at all.
The crypto taxes basics guide covers the full list of taxable and non-taxable events. This post stays on the one input all of them share.
The lot methods, worked: FIFO vs specific identification vs HIFO
Suppose you bought the same coin three times over a year, then sold part of the holding:
| Lot | Bought | Quantity | Price per unit | Basis |
|---|---|---|---|---|
| A | March | 0.1 | $30,000 | $3,000 |
| B | June | 0.1 | $50,000 | $5,000 |
| C | September | 0.1 | $40,000 | $4,000 |
In December you sell 0.1 units at $60,000, for proceeds of $6,000. Which lot did you sell? Three answers, three gains:
| Method | Lot treated as sold | Basis | Gain on $6,000 of proceeds |
|---|---|---|---|
| FIFO (first in, first out) | A, the March lot | $3,000 | $3,000 |
| Highest in, first out (HIFO) | B, the June lot | $5,000 | $1,000 |
| Specific identification, choosing lot C | C, the September lot | $4,000 | $2,000 |
FIFO is the default. If you do nothing, the IRS assumes the oldest units left first, and in a rising market that usually means the lowest basis and the largest gain. Specific identification lets you choose the lot, but only if you identify it no later than the time of the sale: on an exchange, by selecting the lot before the order executes if the platform supports it; in a self-custody wallet, in your own records at the time. "HIFO" is not a separate IRS method; it is specific identification with a standing instruction to always pick the highest-basis lot, which minimizes the gain today. Note the trade-off in the table: HIFO leaves lots A and C in the account with a combined basis of $7,000 on 0.2 units, so the deferred gain is still waiting. The method changes timing, not the total. The crypto profit calculator runs this subtraction on your own lots, and the capital gains tax calculator turns the gain into an estimated bill.
Holding period travels with the lot
Each lot also carries its own acquisition date, which sets its holding period. Units held more than one year at disposal produce long-term capital gains, taxed at the 0%, 15%, or 20% tiers; units held a year or less produce short-term gains, taxed as ordinary income. This can flip the best choice. In the example, suppose lot A is the only one older than a year at the December sale. FIFO gives a $3,000 long-term gain, while HIFO gives a $1,000 short-term gain. At a 24% ordinary rate the HIFO bill is $240; at a 15% long-term rate the FIFO bill is $450. HIFO still wins here, but a smaller basis gap or a higher ordinary rate can reverse it, which is why the choice is made lot by lot rather than by slogan. The capital gains tax guide covers how the tiers are applied to the rest of your income.
Since 2025: basis is tracked per wallet, and exchanges issue a 1099
Two rule changes reshaped crypto recordkeeping starting with the 2025 tax year, and both are worth verifying on IRS.gov for the current year because the details are still phasing in.
First, basis is now tracked per account or wallet. Before 2025, many holders used a "universal" method, treating every unit of a coin across every exchange and wallet as one pool and picking the cheapest lot regardless of where it sat. That is no longer allowed. A lot sold from one exchange account must be a lot that exists in that account; you cannot assign it a basis from a wallet across town. The IRS provided a one-time transition for allocating existing lots to specific wallets as of the start of 2025, and if you held crypto in several places before then, that allocation is a document to keep with your tax records.
Second, exchanges and other platforms that count as brokers now issue a 1099 for digital asset sales, reporting your gross proceeds to you and to the IRS, with basis reporting phasing in over the following years. The form is a help and a trap. It is a help because proceeds are now matched against your return the way stock sales are. It is a trap because a platform can only report the basis it saw: units you transferred in from elsewhere may show up with a blank or a zero, and if you do not supply the real number on your return, the proceeds get taxed as if the basis were zero.
Transfers between your own wallets: not a disposal, but the basis travels
Moving 0.1 units from an exchange to a self-custody wallet you control is not a sale. No gain, no loss, nothing to report as a disposal. But the lot does not reset. It arrives in the new wallet with the same basis and the same acquisition date it left with, and under the per-wallet rules it is now your job, not the exchange's, to document that. A transfer with no record attached is the single most common way basis gets lost, because the receiving side sees units appear with no price and the sending side sees them leave and stops tracking. The fix is a one-line note at the moment of transfer: date, quantity, the lot it came from, and the transaction id on the network.
The network fee paid to make the transfer is a small gray area. It is not a disposal of the coins you moved, but the sliver consumed as the fee is technically a disposal of that sliver. Most holders record it and move on.
The record fields to keep, per lot
Whatever tool you use, every lot needs the same six fields, captured when the event happens rather than reconstructed at filing time:
- Date and time of acquisition, and later of disposal.
- Quantity, to the full number of decimal places the network uses.
- Price per unit in dollars at that moment, or the total dollar value for a swap or an income event.
- Fees paid, in dollars, on the way in and on the way out.
- Wallet or account where the lot sits, and each one it has moved to since.
- Transaction id, the exchange order number or the on-chain hash, which is the proof if a number is ever questioned.
Export exchange history on a schedule, not just in April. Platforms merge, close, and prune old records, and your export is the copy that survives.
When the basis is missing
The burden of proving basis is on you. If you sell units and cannot substantiate what they cost, the IRS can treat the basis as zero, which taxes the entire sale price as gain. On a $6,000 sale of units that actually cost $4,000, that is tax on $6,000 instead of $2,000, roughly triple the bill. Reasonable reconstruction is allowed (an old bank statement showing the transfer to the exchange, a screenshot of the order, a wallet's transaction history with dates that a price archive can fill in), and it is worth the afternoon. What is not allowed is guessing a round number and hoping. If a platform that held your history has shut down, reconstruct from the bank side: the deposits you made are the ceiling on what your basis could be, and a price history converts each deposit date into units.
Airdrops, staking, and rewards: income today, basis tomorrow
Not every unit is bought. Staking rewards, airdrops, referral bonuses, and payment for work are ordinary income at their fair market value on the day you gain control of them, reported as income for that year whether or not you sell. That same value then becomes the lot's basis, and its holding period starts that day. Receive 0.02 units of staking reward worth $900 in March: $900 of income for the year, and a lot with a $900 basis. Sell it in November at $1,100 and the gain is $200, short-term. Sell it at $700 and the loss is $200. The mistake to avoid is treating the reward as free and reporting the whole $1,100 as gain later; that taxes the same $900 twice.
All of it comes back to the same subtraction and the same six fields. The rest of the crypto basics collection covers how the taxable events fit together and how large a crypto position should be in the first place.
Basis is a per-lot, per-wallet chore, and the units it describes are also a line in your net worth. Stoia keeps crypto balances next to brokerage accounts, cash, and debts in one live net worth picture, launching 2026, so the "where is it and what is it worth" half of the question is answered before tax season starts.
Frequently asked questions
What is the cost basis of crypto?
Cost basis is the amount you paid to acquire a unit of crypto, including the transaction fee. For crypto received as income, such as staking rewards or an airdrop, the basis is its fair market value on the day you gained control of it, which is also the amount you report as income for that year.
Is FIFO or specific identification better for crypto?
Specific identification usually produces a smaller gain in the year of the sale because you can choose a high-basis lot, but you must identify the lot no later than the time of the sale and keep records that prove it. FIFO is the default when no lot is identified, and in a rising market it sells the oldest, lowest-basis units first. Neither changes the total gain over the life of the holding, only its timing.
Do I need cost basis for crypto-to-crypto trades?
Yes. A swap is a disposal of the coin you gave up at its fair market value, so you need that coin's basis to compute the gain or loss. The coin you received starts a new lot with a basis equal to that same value and a holding period that begins on the swap date.
What happens if I don't know my crypto cost basis?
If you cannot substantiate the basis, the IRS can treat it as zero and tax the full sale price as gain. You are allowed to reconstruct basis from bank records, exchange exports, wallet histories, and historical prices, and doing so almost always lowers the bill compared with a zero basis.
Is transferring crypto between my own wallets taxable?
No. Moving units between wallets or accounts you control is not a disposal, so there is no gain or loss to report. The lot keeps its original basis and acquisition date, and since 2025 you are required to track which wallet each lot sits in.