Raydium fees are split between liquidity providers, RAY buybacks, and treasury destinations. Fee split percentages are percentages of the trading fee, not percentages of the full trade amount.
Fee types
Raydium has four user-facing fee categories.
Rent is paid to create Solana accounts. It is separate from Raydium protocol fees.
Trading-fee split
These percentages are applied to the pool’s trading fee.
Example for a CLMM or CPMM pool with a
0.25% swap fee:
0.25% swap fee:
Swap-fee tiers
Pool creation fees
Creating a Standard AMM v4 or CPMM pool costs0.15 SOL in pool creation fees.
Pool creation fees are separate from account rent and transaction fees.
Fee denominator conventions
Different Raydium programs encode fee rates with different denominators.
This matters when reading raw on-chain accounts or SDK responses. Always normalize rates before comparing products.
How fees accrue
- A trader pays the swap fee as part of the swap.
- The LP share remains in or accrues to the pool’s accounting.
- Buyback and treasury shares accumulate in program fee accounting.
- Collection transactions move those balances to the relevant addresses listed in
ray/treasury.
- AMM v4 and CPMM: LP fees accumulate in pool reserves and are realized when LP tokens are burned on withdrawal.
- CLMM: LP fees accrue per position and can be claimed with the fee-collection flow.
- LaunchLab: launch-specific creator and protocol fees follow LaunchLab configuration.
Token-2022 transfer fees
Token-2022 transfer fees are not Raydium fees. If a Token-2022 mint has a transfer fee, that fee is paid to the mint’s configured authority. A swap involving Token-2022 tokens may therefore include:Practical pitfalls
- Do not multiply by the wrong base. A 12% buyback share is 12% of the swap fee, not 12% of the trade.
- Normalize denominators. AMM v4 uses a different denominator than CPMM and CLMM.
- Separate protocol fees from network fees. Solana base fees and priority fees are paid to the network, not Raydium.
- Account for Token-2022 fees. Transfer fees can materially change the user’s effective received amount.
- Fetch fresh config. If your integration caches AmmConfig data, refresh before building high-value transactions.

