Close positions

Close Dead Solana LP Positions and Get the SOL Back

Every liquidity position you have ever opened on Solana — Orca Whirlpool, Raydium CLMM, Meteora DLMM or DAMM v2 — created an on-chain account with a SOL deposit inside, and taking the liquidity out did not return that deposit. Only closing the position does. This scans your wallet once, lists every position you still own across all four programs with its deposit and a verdict, and closes the ready ones together — each deposit going straight back to the wallet that signs.

Close positions

The exact total — platform fee plus the real network cost — is quoted in the console before anything is signed.

Four programs, one way to strand a deposit

On every one of these programs, taking liquidity out and closing the position are two separate instructions — and the flows people actually use routinely stop after the first. Nothing warns you, because nothing is wrong: the position account simply stays open, holding its deposit, waiting for a close that never comes. That is why one wallet quietly accumulates dead positions on two or three venues at once, and why tens of thousands of emptied positions sit open on each of these venues today.

That NFT in your wallet is a deposit receipt

Orca, Raydium and Meteora DAMM v2 positions live behind an NFT: your wallet shows a token, and the position account — the one holding the SOL — sits one step removed, tied to it. Wallet apps file these under collectibles and show no SOL amount on them, which is how a real deposit hides in plain sight. The scan follows each NFT to its position account and reads what it holds; Meteora DLMM ties positions to your wallet directly, and the scan reads those the same way.

What comes back, and the slice that can stay

A close returns the deposits of the accounts it actually frees — roughly 0.005 to 0.01 SOL of rent per position, depending on the venue and the position’s age, read live from each account rather than assumed. One honest wrinkle: older Orca and Raydium positions were issued with an NFT mint that has no close path, so that one small account stays on-chain while the rest comes back — the row says so before you sign, and the number you see is the number you get. The service fee is 5% of the SOL a close actually returns, so a close that returns nothing costs nothing.

What this will not touch

Nothing you still hold is ever at risk: the console stages a close only for positions with nothing left inside — no liquidity, no unclaimed fees, no rewards — and every one of these programs checks ownership on-chain, so only your wallet can close what your wallet owns. Positions still owed trading fees are held back from the close until the fees are out — and for Meteora and Orca positions the console claims them first and closes in the same run, one approval per claim; Raydium’s rare fee-blocked positions link out to Raydium. And the shared pool accounts a position may have paid to create belong to the pool, not to you — no tool can return those.

Questions

Which venues does the scan cover?
Orca Whirlpool, Raydium CLMM, and Meteora DLMM and DAMM v2 — four programs, one list. Each row is tagged with its venue and shows the deposit that position holds, so you do not need to remember where you provided liquidity: the scan works it out from the wallet itself.
Do positions from different venues close separately?
No. Closes are packed together regardless of venue — an Orca close and a Raydium close can share a transaction — and the whole batch is signed by your own wallet in one signing session.
Why does one of my rows say part of the deposit stays behind?
That position was issued before its venue moved to Token-2022 NFTs, and the older mint it used cannot be closed by anyone. Everything else about the position closes normally; only that one account’s small deposit stays on-chain. The row carries the caveat up front, so the number you approve is the number you receive.
The scan found nothing. Did it fail?
No — it means nothing is stuck. A wallet that closed its positions properly, or never opened any, has nothing here to return, and the scan says so rather than inventing work. If you emptied positions and see nothing, check that you connected the wallet that holds them.
What do you need from me to scan?
Reading is free and signs nothing — the scan needs a wallet address and public chain data. Closing is the separate, explicit step: unsigned transactions built for your own wallet to sign, with each refund addressed to that same wallet inside the instruction itself.