This article explains how the PNL is calculated for DeFi and how to create custom file entries for them. Please have a custom file handy as you go through this article. You can download a sample file from here. In addition, for details on how to use DeFi capabilities, please refer to here.
Disclaimer
As stated in the Terms of Use, Cryptact is not responsible for the following content. In addition, the information provided here is only a general description and does not take into account individual circumstances. In the future, the National Tax Agency may issue guidance on DeFi which differ from the below. We accept no liabilities in such events. If you have any questions about tax, please contact your tax advisor.
Contents
1. Receiving Interests (Liquidity Mining)
3. Adding Liquidity (LP token)
5. Trades Involving Credit Tokens
6. Gas Fees Associated with DeFi transactions
1. Receiving Interests (Liquidity Mining)
In DeFi, you have many opportunities to receive interest-like payments for using its services. Cryptact treats these as bonuses.
Example: You received 0.15 ETH interest for the 100 ETH that you have deposited to Compound.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy |
---|---|---|---|---|---|---|---|---|
Date/time of when you received it | BONUS | Compound (Optional) | ETH | 0.15 |
(blank *1)
|
JPY(*2) | 0 | JPY(*2) |
*2 "Counter currency" and "Fee ccy" - please make sure to input the fiat currency. If fees are incurred in cryptocurrency, please provide a separate record for LOSS history.
Example: You received 0.1 COMP token that Compound distributed.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy |
---|---|---|---|---|---|---|---|---|
Date/time of when you received it | BONUS | Compound (Optional) | COMP | 0.1 |
(blank *1)
|
JPY(*2) | 0 | JPY(*2) |
(*1) If you leave this column blank and the settlement (counter) currency is a fiat currrency, Cryptact will look up the price automatically.
(*2) "Counter currency" and "Fee ccy" - please make sure to input the fiat currency. If fees are incurred in cryptocurrency, please provide a separate record for LOSS history.
2. Paying Interests
If it is deductible, you can upload a custom trade as below.
Example: You paid 0.01 ETH interest in Compound.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy |
---|---|---|---|---|---|---|---|---|
Date/time of when you paid it | LOSS | Compound (optional) | ETH | 0.01 |
(blank *1)
|
JPY(*2) | 0 | JPY(*3) |
(*1) Leave the price blank.
(*2)Only fiat currency is supported. If you enter cryptocurrency, an error will occur.
(*3)"Fee currency" - In addition to fiat currency, you can input cryptocurrency (limited to cases where it is the same as the base currency). If the fee currency is the same as the base currency, the accounting currency equivalent of the incurred fee will be subtracted from the realized profit and loss of the corresponding transaction.
3. Adding Liquidity (LP token)
You can deposit a coin pair to a liquidity pool on a platform, and earn interest-like rewards based on the volume of swaps that occur in that pool. In addition, when you deposit your coin pair, you may receive an LP token, a coin which is almost like a receipt for your deposit.
For how to handle "Add Liquidity", please refer to here.
4. Trading Borrowed Tokens
You deposited collateral to borrow a token, and you traded the borrowed token. You can upload these events as following custom trades.
Example: You deposited ETH to Compound and borrowed 2,000 USDC. You deposited the borrowed USDC in a pool in Uniswap. When you retrieved it you received 1,200 USDC and 300 DAI. After that, you purchased 800 USDC in Binance and returned the borrowed 2,000 USDC to Compound.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy |
---|---|---|---|---|---|---|---|---|
Date/time when you borrowed | BORROW |
Compound#1 (*3) |
USDC | 2000 |
(blank *1)
|
JPY(*2) | 0 | JPY |
Date/time when you withdrew | BONUS | Uniswap (optional) | DAI | 300 |
(blank *1)
|
JPY(*2) | 0 | JPY(*2) |
Date/time when you withdrew | SELL |
Uniswap (optional) |
USDC | 800 |
0
|
JPY | 0 | JPY |
Date/time when you returned the token | RETURN |
Compound#1 (*3) |
USDC | 2000 |
(blank *1)
|
JPY(*2) | 0 | JPY |
(*1) If you leave this column blank and the settlement (counter) currency is a fiat currrency, Cryptact will look up the price automatically.
(*2) "Counter currency" and "Fee ccy" - please make sure to input the fiat currency. If fees are incurred in cryptocurrency, please provide a separate record for LOSS history.
(*3) The Source for BORROW and RETURN need to be the same.
* For the transaction done at Binance, you can upload the Binance trade history file.
5. Trades Involving Credit Tokens
Here is an example of how to upload trades involving credit tokens, which you receive as a record of your deposit when you deposit cryptocurrency to a pool.
・ You didn't do anything with the credit token. You simply withdrew the token you had deposited from the pool.
⇒ No need to upload anything for PNL calculation.
・ You sold/bought credit tokens
⇒ Treat this as exchanging cryptocurrency that the credit token corresponds to (e.g. cETH corresponds to ETH) with another currency
Example: You deposited 10 ETH and, as a record for the deposit, received 100 cETH. You sold 30 cETH for 1,200 USD. When you sold cETH, you had 11 ETH in the pool.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy |
---|---|---|---|---|---|---|---|---|
Transaction date/time | SELL | Compound (optional) | ETH | 3.3(*1) |
400(*2)
|
USD | 0 | USD |
(*1) 11ETH*30cETH/100cETH
(*2) 1,200USD/30cETH
6. Gas Fees Associated with DeFi transactions
We understand that there is a possibility of recognizing gas expenses incurred for the transaction. However, please also check with your local tax office how they should be treated.
"book price for the coin * quantity" will be treated as an expense in PNL calculation.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy |
---|---|---|---|---|---|---|---|---|
Transaction date/time | DEFIFEE | (optional) | BNB | 0.01 | blank or 0 | JPY (*1) | 0(*1) | JPY(*1) |
(*1) Column Counter, Fee, and FeeCcy are not used. Please populate them as above.
For questions on how to create custom file entries for other scenarios, please contact us via the support button at the bottom right and we will do our best to advise.
7. Adding/Removing Liquidity
Cryptact calculates the PNL based on the difference in the number of coins deposited and withdrawn.
Example: You added liquidity into a Pancake Swap pool by depositing 20 BUSD and 18 USDC pair. When you removed the liquidity, you received 21 BUSD and 17 USDC. You can upload these as custom trades as follows.
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy |
---|---|---|---|---|---|---|---|---|
Remove Liquidity date/time | BONUS | Pancake Swap (optional) | BUSD | 1 |
(blank *1)
|
JPY(*2) | 0 | JPY(*2) |
Remove Liquidity date/time | LOSS | Pancake Swap (optional) | USDC | 1 |
(*3)
|
JPY(*4) | 0 | JPY(*5) |
(*1) If you leave this column blank and the settlement (counter) currency is a fiat currrency, Cryptact will look up the price automatically.
(*2) "Counter currency" and "Fee ccy" - please make sure to input the fiat currency. If fees are incurred in cryptocurrency, please provide a separate record for LOSS history.
(*3) Leave the price blank.
(*4)Only fiat currency is supported. If you enter cryptocurrency, an error will occur.
(*5)"Fee currency" - In addition to fiat currency, you can input cryptocurrency (limited to cases where it is the same as the base currency). If the fee currency is the same as the base currency, the accounting currency equivalent of the incurred fee will be subtracted from the realized profit and loss of the corresponding transaction.