Orca finance

Orca finance is a Solana decentralized exchange centered on Whirlpool liquidity management

Orca finance is the process of opening, reading, adjusting and closing concentrated liquidity positions in Orca Whirlpools on Solana. A position binds two pool tokens to a chosen price range, changes its token balance as the pool price moves and returns the resulting token amounts when liquidity is withdrawn. The controlling wallet also holds a unique position NFT.

The useful workflow follows one record from selection to closure: choose the pool and range, deposit assets, interpret status, change liquidity and decide whether to retain or burn the position NFT.

The zero-liquidity state decides closure; a 100% withdrawal still leaves the NFT reusable when the owner retains it.

Choosing the position before the first deposit

A Whirlpool position fits only when its token pair, fee tier and price range match the exposure you intend to manage.

Begin with the exact mint pair because SOL/USDC at one fee tier is a separate Whirlpool from SOL/USDC at another. Orca publishes fixed fee-tier values of 0.01%, 0.02%, 0.04%, 0.05%, 0.16%, 0.30%, 0.65%, 1% and 2% for its mainnet configuration. The configuration maps these rates across tick spacings including 1, 2, 4, 8, 16, 64, 96, 128 and 256, which limit the tick boundaries the interface may select. Pool depth and active liquidity remain live inputs, so neither the highest rate nor the narrowest spacing settles the choice.

Next, set a range around the price behavior you are prepared to manage. Narrow ranges concentrate the deposit across fewer ticks and leave the active zone sooner. Wider ranges use more price space and reduce the need to re-center. The decision changes when the intended holding period or tolerance for token conversion changes.

Opening a custom range with two token balances

A custom-range deposit starts cleanly when the wallet holds both pool tokens and enough SOL to sign the opening transaction.

Phantom and Backpack both connect to Solana and expose the wallet balances Orca uses for the deposit. Select a Whirlpool, choose Custom range and enter lower and upper prices. Orca offers ±5% and ±10% presets, while direct price fields provide more control. For an in-range SOL/USDC position, entering one token amount causes the interface to calculate the second amount from the selected bounds and current pool price. An out-of-range deposit uses one side because only one asset represents liquidity beyond a boundary. Review both mint addresses, the range and the quoted token amounts before signing.

The Whirlpools program opens the position with 0 liquidity, then the deposit instruction adds the quoted liquidity and moves both assets into pool vaults.

One unique NFT represents the position. Legacy position instructions use SPL Token and can attach Metaplex metadata; newer position forms use Token-2022 with optional token metadata extensions. A second deposit later updates the same position and does not mint another ownership token. The opening plan changes when the chosen range excludes the current price.

What does an in-range balance actually show?

An in-range Whirlpool balance shows the two token amounts represented by active liquidity at the pool's present price, which is walked through in Using Orca finance.

Orca's Portfolio separates the position Balance from Pending Yield. Balance represents the token quantities embedded in liquidity, valued through token prices; Pending Yield represents uncollected trading fees and eligible rewards. Exactly 2 tick boundaries define whether the position is active. Inside them, swaps change the ratio between token A and token B while liquidity remains the protocol accounting unit. Below one boundary, position liquidity resolves entirely into one token; above the other, it resolves into the opposite token. The displayed USD value combines onchain quantities with price data. The reading changes whenever the pool price crosses a tick or the valuation feed updates.


Adding liquidity without changing the range

An existing Whirlpool position accepts more liquidity when the added tokens match the ratio required by its unchanged price range.

Open Position Details and use Deposit on the same NFT-backed record. The interface calculates token A and token B from the current pool price and the existing lower and upper ticks. If the wallet holds the wrong ratio, Orca Autoswap can quote a conversion before the deposit. Adding size leaves the range and ownership token intact.

The add-liquidity instruction updates accrued fees and rewards before increasing liquidity. It accepts 1 liquidity amount plus maximum amounts for token A and token B, so the transaction stops if required inputs exceed those limits. Autoswap performs a separate token conversion inside the broader flow. The choice changes when that conversion cost outweighs the value of enlarging the existing range.

Re-centering after price leaves the range

An out-of-range Whirlpool position needs a new range only when waiting no longer matches the holder's price plan.

Adding or removing liquidity preserves both tick bounds. To re-center, withdraw until liquidity equals 0; then the Whirlpools reset_position_range instruction can replace the lower and upper ticks on the empty position. The high-level Orca SDK exposes this operation, though consumer interfaces decide whether to surface it. The alternative is opening a new NFT-backed position after withdrawal. Either path must select ticks aligned to the pool's spacing.

A fully out-of-range position reaches 100% of one pool asset, with the side determined by which boundary the price crossed.

Withdrawal crystallizes the current token composition into wallet balances. Re-depositing at new bounds creates the ratio the new range requires, and Autoswap is relevant only if the wallet lacks that ratio. Waiting preserves the existing bounds and resumes fee accrual if price returns. The preferred route changes with the intended range, token mix and number of signed actions.


Dark Liquidity Pools table with token pairs and financial metrics

A worked partial-withdrawal calculation

A partial Whirlpool withdrawal makes sense when the target is lower exposure while preserving the same range and position NFT.

In this worked example, every changing input is hypothetical: a position represents 10 SOL and 1,000 USDC, its pending fees equal 0.02 SOL and 4 USDC and the selected withdrawal is 40%. A proportional decrease quotes 4 SOL and 400 USDC from principal because 10 × 40% equals 4 and 1,000 × 40% equals 400. If the same action harvests all pending fees, the wallet receives 4.02 SOL and 404 USDC before network charges and any execution adjustment. The remaining position represents 6 SOL and 600 USDC at the same measured pool state and retains 60% of its starting liquidity.

The arithmetic changes when the pool price or chosen percentage changes.

When should you harvest before withdrawing?

Harvesting before a Whirlpool withdrawal is worthwhile when accrued fees justify a separate Solana transaction rather than one combined action.

Whirlpools tracks fees in both pool tokens and tracks configured reward mints separately. Harvest moves those accrued amounts to the wallet; it does not remove liquidity or change the two tick bounds. A withdrawal or close flow can collect fees during the same transaction sequence, avoiding a standalone harvest immediately beforehand. Compare the displayed pending amount with the network charge and record-keeping need. Reinvestment is another transaction, so harvesting tiny balances repeatedly creates more signed actions without changing how quickly future fees accrue.

Solana charges a base fee of 5,000 lamports per signature, and one SOL contains 1,000,000,000 lamports. Priority fees add a market-set amount based on requested compute units. The decision changes with combined-action availability and the fee payer's SOL balance.

Closing the position and deciding the NFT's fate

A Whirlpool position closes fully when liquidity reaches zero, the flow collects fees and the owner selects the NFT outcome.

In Orca finance, the onchain close instruction rejects a nonempty position. Orca's full close flow therefore removes 100% of liquidity, collects available fees and handles the ownership token. Selecting burn destroys the 1-token position representation and removes the closed record from active positions. Keeping the NFT leaves a zero-liquidity position the wallet may refill or reset through a supported client.

A partial withdrawal never qualifies for closure because positive liquidity remains attached to the position account.

Before the last signature, compare estimated token A and token B amounts, Pending Yield, the chosen percentage and the NFT option. Confirming 100% with burn selected ends the lifecycle. Confirming 100% while retaining the NFT ends the funded phase but preserves the reusable position shell. The outcome changes at the NFT choice, not at the wallet's displayed dollar total.

Dark SOL/USDC trading dashboard with candlestick charts and mobile view

Questions people ask about Orca finance

Can multiple Whirlpool positions use the same SOL/USDC pair?

Yes, one wallet can hold multiple SOL/USDC Whirlpool positions. Each position has its own NFT, lower tick, upper tick, liquidity amount and fee-tier pool. Separate records let the wallet run different ranges or sizes without merging their balances, although every adjustment still targets one specific position address.

Does transferring the position NFT transfer control of the liquidity?

Transferring the position NFT transfers control of the represented Whirlpool position to the receiving wallet. The deposited tokens remain in pool vaults rather than moving as ordinary wallet transfers. After confirmation, the recipient can add liquidity, harvest or withdraw, while the sending wallet no longer controls that position.

Are reward tokens included in a Whirlpool position's principal balance?

No, reward tokens and trading fees sit in Pending Yield until collection, separate from the principal token amounts represented by liquidity. A pool must have an active reward configuration and the position must qualify under it. Harvesting transfers eligible rewards without changing the position's price range or remaining liquidity.

What onchain records confirm a partial liquidity withdrawal?

A completed partial withdrawal has a Solana transaction signature, reduced liquidity in the position account and increased balances in the recipient token accounts. The position NFT remains with its owner because liquidity stays above zero. Reading all three records distinguishes a confirmed decrease from an interface quote or a pending wallet request.

Does a hardware wallet change how a Whirlpool withdrawal is signed?

No, a hardware wallet does not change the Whirlpool instructions or withdrawal arithmetic. It changes the signing path: the connected wallet interface prepares the Solana transaction, then the device approves its message. The device and connector must support the transaction format and every instruction included in the requested position action.