Position NFT

DEX & liquidity

A position NFT is a non-fungible SPL token whose mint stands in for a single CLMM liquidity position. The NFT's mint address is the lookup key for the underlying Position account, which stores the tick range, the liquidity amount, and the fees and rewards owed. Transferring the NFT transfers the position.

Detailed explanation

CLMM positions are not fungible. Two positions with different tick ranges have different risk and different fee accruals, so they cannot share a single LP token. The fix is to mint one NFT per position. The Position account is a PDA derived from the NFT mint. Whoever holds the NFT in their wallet owns the position.

On Orca Whirlpools, opening a position via openPosition mints the NFT and creates the Position account. Closing burns the NFT and returns the rent. On Raydium CLMM, the same pattern applies via the program at CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK, with its own PersonalPositionState account derived from the NFT mint.

Because the NFT is a regular SPL token, it can be deposited into Metaplex marketplaces, used as collateral, or wrapped for vaults. That composability is the main reason CLMMs picked the NFT model over a custom ownership account. The tradeoff is that NFTs cost more rent than fungible tokens and clutter wallets.

One opinion: the position NFT model is a clean abstraction for CLMMs and a mistake for AMMs. If you do not need per-position metadata, fungible LP tokens are simpler and cheaper.

A practical caveat for indexers: when an LP transfers a position NFT to another wallet, the underlying Position account does not change at all. Only the SPL token holder moves. If your analytics keys positions by Position account address, you correctly track the position. If you key by current owner without watching the NFT mint, you will miss the handoff and attribute the position to the wrong wallet forever.

When you'll see this

You will find position NFTs in any wallet that has provided CLMM liquidity. On Geyser streams, the Position account updates whenever fees accrue, liquidity is added or removed, or rewards are collected. The NFT mint is what most front ends use to look up the position by wallet.

How NoLimitNodes uses this

Our Orca and Raydium parsed streams emit position open, close, increase, and decrease events with the NFT mint, the tick range, and the resulting liquidity, so you can build LP analytics without re-deriving any PDAs.

Related terms

  • Whirlpool · The Orca CLMM pool account that stores the active sqrt-price, current liquidity, fee tier, and tick spacing.
  • Tick Array · An 88-tick storage account in Orca Whirlpools that holds the liquidity bitmap a swap walks across.
  • Sqrt Price · The square root of price stored as a Q64.64 fixed-point number, the math primitive every CLMM uses.
  • CLMM · Concentrated Liquidity Market Maker. LPs choose a price range, and capital only earns fees inside that range.
  • LP Token · A fungible SPL token that represents your share of an AMM pool, mintable on deposit and burnable on withdraw.

Canonical references

Ready to get started?

Get your free API key and start building in under 30 seconds.

Talk to Sales