Managing Liquidity Pool Transactions

  • How do you properly handle the transactions into and out of a liquidity pool?
  • Why isn’t ACCOINTING.com tracking my LP Token’s value?
  • How do I classify the interest I received for providing liquidity?

If you’ve ever had any of these questions relating to liquidity pool transactions or their associated token, then this article is for you. In this article, we will try to answer these questions, and more. We do so, so you don’t have to worry about overpaying your taxes.

Warning!

If you live in a jurisdiction that taxes your liquidity pool transactions as separate buy/sell events, like Germany, take notice. Your transactions are already being handled correctly by default. The only thing you would need to do is ignore the Liquidity Pool Token, and classify interest received as “Income” or “Liquidity Pool”. If you would like to learn more about these topics, you can read the associated sections below.

The Interest Received From The Liquidity Pool

The interest received from providing liquidity is simple to handle. Receiving interest from a liquidity pool creates a taxable event, so its transaction would need to be classified. To do so, all you need to do is to classify the interest deposits as “Liquidity Pool”. The screenshot below provides an example of what this would look like.

Example of an interest deposit being classified as “Liquidity Pool”

Entering / Exiting The Liquidity Pool

By default, ACCOINTING.com already handles the transactions into and out of a liquidity pool. The default method may or may not be the right way for you. If you’d like to find out if it is and to see the proposed way, you can read more about them in the following sections.

To show you the difference between these two methods, we will follow an example of entering a liquidity pool with 300 USDT and 1 BNB.

Using The Default Method

The default way is for any jurisdiction that taxes your liquidity pool transactions as separate buy/sell events. Therefore, if your jurisdiction doesn’t tax those transactions in that way, you will overpay on your taxes. The following is how to manage your transactions using the default method.

Entering a Liquidity Pool

When entering a liquidity pool, you are selling the coins you are using to provide that liquidity. You also receive a token that represents your stake in the pool. But, this token has no trackable value. Therefore, getting your tokens out of the pool upon exiting is its only function. The following screenshot will show you an example of what this would look like.

Example of transactions entering a liquidity pool using the default method
Example of transactions entering a liquidity pool using the default method

Exiting a Liquidity Pool

When exiting a liquidity pool, you are buying back the coins used to provide liquidity. You use the Liquidity pool token received earlier to get your coins back. Using this method, the amounts received when exiting could differ from the amounts put in when entering and it wouldn’t make a difference. Following the example in this section, the screenshot below will show what it would look like when exiting with discrepancies between the original coin amounts.

Example of transactions entering a liquidity pool using the default method
Example of transactions entering a liquidity pool using the default method

Using The Proposed Method

The proposed method of handling your transactions entering/exiting a liquidity pool is by classifying them as internal transactions. By doing so, the coins never leave your possession for tax reasons and have the benefit of holding their value in your portfolio. The following are some changes that need to be made to handle your transactions in this way.

  1. Create a new wallet that represents the liquidity pool.
  2. Create transactions into the new wallet that correspond with the transactions from your real wallet.
  3. Fix any discrepancies between the coin amounts that were created when exiting the liquidity pool.
  4. Classify the transactions as internal.

Read the following sections to learn how to handle this process.

Creating The Liquidity Pool Wallet

Creating a new wallet that represents the pool is easy. The only thing you need to do is go to the “Add Wallet” section of the web app. Once there, give it a name that represents your pool. In our case, we’ll name it “BNB/USDT LP” or something similar. In the screenshot below, you can see what that would look like.

Example of creating a new wallet representing the liquidity pool
Example of creating a new wallet representing the liquidity pool

Once you click on “Create manual wallet <YOUR WALLET NAME>”, you’re all done by creating your new wallet. You can close that window or click on the form to add your transactions in the next section.

Creating The Corresponding Transactions

We then just need to add the corresponding transactions to the new wallet. To do so, we need to look at the transactions in our real wallet and get the timestamp, transaction type, and coin amount. Then match up every deposit with a corresponding withdraw and vice versa. The screenshot below will show you what those transactions will look like following our example from the section.

Example of transactions corresponding to the transactions from the real wallet
Example of transactions corresponding to the transactions from the real wallet

Notice two things from the above example. First, we are not creating transactions for the Liquidity Pool Token. Second, there are discrepancies between the deposit and withdrawal amounts. In the next section, we will learn how to fix that problem.

Fixing Discrepancies

There are a few different ways you can fix any discrepancies in your transactions. The way you deal with them depends on if the coin amounts are more or less than the initial amounts. In our example, we have one coin that is more and one coin that is less. Any coin that is fewer needs a corresponding withdrawal classified as a “Fee”. Any coin that is more needs a corresponding deposit transaction classified as “liquidity pool”. The screenshot below will show what this would look like.

Example of fixing the discrepancies when exiting the liquidity pool
Example of fixing the discrepancies when exiting the liquidity pool

That example shows how to handle discrepancies over and under the starting amount. If the amounts are both over the starting amount, you would create both transactions as deposits classified as interest. If the amounts are both under the starting amount, you would then create both transactions as withdraws classified as a “Fee”.

Alternatively, we can instead use an order transaction to take care of both discrepancies at the same time. I do this when one amount is over and the other is under, like in our example above. The screenshot below will show what that would look like.

Simplified example of fixing the discrepancies when exiting the liquidity pool
A simplified example of fixing the discrepancies when exiting the liquidity pool

As you can see, both examples do the same thing, the latter is just easier to read. The only thing left now is to classify the internals.

Classifying the Internal Transactions

Finally, once you have unclassified all of your transactions that need to be reclassified as internal, you can continue. To classify the transactions as internal, you just go to the “Identify Internals” section of the review process and select the ones you want to change, and click “Approve”. The example below shows what it looks like when transactions are ready to be classified as internal.

Example of transactions ready to be classified as internal
Example of transactions ready to be classified as internal

Once completed, the transactions in your liquidity pool wallet should now look like the following.

Example of the transactions in your liquidity pool wallet after using the proposed method
Example of the transactions in your liquidity pool wallet after using the proposed method

Continue on to the next section to learn what to do with the Liquidity Pool Token and its transactions.

The Liquidity Pool Token

The Liquidity Pool (LP) Token is the same as a receipt for the deposit into a Liquidity Pool. Removing liquidity from the associated liquidity pool is the LP Token’s only function. Therefore, we can’t track its value. If you would like to make the transactions of the LP Token more clear, make the following change listed in this section.

Classifying The Liquidity Pool Token

We need to ignore the LP Token because we can’t track or identify the token properly. You can do so in the “Unknown Currencies” section of the review process. Just mark “Yes” and you’re done. The example below shows what that would look like.

Example of Ignored LP Token

Handling The Liquidity Pool Token Transactions

The transaction may or may not include a transaction fee. To account for that fee, the transactions would need to be handled differently. Read the sections below to learn how to deal with each kind of transaction.

Transactions Without Fees

If the transaction does not have a transaction fee, we can safely ignore it. Doing so would make your transaction look like this;

Example of ignored LP Token Deposit
Example of ignored LP Token Deposit

Transactions With Fees

To account for the transaction fee associated with the Withdraw of your Liquidity Pool Token, you would just need to classify that transaction as a “Fee”. An example of this would like the following.

Example of a LP Token Withdraw Classified as a "Fee"
Example of an LP Token Withdraw Classified as a “Fee”

If the transaction of the liquidity pool token was a deposit, then you would need to add a manual withdrawal that includes the fee. Doing so would let you classify it as a “Fee”.

When creating the manual withdrawal transaction, set the amount transferred to “0”. Also, make sure the timestamp and transaction fee match the original token deposit. By doing so, it would look like the following.

Example of Ignored LP Token Deposit with Transaction Fee
Example of Ignored LP Token Deposit with Transaction Fee

Putting It All Together

By now, you should have learned how to manage your liquidity pool transactions, the liquidity pool token, and the interest received from providing liquidity. If you were following along with the examples, your transactions should look like the following.

Complete set of transactions made from our examples
Complete set of transactions made from our examples

We’d like to thank you for choosing ACCOINTING.com as your crypto portfolio tracker. As you may already know, creating an account to track your portfolio is always FREE. But if you would like to use us to generate tax reports as well, and haven’t done so already, select a tax plan to get started.


Want to receive new article notifications?

Subscribe using the form below to receive email notifications when new articles are published.

Coming Soon!

Can’t find what you’re looking for?

We’re sorry you weren’t able to get the help you needed. If you visit our community forums, you might find the answers you’re looking for. Or if your issue is more private, send us an email at support@accointing.com.

Also, if something is missing from this article, let us know. Providing your feedback lets us know what improvements we can make to the articles to better help the community. You may do so using the form below.


Submit Article Feedback

Related posts

Mining und Steuern: Ab wann ist Mining gewerblich?
Was ist Mining? Mining (deutsch: „schürfen“) beschreibt einen Prozess, der zur Verarbeitung, Sicherung und Synchronisierung...
June 21, 2021
A Brief Introduction to Yield Farming/Liquidity Mining
One of the biggest applications and ways of participating in DeFi is providing liquidity, whether...
August 6, 2020
Defi Explained: Liquidity mining vs. Staking
Defi is very much the talk of the town but understanding how two of its...
March 31, 2021