You bought 1 BTC at $20K, 1 BTC at $40K, 1 BTC at $60K. You sold 1 BTC at $50K. Your tax bill depends on which cost basis method you choose, and the difference is $30,000.
Cost basis is the original price you paid for an asset. The method you choose affects your tax bill. This page covers FIFO, LIFO, HIFO, and Specific ID, and how each method changes the gain or loss on the sale.
Cost basis is the original price you paid for an asset. When you sell, the gain is the sale price minus the cost basis. The cost basis method you choose changes your tax bill.
4 methods exist: FIFO (IRS default), LIFO, HIFO (minimizes tax), and Specific ID (lets you choose which lot to sell, but requires detailed records).
The recon cutoff tool’s per-transaction export includes the lot ID, which makes Specific ID possible. Without it, you’re stuck with FIFO. For most crypto investors, the cost basis method is the difference between a $5,000 tax bill and a $50,000 tax bill on the same set of trades.
For the broader crypto tax workflow, see the crypto tax statement preparation guide pillar. For specific exchange workflows, see the Coinbase guide, the Kraken guide, the Gemini guide, and the Robinhood guide.
The 4 Cost Basis Methods
The IRS allows 4 cost basis methods for crypto. Each method gives a different tax result on the same set of trades. The 4 methods are FIFO, LIFO, HIFO, and Specific ID.
What most guides miss about crypto tax reporting is that the quality depends on the mechanism, not on the tool. Two tools that look different on the surface often run the same 4-step process underneath: read, find, parse, verify. The difference is in how well each step handles edge cases (merged cells, missing balances, non-standard date formats, scanned vs digital input).
Choosing between tools based on UI alone misses the actual quality lever.
Method 1: FIFO (First In, First Out)
FIFO is the IRS default. The first asset you bought is the first one sold. In the example above (bought at $20K, $40K, $60K, sold at $50K), FIFO says the cost basis is $20K. The gain is $30K ($50K – $20K).
FIFO works well in a rising market because the cost basis is the lowest, which produces the highest gain (and highest tax). In a falling market, FIFO produces the lowest gain (and lowest tax).
Method 2: LIFO (Last In, First Out)
LIFO is the opposite of FIFO. The last asset you bought is the first one sold. In the example, LIFO says the cost basis is $60K. The gain is $-10K ($50K – $60K), a loss of $10K.
LIFO works well in a rising market because the cost basis is the highest, which produces the lowest gain (and lowest tax). In a falling market, LIFO produces the highest gain (and highest tax). The IRS allows LIFO for crypto, but you must elect it on a timely-filed return.
Method 3: HIFO (Highest In, First Out)
HIFO minimizes your tax bill. The highest-cost asset is the first one sold. In the example, HIFO says the cost basis is $60K. The gain is $-10K ($50K – $60K), a loss of $10K. Same as LIFO in this case, but different in general.
HIFO is not an official IRS method, but it is allowed under Specific ID if you have the lot ID records. The tax software (CoinTracker, Koinly, TokenTax) implements HIFO as a Specific ID variant. The recon cutoff tool’s per-transaction export includes the lot ID, which makes HIFO possible.
Method 4: Specific ID
Specific ID lets you choose which lot to sell. The choice can be FIFO, LIFO, HIFO, or any other strategy (e.g., sell the lot that produces the most tax-efficient result). The IRS allows Specific ID if you have detailed records showing the lot ID at the time of sale.
Specific ID requires the recon cutoff tool’s per-transaction export with the lot ID column. Without it, the IRS default is FIFO. Most crypto tax software implements Specific ID as an option in the cost basis settings.
The Tax Bill Difference
The tax bill difference between FIFO and HIFO can be massive. The 3 examples below show the difference on a 3-lot sale.
Example 1: Rising Market
Bought 1 BTC at $20K, 1 BTC at $40K, 1 BTC at $60K. Sold 1 BTC at $50K.
FIFO: cost basis $20K, gain $30K, tax (20%) $6K.
LIFO: cost basis $60K, gain $-10K, tax (loss, no tax) $0.
HIFO: cost basis $60K, gain $-10K, tax (loss, no tax) $0.
Specific ID (HIFO): same as HIFO, tax $0.
Difference: $6K saved by using LIFO/HIFO instead of FIFO.
Example 2: Falling Market
Bought 1 BTC at $60K, 1 BTC at $40K, 1 BTC at $20K. Sold 1 BTC at $30K.
FIFO: cost basis $60K, gain $-30K, tax (loss, no tax) $0.
LIFO: cost basis $20K, gain $10K, tax (20%) $2K.
HIFO: cost basis $60K, gain $-30K, tax (loss, no tax) $0.
Specific ID (HIFO): same as HIFO, tax $0.
Difference: $2K saved by using FIFO/HIFO instead of LIFO.
Example 3: Multiple Sales, Mixed Market
Bought 1 BTC at $20K, 1 BTC at $40K, 1 BTC at $60K. Sold 1 BTC at $50K, 1 BTC at $30K.
FIFO: gains $30K + $-10K = $20K net, tax (20%) $4K.
LIFO: gains $-10K + $-30K = $-40K net, tax (loss, no tax) $0.
HIFO: gains $-10K + $-30K = $-40K net, tax (loss, no tax) $0.
Specific ID (HIFO): same as HIFO, tax $0.
Difference: $4K saved by using LIFO/HIFO instead of FIFO.


From Bank Statement to QuickBooks-Ready File
That manual cleanup you just read about? This tool skips it. Turn your PDF into QBO for QuickBooks without storing your data anywhere.
Start ConvertingThe Lot ID Requirement
Specific ID requires the lot ID at the time of sale. The lot ID is the unique identifier for each purchase lot. The recon cutoff tool’s per-transaction export includes the lot ID column. Without it, you’re stuck with FIFO.
Most exchanges provide the lot ID in the raw transaction history. The recon cutoff tool’s per-exchange handling (Coinbase, Kraken, Gemini, Robinhood) extracts the lot ID from each exchange’s format. The tax software then uses the lot ID for Specific ID.
How to Choose a Cost Basis Method
The right cost basis method depends on the market and your tax situation. The 3 factors.
Factor 1: Market direction. In a rising market, LIFO/HIFO minimizes tax. In a falling market, FIFO/HIFO minimizes tax. HIFO is the best in both directions, but requires Specific ID records.
Factor 2: Long-term vs short-term. Crypto held for more than 1 year is long-term (lower tax rate). Crypto held for less than 1 year is short-term (ordinary income rate). The cost basis method should consider the holding period.
Factor 3: Wash sale rule. The wash sale rule disallows losses on assets sold at a loss and repurchased within 30 days. The wash sale rule was extended to crypto starting in 2025. The cost basis method should consider the wash sale rule.
A common failure mode bookkeepers report is treating this as a single operation rather than a chain of dependent steps. The temptation is to find a tool that ‘just works’ and stop investigating the mechanism.
The result is a wrong-fix cycle: the tool gives partial output, the bookkeeper spends 30+ minutes troubleshooting, the fix is for the wrong step, and the same error recurs on the next statement. The fix: identify which step failed and apply the right intervention to that step.
Common Cost Basis Mistakes
3 mistakes crypto investors make on cost basis.
Defaulting to FIFO without checking. FIFO is the IRS default, but it’s rarely the lowest-tax option. The fix: check the cost basis method every year, not just the first year.
Not having lot ID records. Specific ID requires the lot ID. Without it, the IRS default is FIFO. The fix: the recon cutoff tool’s per-transaction export includes the lot ID. The export is the input to the tax software.
Switching methods without records. Switching from FIFO to HIFO mid-year requires detailed records. The fix: pick a method at the start of the year and stick with it. The recon cutoff tool’s per-transaction export provides the records.
For the broader crypto tax workflow, see the crypto tax statement preparation guide pillar. For specific exchange workflows, see the Coinbase guide , the Kraken guide , the Gemini guide , and the Robinhood guide . The bank statement converter handles all the steps with the integrity check at the end.
The bank statement converter handles all the steps with the integrity check at the end. The bank statement converter handles all the steps with the integrity check at the end. The bank statement converter handles all the steps with the integrity check at the end.
Related: complete 1099-DA crypto tax guide
This topic is part of the broader 1099-DA and crypto-tax cluster on this site. The consolidated hub for the entire topic, including the form mechanics, broker requirements, cost basis methods, reconciling to bank statements, and state-level differences, now lives in the complete 1099-DA crypto tax reporting guide.
For related reading, the complete US bank payment rails guide covers ACH and wire cash flows from crypto exchanges, and the complete MCC guide covers merchant category codes on credit-card statements. The expanded bank statement anatomy pairs naturally with this hub.
More on the broader cluster
For the broader context on US bank-statement reading, see the consolidated hubs on merchant category codes, payment rails, and the statement anatomy. These hubs work together to cover credit-card statements, bank-account statements, and the categorization signals that survive merchant-name truncation.
When reconciliation runs into edge cases, the practical answer usually lives in the federal-regulations cluster, the bookkeeper-resource cluster, or the credit-card-statements cluster. Each offers a domain-specific take on the same underlying signal.
Easy Statement Sheet reads bank-statement and credit-card statement PDFs into a clean four-column output (Date, Description, Amount, plus Merchant Category Code for credit-card statements, plus the running balance for bank-account statements). Files are never stored.
The first three statement conversions are free, no card required. Plans start at $15 per month. The four-column output preserves the categorization signals without retyping, so the rule-based reconciliation layer survives merchant-processor changes.
Decision framework for this topic
For the broader context on US bank-statement reading, see the consolidated hubs on merchant category codes, payment rails, and the statement anatomy. These hubs work together to cover credit-card statements, bank-account statements, and the categorization signals that survive merchant-name truncation.
Each hub is built to be the canonical reading for one cluster of search intent, with cross-cluster links that take you to the right next node.
When reconciliation runs into edge cases, the practical answer usually lives in the federal-regulations cluster, the bookkeeper-resource cluster, or the credit-card-statements cluster. Each offers a domain-specific take on the same underlying signal. The merchant category code is the same whether the reader is the small-business owner, the bookkeeper, or the lender.
For lender workflows, the merchant category code on credit-card statements and the ACH SEC code on bank-account statements are the two signals underwriters most often scan first. Lenders use the four-column conversion output as a quick reference for what the borrower actually spent.
Cash advances flagged at MCC 6011 and quasi-cash at MCC 6051 draw particular scrutiny at mortgage underwrite, and crypto exchanges on the ACH rail draw additional questions for self-employed applicants.
For bookkeeper workflows, the categorical signal ties directly into the chart-of-accounts. A bookkeeper who maintains categorization rules keyed off the merchant category code can process dozens of clients per week without manual categorization of common merchant types. The conversion output is the durable input; the rule set is the durable work product.
Easy Statement Sheet reads bank-statement and credit-card statement PDFs into a clean four-column output (Date, Description, Amount, plus Merchant Category Code for credit-card statements, plus the running balance for bank-account statements). Files are never stored. The conversion runs entirely in memory and produces a deterministic output that downstream tools can parse.
The first three statement conversions are free, no card required. Plans start at $15 per month. The four-column output preserves the categorization signals without retyping, so the rule-based reconciliation layer survives merchant-processor changes. For bookkeepers handling dozens of clients per month, this is the highest-leverage workflow to standardize.
Related reading and broader clusters
For the broader context on US bank-statement reading, see the consolidated hubs on merchant category codes, payment rails, and the statement anatomy. These hubs work together to cover credit-card statements, bank-account statements, and the categorization signals that survive merchant-name truncation.
Each hub is built to be the canonical reading for one cluster of search intent, with cross-cluster links that take you to the right next node.
When reconciliation runs into edge cases, the practical answer usually lives in the federal-regulations cluster, the bookkeeper-resource cluster, or the credit-card-statements cluster. Each offers a domain-specific take on the same underlying signal. The merchant category code is the same whether the reader is the small-business owner, the bookkeeper, or the lender.
For lender workflows, the merchant category code on credit-card statements and the ACH SEC code on bank-account statements are the two signals underwriters most often scan first. Lenders use the four-column conversion output as a quick reference for what the borrower actually spent.
Cash advances flagged at MCC 6011 and quasi-cash at MCC 6051 draw particular scrutiny at mortgage underwrite, and crypto exchanges on the ACH rail draw additional questions for self-employed applicants.
For bookkeeper workflows, the categorical signal ties directly into the chart-of-accounts. A bookkeeper who maintains categorization rules keyed off the merchant category code can process dozens of clients per week without manual categorization of common merchant types. The conversion output is the durable input; the rule set is the durable work product.
Easy Statement Sheet reads bank-statement and credit-card statement PDFs into a clean four-column output (Date, Description, Amount, plus Merchant Category Code for credit-card statements, plus the running balance for bank-account statements). Files are never stored. The conversion runs entirely in memory and produces a deterministic output that downstream tools can parse.
The first three statement conversions are free, no card required. Plans start at $15 per month. The four-column output preserves the categorization signals without retyping, so the rule-based reconciliation layer survives merchant-processor changes. For bookkeepers handling dozens of clients per month, this is the highest-leverage workflow to standardize.
Turn any PDF statement into a clean sheet
Skip the typos and the hours of copying. Our converter handles any bank statement format and outputs Excel, CSV, or QBO for QuickBooks. No file retention, free to try.
Convert your statement






