Which Solana DEX is cheapest for a volume bot
Every venue quotes you a fee. None of them quote you a failure rate, and that is where the money goes. A swap that fails still pays its fee and produces no volume, so the only number that matters is cost per swap that actually lands. We measure both halves directly from finalized mainnet blocks and publish them here, updated as the measurement runs. The answer is not the same every day, and it is not the same for every campaign, but the method for finding it is stable and you can apply it yourself.
The short answer
In the sample above the cheapest venue per landed swap is Pump.fun AMM (post-graduation) at roughly 7,296 lamports, and the most expensive is the Pump.fun bonding curve. That ordering is not a permanent ranking. It moves with congestion, with which venues are busy, and with how contested your specific pair is. What does not move is the shape of the answer: a low fee on a venue that fails a third of the time is more expensive than a higher fee on a venue that fails rarely.
The practical decision is usually made for you. Your token lives where its liquidity lives. If it is still on a bonding curve, that is where volume has to be generated, whatever it costs. Once it graduates, you have a genuine choice, and that is the moment this comparison earns its keep. The mechanics of that transition are covered in how the Pump.fun bonding curve works.
What "cheapest" actually means
Three costs stack on every swap, and vendors tend to quote only the first. The base fee is fixed at 5,000 lamports per signature and is charged whether the transaction succeeds or fails. The priority fee is a bid for scheduling, variable and set by you. Service commission is what a bot operator charges on top, ours being a flat 2% described on the pricing page.
Failures multiply the first two. If 60% of your transactions fail, you send two and a half attempts for every landed swap, and you pay base and priority fees on all of them. That is the multiplier hiding inside every quoted cost per swap, and it is the reason two campaigns with identical settings on different venues can differ in real cost by a factor of three. Publishing that multiplier instead of hiding it is the whole premise of our Solana volume bot.
There is a fourth cost that does not appear in fees at all: slippage. A swap that lands at a worse price than quoted has cost you the difference, and on thin pools that difference can dwarf the fee. Fee comparison is necessary but not sufficient, which is why depth matters as much as failure rate when picking a venue.
Measured fees and failure rates by venue
| Program | Sampled tx | Failure rate | Median fee | Cost per landed swap |
|---|---|---|---|---|
| Pump.fun bonding curve low sample | 9 | 0% | 45,000 | 45,000 |
| Pump.fun AMM (post-graduation) | 147 | 28.6% | 5,209 | 7,296 |
| Raydium AMM v4 low sample | 4 | 25% | 5,162 | 6,883 |
| Raydium CLMM low sample | 26 | 30.8% | 5,777 | 8,348 |
| Raydium CPMM low sample | 15 | 40% | 5,304 | 8,840 |
| Meteora DLMM | 59 | 35.6% | 5,511 | 8,557 |
| Orca Whirlpools low sample | 10 | 20% | 7,672 | 9,590 |
| Jupiter aggregator v6 low sample | 3 | 33.3% | 6,000 | 8,996 |
Read this table with two cautions. Rows marked as a low sample have too few transactions in the window to draw conclusions from, and a single unusual transaction can move their median dramatically. And every figure is a snapshot of one measurement window, not a long-run average, which is why the timestamp and block count are printed with it rather than hidden.
The full distribution, including the fee percentiles that matter when you are setting priority fees, is on the measured transaction costs page. The arithmetic that turns these figures into a campaign budget is worked through in the cost breakdown.
Pump.fun bonding curve: cheap fee, expensive outcome
In our measurement window the curve showed a median fee of 45,000 lamports and a 0% failure rate, which works out to roughly 45,000 lamports per swap that actually lands. Failure rates at that level are not a sign of a broken program. They are what a first-come-first-served pricing mechanism looks like when many parties want the same fill in the same slot, and only one can have it.
The curve has no liquidity providers and no pool in the usual sense. Price is a deterministic function of how many tokens have been bought, so every purchase moves it and there is no depth to absorb anything. That design is what makes early buying attractive and late buying expensive, and it is also what makes concurrent buying so wasteful: two bots targeting the same fill produce one success and one paid failure.
None of this means volume on a curve is pointless. It means the cost of it should be understood before committing a budget, because the same SOL spent after graduation buys several times more landed swaps. Running a Pump.fun volume bot against a live curve is a perfectly reasonable thing to do; it is just expensive, and the choice is easier to make when the price of it is visible in advance.
Raydium: three programs, three different costs
Concentrated liquidity is the difference that matters. In a CLMM pool, liquidity providers choose the price range they cover, so depth is not spread evenly across all prices. A pool can look deep in aggregate and be thin at the exact price you are trading. That produces failures when the price moves outside the range you were quoted against.
In the current sample CLMM showed a median fee of 5,777 lamports and a 30.8% failure rate, which works out to roughly 8,348 lamports per swap that actually lands, while AMM v4 showed a median fee of 5,162 lamports and a 25% failure rate, which works out to roughly 6,883 lamports per swap that actually lands.
The practical guidance for a volume campaign is to prefer the pool with real depth at the current price, not the pool with the largest headline TVL. The full comparison of the three programs is in Raydium CLMM vs CPMM for a volume bot, and venue-specific routing behaviour is in Raydium volume bot routing.
Meteora DLMM: bins, not curves
Our sample showed a median fee of 5,511 lamports and a 35.6% failure rate, which works out to roughly 8,557 lamports per swap that actually lands. The bin structure is why sizing matters more here than elsewhere: a trade small enough to stay within one bin behaves very differently from one large enough to cross several.
For a volume campaign this is mostly good news, because campaigns are built from small trades by design. A well sized trade on a DLMM pool sits inside a bin, pays a predictable fee, and moves the price not at all. The failure cases come from oversizing, and from bins emptying as liquidity providers rebalance. How bin width changes the arithmetic is covered in Meteora DLMM bin steps, and routing specifics are in Meteora DLMM routing.
Orca Whirlpools: concentrated liquidity with tighter tick spacing
The measured figure in our window was a median fee of 7,672 lamports and a 20% failure rate, which works out to roughly 9,590 lamports per swap that actually lands. Orca pools tend to be well maintained on established pairs and thin on new ones, which makes venue choice a function of your token's age as much as anything else.
If your token has an Orca pool at all, someone deliberately created it, which is a mild signal of intent that a freshly graduated token usually lacks. Whether that pool is where your volume belongs still depends on where the depth is, and how to check it is covered in the Orca Whirlpool volume bot guide.
Jupiter: the best price is not always the cheapest swap
In the sample Jupiter showed a median fee of 6,000 lamports and a 33.3% failure rate, which works out to roughly 8,996 lamports per swap that actually lands. For a single large swap where price impact dominates, that trade is usually worth taking. For a volume campaign made of many small swaps, where the quoted price advantage on each is tiny, paying a higher failure rate to capture it is usually a bad deal.
There is a second reason to think twice. An aggregated swap may execute across several pools, which means the volume it generates is split across them too. If the objective is to make one specific pair look active, routing that spreads the activity is working against the goal. When aggregation does make sense is covered in Jupiter aggregator routing.
How to choose a venue for your campaign
- Find the depth. Volume generated where there is no liquidity moves the price violently and costs far more in slippage than it ever saves in fees.
- Identify the pool type. Constant-product pools behave predictably across all prices. Concentrated pools do not, and need smaller trades to stay inside the active range.
- Size trades against depth, not against budget. The right trade size is the largest one that does not visibly move the price. That is a property of the pool, not of how much you want to spend, and it is also what separates volume from makers, as covered in makers versus volume.
- Check today's failure rate. Not last month's. Congestion changes the ranking, and a venue that was cheapest last week can be worst today.
When you set up a campaign in the dashboard, the token address you enter determines the venue automatically by finding where its liquidity actually sits, so you are not asked to guess. What you do control is trade size, interval and slippage, and those are where the cost differences above become yours to manage. If you want to model the numbers before committing anything, the calculator takes a target volume and returns what it costs at current measured rates.