Starting January 1, 2025, under IRS Rev. Proc. 2024-28, all taxpayers must use an account-by-account cost basis method for crypto transactions. Unfortunately, this change adds significant complexity to crypto reconciliations. Here’s why:
More Complex Tax Calculation Chains
With the account-by-account method, the depth of tax calculations increases due to the way each transaction affects future ones. Let’s break it down with a simple dataset:
In a universal cost basis method, you would only need to ensure that the purchase, transfer fee, trade, and trade fee are accurate—four tax calculations in total. However, under an account-by-account cost basis method, you now need to account for the purchase, withdrawal, deposit, transfer fee, trade, and trade fee—resulting in six calculations. Every self-transfer adds two more tax calculations, making reconciliations more intricate.
Accurate Asset Stacks Per Account
Let’s break this down with the same sample dataset:
In a universal cost basis method, only the total volume of assets matters. However, under an account-by-account system, not only do you need to track asset volumes, but also where those assets are held. This leads to a new challenge: unmatched deposits.
Unmatched Deposits Are A New Consideration
An unmatched deposit happens when a self-transfer is recorded but the originating account doesn’t have the asset. Here’s an example:
- Purchase: 1 ETH on Binance.US
- Withdrawal: 2 ETH from Binance.US
- Deposit: 1.99 ETH to MetaMask
Here, there’s a 0.01 ETH transfer fee, but 1 ETH is missing from the Binance.US records.
A bad crypto tax software would incorrectly transfer 0.99 ETH and log the fee. However, a good crypto tax software would flag the issue by adding the missing 1 ETH with a $0 cost basis and marking it as unmatched, allowing you to identify the problem early. This saves you from the hassle of searching for a needle in a haystack when the issue eventually leads to an unmatched trade.
Self-Transfers Must Match Perfectly
In the past, self-transfers under a universal cost basis method only required accuracy for the transaction fee. For instance:
- Withdrawal: 1 ETH from Coinbase
- Deposit: 0.99 ETH to MetaMask
Previously, you’d just ensure that the 0.01 ETH transaction fee was accounted for. Now, with an account-by-account method, you need to ensure both the fee and the exact withdrawal amount (0.99 ETH) are accurately recorded. This prevents volume issues for your account’s holdings.
This would require updating the data from above to the following:
- Withdrawal: .99 ETH from Coinbase.
- Deposit: .99 ETH to MetaMask.
- Fee: .01 ETH.
Why This Could Actually Be a Positive Thing
Though account-by-account basis introduces more complexity, it ultimately leads to more realistic tax calculations. By tracking assets per wallet, you can easily pinpoint discrepancies and resolve them. Additionally, it prevents scenarios like large capital gains from selling old assets under FIFO, which is common with universal cost basis methods.
Need Help?
If all this seems overwhelming, don’t worry! We’re here to help you navigate these changes and ensure your crypto taxes are accurate and compliant!