PNL Calculation for DeFi / How to Create Custom File Entries

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)

2. Paying Interests

3. Adding Liquidity (LP token)

4. Trading Borrowed Tokens

5. Trades Involving Credit Tokens

6. Gas Fees Associated with DeFi transactions

7. Adding/Removing Liquidity

 

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.

 

DeFi_I.png

 

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 (Japanese only).

 

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.