Staking refers to sending coins to a third party and receiving rewards in return. This third party is commonly called a "Staking Pool". You still have control over the coins sent into the staking pool so for the most part such sends/receives are not taxable.
Receiving staking rewards
Whenever you receive a reward, you should tag the Deposit transaction as a "Reward". This way Koinly will be able to summarize all reward transactions in your Income report so you can declare it in your tax returns.
Sending coins into a staking pool
Koinly will not import such transactions for most blockchains like Zilliqa, Elrond etc since these are not taxable.
However, if you are using Ethereum or Binance Smart Chain then these transactions will get imported as withdrawals. You should find these and tag them as "Sent to Pool" to prevent gains from being realized on them.
Receiving coins from a staking pool
Similar to the sent-to-pool transactions, Koinly will avoid importing these receive transactions for most blockchains since they are simply returning your own coins back to you and the transaction is unlikely to be taxable.
However, for Eth, BEP20 etc these transactions will get imported as Deposits. You should find and tag such transactions as "Received from Pool".
Note that this only applies when receiving back the capital that was originally sent to the pool.
It is very important to have proper Sent to Pool and Received from Pool pairs. If you tag a transaction as Received from Pool but have not tagged anything as Sent to Pool then you will see a "Missing purchase history" error because Koinly does not have any records of any coins being sent into the pool.
How to handle reward payments that are received from the pool along with initial investment?
This is slightly more involved let's say you sent 10 ETH into a pool and received 10.5 ETH back from the pool. If you were to mark the first transaction as Sent to Pool and second one as Received from Pool then you would see a missing purchase history error for the 0.50 ETH. You can resolve this by creating a manual Reward transaction in the Pool wallet right before the "received from pool" txn. We are working on making this easier to handle.
How to handle AAVE staking tokens like STKAAVE?
When you stake coins with the AAVE protocol, it will give you back a new token that represents your ownership of the staked token. Such transactions will appear in Koinly as Trades by default (which will result in taxable gains) but you can tag them as Swaps to remove any gains from them (if you believe they are exempt from taxes).