Koinly currently supports Liquidity transactions carried out on the Ethereum, Binance Smart Chain, Polygon, Avalanche, Fantom, Cronos, Arbitrum on a few other EVM blockchains. We are working on adding support for other blockchains such as Solana and Osmosis.
Liquidity transactions are imported and tagged as Liquidity in/out automatically.

We currently support a number of liquidity protocols such as:

  • Balancer Pool

  • Uniswap V2

  • Sushiswap

  • Sakeswap

  • Snowswap

  • Mooniswap

  • Curve.fi

  • Spookyswap

  • Bancor

  • yearn Finance

  • PancakeSwap

  • Value

  • Cream

  • 1inch

  • and about 100 more!

This list is ever increasing, if your transactions are not being recognized as liquidity automatically then send us a feature request!

Are liquidity transactions taxable?

There's a lot of debate around this, by default we treat these as taxable since you are exchanging your tokens for some LP tokens which can be traded or staked to earn more coins. However, if you feel that such liquidity transactions should not be taxed then you can turn off "Realize gains on liquidity transactions" on the Settings page.

Some of my liquidity transactions are showing up as deposits/withdrawals

This can happen if Koinly does not support the liquidity protocol yet or if the coins that you are putting into the contract do not have any market prices. For example, if you provide ETH and FOMO as liquidity on Uniswap then you might see a "Missing market price" warning on the FOMO transaction if we don't have market prices for it. You will also see the same warning on the Liquidity token (UNI-V2) transaction but this one can be ignored. You can edit the FOMO transaction and set a market price for it, Koinly should then be able to detect that it has to do with Liquidity.
If you have liquidity transactions that are not being recognized as liquidity and are being displayed as separate deposits/withdrawals then you can merge them manually.

Some of my Liquidity Out transactions are displaying a cost-basis of $0

This is a common issue that can happen if you have farmed or staked your LP tokens. Koinly will import these farming/staking transactions but they will be shown as regular deposits/withdrawals since this is how the block explorers report them.
To fix this, you can tag these deposits and withdrawals as Sent to Pool and Received from Pool so that Koinly understands that these LP tokens are simply being transferred to a farm or staking pool. You can learn more about this in our article on Staking.
An easy way to find all transactions that need to be tagged for each LP token is to locate your most recent Liquidity Out transaction and click on the eye icon. This will show you all past transactions involving this specific token:

You can then filter the transactions to only show Deposits and Withdrawals as those will be the transactions that need to be tagged:

How to add liquidity transactions manually

Let's look at an example of how this can be done:

You want to provide 1 ETH and 3000 USDT to a liquidity pool. After providing it, you received 100 LP tokens.

In Koinly, you can use placeholder tokens whenever we do not support a specific coin: (NULL1, NULL2, NULL3 etc.)
You would need to use a different one for each pool you are participating in.

To import this manually into Koinly, you'd need to:

- Divide the LP token proportionally between the two coins added (usually 50/50)

- Create trades of said coins, using the NULLx placeholder

So we end up with:

- trade of 1 ETH for 50 NULL1

- trade of 3000 USDT for 50 NULL1

Which would look like that:

When receiving the coins back from the liquidity pool, we can do the same thing but in the opposite direction:
- Trade 50 NULL1 tokens to X amount of ETH
- Trade 50 NULL1 tokens to X amount of USDT

Did this answer your question?