Koinly currently supports Liquidity transactions carried out on the Ethereum, Binance Smart Chain, Polygon, Avalanche, Fantom, Cronos, Arbitrum, and 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.
October 2024 - Update on Liquidity Pool Transactions:
LP transactions will no longer be split and merged into two trades. Instead, they will now appear as separate transactions, each with the same tag. For example, when adding liquidity, you’ll see two token withdrawals and one deposit of the LP token, all tagged as ‘Liquidity In’. This change allows for easier tracking and more dynamic editing of your transactions.
Examples:
Liquidity in:
Liquidity out:
DeFi protocols supported by Koinly
We currently support a number of liquidity protocols such as:
Balancer Pool
Uniswap V2 and V3
Sushiswap
Sakeswap
Snowswap
Mooniswap
Curve.fi
Spookyswap
Bancor
yearn Finance
PancakeSwap
Value
Cream
1inch
Beethoven
and over 100 more!
This list is ever-increasing. If your transactions are not being recognized as liquidity automatically then send us a feature request via our Feedback Portal!
☝ Uniswap V3 liquidity is now supported on Ethereum, Matic, Optimism, and Arbitrum.
We do not currently support PancakeswapV3 - you will need to use our manual method described below for those transactions. Make sure to upvote support for PancakeswapV3 on our Feedback Portal!
Common questions
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 toggle OFF "Realize gains on liquidity transactions" on the Settings page.
My liquidity transactions are showing up as deposits/withdrawals
This can happen if:
One of the provided assets is missing the market price
This protocol is not supported by Koinly
🔵 Example: if you provide ETH and FOMO as liquidity on Uniswap V2 but Koinly didn't automatically merge this into a "Liquidity In" transaction - there is a Market prices for XYZ are missing warning on one of the withdrawals:
🟢 Solution: Check if both of the provided assets have a market price. Once you set the market price you will be able to merge the 3 transactions
☝ You do not need to set the worth of the received LP token - market value needs to be set only for the assets you provided to the liquidity pool
🔵 Example: The assets you provided to the liquidity pool both have the market price, but Koinly still didn't merge them into a Liquidity In transaction:
🟢 Solution: If the LP token you're receiving is not recognized by Koinly, it will have a grey icon instead of an orange one. In such cases, Koinly will not be able to merge this into a liquidity transaction - please open a support ticket regarding this, but you will most likely need to use the manual method for this protocol.
Compare the icon of the received LP token in this example (grey, unsupported) and in the previous one (orange, supported):
Liquidity Out transactions have a cost-basis of $0
This is a common issue that can happen if you have farmed (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 Add to Pool and Remove 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.
Koinly will automatically apply these labels to most LP farming transactions, but you will need to add the label manually if it gets missed by Koinly.
🟢 Solution: 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
Click on the eye icon in transaction details. This will show you all past transactions involving this specific token
Filter to see the deposits and withdrawals only
All the transactions visible are most likely your staking transactions, as it rarely happens that you send your LP tokens anywhere (you can also check the contract address they're sent to)
As such, you can tag all the transactions you see now as "Add/Remove from Pool"
☝ You need to repeat this process for every LP token you had.
Zapping
If you zapped into the pool, most of the standard transactions happened on the smart contract, without anything related to your wallet. Often you will only have a withdrawal of one asset (i.e. 1 ETH) from your wallet in Koinly, while the rest:
Trading 0.5 ETH for another asset
Providing liquidity to a liquidity pool
Sending the LP token for staking
Is missing, because it didn't happen on your wallet.
In such situations, you need to account for the liquidity manually (see below). Usually, you can ignore the staking transactions whatsoever, as they are not taxable - so you only need to add Liquidity In/Out.
How to add liquidity transactions manually
🔵 Example: You provided 4300 USDC and 1 ETH to a liquidity pool, but the imported LP token is not recognized by Koinly (it has a grey icon instead of an orange one).
🟢 Solution: In Koinly, you can use liquidity placeholder tokens whenever we do not support a specific coin: (LP1
, LP2
, LP3
, etc.)
☝ Use a different LPx
for every liquidity pool you participated in. For example LP1 whenever you entered ETH-BNB pool, LP3 for BTC-USDC pool, etc.
To account for this liquidity transaction manually in Koinly, you need to:
Create a manual deposit of an
LPx
token, the amount should be the same as of the "grey" LP token you receivedMerge the deposit of the
LPx
token with the withdrawals that represent assets you provided to the liquidity poolKoinly will automatically tag it as "Liquidity In" and split the deposited
LPx
token among the withdrawn assetsYou can now delete the unrecognized token
Uniswap V3 and other protocols that don't provide an LP token
Update 2023: Uniswap V3 is now supported automatically on all major chains. The below text only applies to other protocols that function similarly, such as PancakeswapV3 and TraderJoe.
For protocols like UniV3 that don't provide an LP token (UniV3 only gives you 1 NFT when opening the position) step 1 from the instructions above gets tricky. What we recommend is:
The first time you enter the said pool, add 100
LPx
tokensWhen you exit the pool completely, withdraw all the
LPx
tokens you have in your balance
☝ If you were providing assets to the same liquidity pool multiple times or exiting it partially, you need to calculate the number of LPx
tokens added/removed proportionally.