Cryptocurrency taxes (known formally as capital gains taxes) have to be paid on the profit/loss that you make from crypto trading. In this article we will look at how they are calculated.
A capital gain (profit/loss) occurs when you sell or trade cryptocurrencies and is calculated by subtracting the price you bought the crypto for (cost-basis) from the price you are selling it for.
Capital Gain = Selling Price - Cost basis. This seemingly simple formula becomes complicated when you add more transactions as we will see. The amount of tax you pay is a percentage of your total capital gains.
Note: Cost-basis is an accounting term that refers to: purchase price + fees + any other acquisition costs.
The best and easiest way of explaining the process of calculating your capital gains is through an example. So, in this article we are going to assume that, a fictional character, John has made the following crypto transactions and wants to calculate his capital gains and taxes.
|ID||Type||Date||Amount||Price||Fees||Cost basis||Capital Gains|
|1||Buy||2018-01-01||0.25 BTC||99 USD||1 USD||100 USD||N/A|
|2||Buy||2018-05-20||0.50 BTC||495 USD||5 USD||500 USD||N/A|
|3||Sell||2018-06-01||0.50 BTC||200 USD||0||?||?|
|4||Sell||2019-06-25||0.25 BTC||400 USD||10 USD||?||?|
The first step in determining John's capital gains is figuring out the cost basis of the sold cryptocurrency.
We know that John bought a total of 0.75 BTC for 600 USD. So, an easy way of calculating the cost-basis for each of the Sell transactions would be to divide the total cost by the total holdings. This is known as Average Cost Basis (ACB). There are also other ways of calculating the cost-basis known as First In First Out (FIFO), Last In First Out (LIFO) and a special variant known as Specific Identification (Spec ID).
In the US, the IRS allows only FIFO, LIFO and potentially Spec ID to determine the cost-basis. ACB is not allowed in the US but is still widely used in countries like Canada & Sweden.
Lets look at how the cost-basis is calculated using each of these methods.
Average Cost Basis (ACB) is the simplest of all accounting methods. You simply calculate the average price for your holdings in a coin and use that as the cost-basis. The cost-basis for John's two sell transactions can be calculated like this:
600 / 0.75 = 800 USD. So, the cost-basis for 0.5 BTC is:
800 x 0.5 = 400 USD.
600 (total cost) - 400 (already sold) = 200 USD. However, this sale also had a $10 fee so the actual cost-basis is $210.
Now that we have the cost-basis for all transactions, the capital gains can be easily calculated:
200 (selling price) - 400 (cost-basis) = -200 USD
400 - 210 = +190 USD
The final capital gains using ACB are -10 USD which means John made a loss of $10.
First In First Out (FIFO) means you have to sell the coin that was bought first, first.
100 + (500/2) = 350 USD
(500/2) + 10 = 260 USD
Let's calculate the capital gains:
200 - 350 = -150 USD
400 - 260 = +140 USD
Here the final taxable gains are
140 - 150 = -10 USD. Again, a loss of 10 USD.
Last In First Out (LIFO) is the opposite of FIFO - here the most recently bought coins are sold first.
100 + 10 = 110 USD.
The capital gains are calculated in the same way as FIFO/ACB:
200 - 500 = -300 USD
400 - 110 = +290 USD
The final capital gains are thus -10 USD.
Specific Identification allows you to pick the assets that you want to sell instead of simply relying on the date of purchase like with FIFO/LIFO. SpecID is generally used when selling stocks/bonds and is allowed by the IRS (United States) on the proviso that you can 'adequately identify' the lots that you are selling. It is not known if cryptocurrency holders can make use of it - as cryptocurrency is classified as property.
Lets look at a different example that can better demonstrate SpecID:
Alice bought 1 BTC for 1000 USD in January and another 1 BTC in Feb for 5000 USD. She sold 1 BTC in May for 4000 USD. Here are her transactions:
|Type||Date||Amount||Price||Cost basis||Capital Gains|
|Buy||2016-01-01||1 BTC||1000 USD||1000 USD||N/A|
|Buy||2018-02-01||1 BTC||5000 USD||5000 USD||N/A|
|Sell||2019-05-01||1 BTC||4000 USD||?||?|
Alice has decided to use SpecID. She is aware that she must be able to identify the BTC that she is selling in order to make use of SpecID. To comply with this requirement, the 1 BTC she bought in January is stored in address 0x11111 and the BTC she bought in Feb is stored in 0x22222. This setup allows her to 'adequately identify' the lots that she is selling.
If she sells 1 BTC from 0x11111, her cost-basis would be +3000 USD (profit). If she sells 1 BTC from 0x22222, her cost-basis would be -1000 USD (loss). With this knowledge Alice is much better equipped to make tax-efficient trades.
As you can see all methods resulted in a loss of -10 USD. However, this is due to the low number of transactions and the fact that all of the bitcoin was sold. Under real trading conditions the results of FIFO, LIFO and ACB can be quite different.
Ultimately the choice of method comes down to what is allowed in your country. If you are US based - you have several options but the most recommended and conservative one is FIFO. In countries where you are allowed to choose between different methods it is important to be consistent. You will need to pick a method and stick to it. It is generally quite difficult to switch a method and doing so usually requires authorization from the tax agencies.
With cryptocurrency tax reporting, the most crucial thing is to keep track of ALL your transactions and trades. If you are a daredevil you may attempt to do your crypto taxes with excel but be prepared to spend many hours on it - generating accurate crypto tax reports is a very time-consuming and elaborate process. We at Koinly have built a cryptocurrency tax solution that allows you to easily generate tax reports using the accounting method of your choice.
If you are interested in finding out more about how crypto taxation works, check out our tax guides. We have recently published a comprehensive guide on How crypto taxation works in the United States.
From us to your inbox, weekly.