Uniswap v3 and concentrated liquidity: advanced taxation
Uniswap v3 (and v4) introduced a concentrated liquidity model that radically changes how pools work and therefore introduces new tax complexities compared to Uniswap v2.
The LP position on Uniswap v3: an NFT
In Uniswap v2, liquidity positions were fungible (LP ERC-20 tokens). In Uniswap v3, each position is a unique NFT ERC-721 representing:
- The contributed asset pair (e.g. ETH/USDC).
- The price range in which liquidity is active.
- Fees accumulated but not claimed.
Opening an LP position on Uniswap v3
Step 1: You contribute two assets to the pool within a price range.
- ETH you contribute: transmission of ETH. ETH market price at that time vs. acquisition cost (FIFO) = profit/loss on savings basis.
- USDC that you contribute: if I bought it at €1 and I contribute it at €1, there is no profit (stablecoin).
- You receive: An NFT that represents your position.
- Is the receipt of the NFT an income? In principle no, it is the same asset in another form. However, the AEAT has not given express criteria on LP v3 positions.
Fees in real time: when do you pay taxes?
In Uniswap v3, fees are accumulated in the position (the NFT) and are not automatically collected. You must actively claim them.
More prudent criterion: The fees are taxed when you claim them (they make a claim), as a return on movable capital. Price of each token at the time of the claim.
If you never claim: The debate is whether there is an annual accrual even if you have not made a claim. The majority position is that the accrual is at the time of the claim.
Impermanent loss (IL): is it deductible?
The IL is not a realized loss until you close the position. Upon closing (burning the NFT LP):
- You receive the two assets back in amounts different from those contributed (due to the effect of the IL).
- The capital loss materializes if the value received < value contributed in historical terms.
Simplified example:
- You contribute 1 ETH (cost €2,000) + 2,000 USDC (cost €2,000) → total cost €4,000.
- You close the position and receive 1.2 ETH (value €1,800) + 1,500 USDC (value €1,500) → total received €3,300.
- Net ETH transmission profit: 1 ETH transmitted when depositing (if it was at price > cost, profit). More complicated when removing.
The real complexity: You must track each asset separately (FIFO) at deposit and withdrawal.
Range change: position rebalancing
In v3, you can close a position (out of range) and open a new one. Each closing and opening are independent events:
- Closing: transfer of assets. Profit/loss according to prices.
- New opening: new transfer of assets to the pool.
Frequent rebalancing → many tax events → high accounting complexity.
Uniswap v4: the Hooks
Uniswap v4 introduces "hooks" that allow pool customization. Fiscally it is the same regime, but hooks can add more complexity (dynamic commissions, automatic distributions, etc.).
Specific tools for Uniswap v3
- Revert Finance: Analyzes performance and fees of Uniswap v3 positions.
- Defi-taxes.eu: Support for LP v3 positions.
- Koinly: Limited support for LP v3; may require manual adjustment.
- Etherscan/Arbiscan: Export events from your NFT LP.
Practical recommendation
Given the complexity, it is recommended:
- Record each opening with date, assets, quantities and prices.
- Register each fee claim with date and price.
- Record each closing with recovered assets and prices.
- Use specialized tools or expert advisor in DeFi.
Updated: April 2026 | Fiscal year: 2025


