Skip to main content

Provide Liquidity (V3)

V3 allows LPs to concentrate liquidity within a specific price range for higher capital efficiency. Each position is an NFT with unique parameters.

Create a Position

1. Choose Pool Parameters

  • Token pair: The two tokens
  • Fee tier: 0.01%, 0.05%, 0.3%, or 1% (see Fee Tiers)
  • Price range: [tickLower, tickUpper] (see Ticks and Ranges)

2. Get Current Pool State

3. Calculate Tick Range

Align your desired price range to the pool’s tick spacing:

4. Approve Tokens

5. Mint Position

token0 must have a lower address than token1. Sort them before calling.

With Native KAS

If one token is KAS, send it as value instead of approving WKAS:

Increase Liquidity

Add more tokens to an existing position (same tick range):

Collect Fees

Claim accumulated trading fees:

Remove Liquidity

1. Decrease Liquidity

2. Collect the Tokens

After decreasing, tokens are held by the Position Manager. Call collect() to withdraw:

3. Burn the NFT (Optional)

After removing all liquidity and collecting all tokens/fees:

Single-Sided Positions

You can create positions entirely above or below the current price:

Key Points

  • Each position is an NFT — track tokenId for future operations
  • Fees must be explicitly collected (they don’t auto-compound)
  • Out-of-range positions earn no fees until price re-enters the range
  • Narrower ranges = higher capital efficiency but more active management needed
  • Use multicall() on the Position Manager to batch decrease + collect in one transaction