Skip to main content
V3 pools support free balances: per-user balances held within the pool that can be used for subsequent operations without additional Spark transfers. This reduces latency and overhead for market makers and frequent traders.

How It Works

When you withdraw liquidity, collect fees, or rebalance positions, you can retain the funds in a pool-level free balance instead of receiving a Spark transfer. These retained funds can then fund future operations like adding liquidity, all without leaving the pool.

Benefits

  • Reduced latency: No waiting for Spark transfer confirmations when redeploying capital
  • Lower overhead: Eliminates transfer fees for funds that stay in the pool
  • Atomic availability: Retained funds are immediately usable for the next operation
  • Simplified workflows: Compound fees or rebalance without capital leaving the system

Retaining Funds

On Decrease Liquidity

On Collect Fees

On Rebalance

Using Free Balances

Add Liquidity from Balance

Use useFreeBalanceA and useFreeBalanceB to fund operations from your retained balance:
If your free balance is insufficient, the SDK automatically supplements with a Spark transfer for the difference.

Retain Excess on Add

When adding liquidity, any unused tokens (refunds) can be retained instead of returned via Spark:

Checking Balances

Single Pool

All Pools

Withdrawing Balances

To move funds from your free balance to your Spark wallet:

Amount Options

Common Workflows

Fee Compounding

Reinvest earned fees without Spark transfers:

Zero-Transfer Rebalancing

Rebalance positions without any Spark overhead:
Or use the atomic rebalance operation:

Market Maker Loop

High-frequency position management:

Response Fields

All V3 liquidity operations include balance information when using free balance features:

Balance States

Next Steps