For digital assets, the IRS allows 2 cost basis methods: FIFO (First In, First Out) and Specific Identification (Spec ID). Average Cost is not allowed for crypto (only for mutual funds). The choice of method can change the realized gain by thousands of dollars on a single transaction, but Spec ID requires per-unit purchase records that most taxpayers do not keep.
The default for users without records is FIFO, and the broker usually reports basis on 1099-DA using FIFO unless the user elects Spec ID.
The 3 Cost Basis Methods the IRS Allows (or Doesn’t)
The IRS recognizes 3 cost basis methods for capital assets. Only 2 apply to digital assets.
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.
FIFO (First In, First Out): Allowed for Crypto
The first units purchased are the first units sold. If a user bought 1 BTC in January and another 1 BTC in June, then sold 1 BTC in December, FIFO says the December sale is based on the January purchase. The cost basis is the January price.
FIFO is the default for digital assets if no other election is made. It is also the easiest to track: the broker uses chronological purchase history and applies it to each sale.
Specific Identification (Spec ID): Allowed for Crypto
The user identifies which specific units are being sold. If a user bought 1 BTC at $30,000 in January and 1 BTC at $50,000 in June, then sold 1 BTC in December at $60,000, Spec ID lets the user choose to use the $50,000 basis (lower gain) instead of the $30,000 basis (higher gain).
Spec ID requires per-unit purchase records and an election at the time of sale. The election is documented on Form 8949 by leaving the basis code blank (or using a per-unit identifier).
Average Cost: Not Allowed for Crypto
The user averages the cost of all units held during the year. Average Cost is allowed for mutual funds and certain other regulated investment companies, but not for digital assets.
The IRS has not issued specific guidance on why Average Cost is not allowed for crypto, but the rationale is that crypto is treated as property, not as a regulated investment. Spec ID serves a similar function for crypto.
FIFO: The Default That Most Taxpayers Use (and Why)
FIFO is the default because it requires no election and no per-unit records. The broker applies FIFO automatically when reporting basis on 1099-DA.
When FIFO Is the Right Choice
FIFO is the right choice when the user has no specific reason to choose another method. It is the lowest-effort, lowest-record-keeping option, and it produces the same result regardless of which broker or tax software is used.
For a user with a small number of transactions (under 50 per year) and no specific tax planning goal, FIFO is the right choice. The user does not need to keep per-unit records; the broker’s records are sufficient.
When FIFO Is the Wrong Choice
FIFO is the wrong choice when the user has older purchases at a low cost and newer purchases at a high cost, and wants to sell the high-cost units to reduce the realized gain. In this case, Spec ID is the right choice.
FIFO is also the wrong choice when the user has tax-loss harvesting opportunities. Spec ID lets the user sell specific loss-generating lots; FIFO forces the user to sell the oldest lots first, which may not be the most tax-efficient.


From PDF to Excel in one click
Forget retyping line by line. Upload any bank statement, get a spreadsheet you can actually use. Your files are never stored, and you can test the converter with 3 free conversions.
Try it freeSpecific Identification: Lower Tax, But Requires Records
Spec ID is the tax-optimization method for digital assets. The user identifies which specific units are being sold and uses their cost basis.
The 4 Records the IRS Requires
To support a Spec ID election, the user must keep:
Per-unit purchase history: the date, price, and quantity of each unit purchased. The user cannot aggregate; each unit must be tracked individually.
Per-unit sale identification: at the time of sale, the user must identify which specific units are being sold. The election is documented on Form 8949.
Per-unit holding period: the user must track how long each unit was held, because the holding period affects short-term vs long-term capital gain.
Per-unit source documentation: the user must have records (exchange statements, wallet records) to support the per-unit history. Self-reported data without supporting documents does not satisfy the IRS requirement.
The 3 Conditions for a Valid Spec ID Election
The user must have the records at the time of sale. Constructing records after the sale to support Spec ID is not valid.
The election must be unambiguous. The user must clearly identify which specific units are being sold, not a range or a category.
The election must be consistent. The user cannot use Spec ID for some sales and FIFO for others in the same tax year without IRS consent.
The Practical Barrier
Most taxpayers cannot meet the record-keeping requirement. Crypto exchanges provide aggregate purchase history (date, price, total quantity), not per-unit history. To use Spec ID, the user has to reconstruct per-unit history from the exchange’s data, which is time-consuming and error-prone.
The alternative: use crypto tax software (CoinTracker, Koinly, TokenTax) that maintains per-unit history automatically. The software generates the per-unit records and supports the Spec ID election. The cost is $50-$500 per year depending on transaction volume.
How to Switch Methods (and When You Cannot)
The user can switch from FIFO to Spec ID, or vice versa, by making an election on Form 8949. The election applies to all sales in the tax year.
The Default Election
If the user makes no election, FIFO is the default. The broker reports basis using FIFO on 1099-DA, and the user reports the same on Form 8949.
The Spec ID Election
To use Spec ID, the user leaves the basis code blank (or uses a per-unit identifier) on Form 8949. The user must have the per-unit records to support the election.
Mid-Year Switching
The user cannot switch methods mid-year. The election made on the first Form 8949 entry applies to all entries for the year. Switching mid-year is treated by the IRS as a change in accounting method, which requires Form 3115 and IRS consent.
Year-Over-Year Switching
The user can switch from FIFO in year 1 to Spec ID in year 2, or vice versa, by making a new election on the new year’s Form 8949. The change applies prospectively only; prior year returns are not amended for the change.
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.
The Decision Rule
For most users, FIFO is the right choice. The cost of maintaining per-unit records for Spec ID outweighs the tax savings, especially for users with under 50 transactions per year.
For users with high transaction volume (100+ per year) or specific tax planning goals, Spec ID can save thousands of dollars. The investment in crypto tax software is worth it.
For users with mixed crypto and securities, the cost basis rules differ between the two asset classes. 1099-DA and 1099-B may report different basis methods, and the user has to reconcile them on Form 8949.
The 1099-DA pillar covers the form’s anatomy. The 1099-DA vs 1099-B sub-pillar covers the 6 differences. The bank statement reconciliation spoke covers the verification workflow. The broker reporting requirements spoke covers who counts as a broker.
For a deeper understanding, see: 1099-DA pillar . 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 PDF Bank Statements Into Workable Spreadsheets
Your bank statement is a mess of numbers, but your books shouldn't be. Use our converter to get Excel, CSV, or QBO files — ready for QuickBooks.
Try It Free Now







