Product Update: 18th October 2020 [DeFi]

Added support for liquidity pools: Uniswap, Balancer, Sushiswap, Mooniswap, Curve, Bancor, YFI, Defi, Cream, Value Defi

If you would like to see support for a pool that we don’t already support then just create a feature request. Liquidity pools that give you a token back are treated the same way as regular crypto to crypto trades.

IMPORTANT This update is not retroactive so if you already added your ETH wallets, you will need to delete and re-add them!

Added support for staking/mining pools

If you are sending your coins to a CDP, staking/mining pool or simply lending them or using them as collateral then you can mark these withdrawals as “Sent to Pool” which will avoid realizing gains and keep track of them as if they are still owned by you.

If you are receiving coins back from a pool then simply mark the transaction as “Received from Pool” which will basically move the funds back into your wallet.

Added dropdown to Dashboard > Assets which shows more info about which wallets your coins are located on

Added option to sort wallets by the number of transactions (on Wallets page)

Fixed issue with market value not resetting when editing transaction


Do I need to do something special to make Koinly recognize my liquidy deposit? It still shows as trades for me.

Edit. I deleted and re-added Metamask, but it didn’t get picked up.

I staked LP on (CORE), but all of my deposits to the staking contract/pool look weird and as if I’m trading my LP(UNI-V2) for a tiny CORE amount(because the CORE vault autoclaims the accumulated rewards upon adding more stake) at a huge loss. These LP are withdrawable, so at the end when I withdrew from the pool/staking contract(possible with CORE LP), my LP had seemingly 0 cost basis when I eventually sold them on balancer (The LPs trade on balancer because you can withdraw them from the staking pool).

I can’t tag the deposits to the LP contract either as they show as trades(because the core earned from staking until then is autoclaimed upon a new deposit of LP). I would add the withdrawal/deposits to/from the staking contract manually, but there’s almost 1000 “UNI-V2” to choose from on the list of cryptos. Searching for its contract doesn’t come up with anything - how do I know which is the correct LP? Any way to add via token contract to make sure I get the correct UNI-V2?

1 Like

It would be very helpful if you could enable adding a coin via its contract/address, instead of just searching for the name and picking from a list. I am looking to add a specific UNI-V2 token, which was the LP token for CORE-ETH - however when I input the contract for the particular LP, nothing shows up. I can search for the name “UNI-V2” and I get almost 1000 results. Unfortunately I have no idea which one is the one I’m looking for as they’re all named the same…

I want to add transactions for this one: 0x32ce7e48debdccbfe0cd037cc89526e4382cb81b


I have an additional feature request: can you please add a possibility to turn back the sent to pool / received from pool status changes?

When manually reviewing a lot of DeFi entries, I have made a few mistakes — but once you’ve marked something to be part of Pool, there is no way back.

For example, I received N tokens of SNX from their staking rewards contract. Marked this by accient as “Received from Pool” instead of “Reward”. Now the Pool shows a -N balance of SNX forever, as I can’t correct the mistake back to Rewards.

I don’t want to start adding fake tx of taking the balance out of pool…

Similarly, I often fix undetected liquidity token exchanges (e.g when USDC is shown as witdrawn, and in the same minute also a deposit for USDC-SOMEPOOLETOKEN) by Merging them. now, if they happen to be on different pages, I might mark one to “sent to Pool”, then realize there IS a matching tx, but can’t Merge them any more, as one is in pool… and can’t be turned back.

Hope this makes sense. Happy to show specific examples.


Hi, you can edit the transaction and click on the trash icon next to the “sent” or “received” part which will revert it back to the way it was.


Aha, not overly intuitive, but will try that - thanks.

I noticed there are quite a few pools on Curve and balancer that are not recognized by Kioinly.

Can you add the ability to split a transaction, so adding liquidity with multiple kind of tokens can be set manually?

Why is sending a token to a pool considered a realised gain/loss? Liqudity Pool transactions have no intrinsic value of their own. Shouldn’t they be treated as just carrying-forward the cost-basis from the coins that are put into pools, and then compared against coins taken out of pools? When you add a coin to the pool it should just appear as if it’s still in your wallet, and likewise when you withdraw there should be no change, apart from perhaps catering for a small amount of impermanent loss (which ultimately will already be handled because there’ll be no cost-basis for any additional new fractions of a token, and likewise will ultimately see a loss when you have less remaining tokens of the other side of the pair).

I agree that putting tokens in a pool should not be a taxable event, at least that is what I do in the UK. You can instead create a manual wallet and temporarily park your tokens in there until you exit the pool and then again handle the exit manually, with a bit of gain/loss/income at the time of exit. There is probably an argument that you should “realise” any tax within the same tax year, whether or not you actually exited, so if you have gain, add the gain within your manual pool wallet.

1 Like

I see now you can disable realised gains on conversion to liquidity pools in your settings.

Unfortunately the value of the underlying tokens disappears from your dashboard still.

1 Like

Do you have plans to support DEFI or at the very least importing transactions from the xDAI subchain?

In my understanding I should mark staking transactions as “Sent to Pool”. When I stake Sushi, they are converted into XSushi for staking. Therefore Koinly only gives me the possibilities “Trade” or “Swap”. How can I correct this?

If you get a coin that represents your staked assets and you don’t want to consider this a trade for tax purposes, use the swap label.

If you send coins that “disappear” into a smart contract, use “sent to pool”.


i made this same mistake. if you edit the transaction, then click the bin next to the part of the exchange you added manually it will revert to how it was originally

What happens if the amount of the token ‘received from pool’ is less than the amount that was ‘sent to pool’? This is common due to impermanent loss.

Are we supposed to be marking the coins provided as liquidity to the pools, or the LP tokens received, with the sent to / received from pool feature?


Koinly will automatically handle most liquidity transactions.
The Sent/Received from pool labels should not be used when providing liquidity. These labels should be used when sending tokens to staking or farming pools.

Feel free to contact us as at [email protected] if you have any issues with your LP transactions.

Best regards,