For US users, the IRS has made some changes in how we calculate taxes for capital gains. They published the details in July 2024 in Notice 2024-28.
We wrote about it
https://bitcoin.tax/blog/irs-rev-proc-2024-28-preparing-2025-crypto-reporting-requirements/
and the safe harbor requirements.
https://bitcoin.tax/blog/safe-harbor-tool-irs-2024-28/
Essentially, from 2025 onwards,
1 All gains must be calculated per wallet rather than using universal accounting
2. FIFO is the default, except where you have a standing order or can specifically identify a lot before a trade is executed.
Transfers must be included
Assuming you have done the safe harbor, or now have your 2025 opening data correct per wallet/account, then it is extremely important to track each transfer between your wallets and accounts.
A transfer is a withdrawal from one account and a deposit into another, with an optional fee.
Bitcoin.tax will find the lots and cost basis that are being transferred out and assign them to the new account. This way you could, for example, register moving older coins from a hardware wallet to your exchange to sell.
If you don't add transfers you will likely see unmatched trades in your Reports.
Manually add a transfer
You can either add a transfer manually or it will be included within an import, if the exchange reports that information.
Go to the Spending tab, and in the form on the left, add your entry. For example, here we are adding a Withdrawal from Kraken to Binance of 1 BTC plus a 0.00001 fee.
This will:
1. Add the Withdrawal into your Spending for Kraken, find the appropriate lot/cost basis and remove that from your Kraken balance.
2. Treat the additional 0.0001 fee as a Spend from your Kraken account and calculate any appropriate capital gains or losses.
3. Automatically add a Deposit into the Income tab for your Binance account of 1 BTC and give it the cost basis taken from your Kraken lots.
These two entries are linked so any changes you make to the Withdrawal or Deposit, such as the account, amount or crypto, will also be reflected in the deposit, and vice versa.
Deleting the deposit or withdrawal, will also delete the other.
Importing transfers
Transfers that are imported from a CSV or exchange will NOT automatically create a pair. Instead they will be marked as unmatched until we can detect a corresponding pair.
For example, say I import my Kraken CSV that has a Withdrawal of 1 BTC, it will appear with an exclamation.
However, if I now go into Income and import my CSV from Binance, which contains my deposit of 1 BTC, we will match these and the warning will be removed.
Add a linked transfer
You can also click on the dropdown for your withdrawal and add a linked deposit
This will create a matching entry in the Income tab for your deposit into the appropriate account.
Unmatched Withdrawals
Any Withdraws that we cannot match will also be flagged in the Withdrawal Report. This should be reviewed and an an appropriate Deposit imported or added.