What a Solana swap actually costs
Every volume bot quotes a service fee. Almost none of them tell you the network bill underneath it, or the part that decides your real spend: how often a swap fails and charges you anyway. These numbers are measured from finalized mainnet blocks, not estimated.
The number that decides your real cost is the failure rate
Across this sample, 22.6% of all Solana transactions failed while still paying their fee. But DEX swap transactions fail far more often than the network average, averaging around 67.7% on the programs with a meaningful sample. A failed swap costs you the fee and produces no volume. That means the honest cost of a swap is not the median fee, it is the median fee divided by the success rate — and no volume bot pricing page shows you that division.
Solana charges a base fee of 5,000 lamports per signature, which is 0.000005 SOL. That part is fixed. Everything above it is a priority fee you choose, bidding for position when blockspace is contested. What the table below shows is that the choice is not academic: the same swap can cost the base fee or a hundred times it depending on what else is competing for the same accounts in the same slot.
Fee distribution across the whole sample
| Percentile | Lamports | SOL | Multiple of base fee |
|---|---|---|---|
| Minimum | 5,000 | 0.000005 | 1.0x |
| Median (p50) | 5,000 | 0.000005 | 1.0x |
| p75 | 6,484 | 0.000006 | 1.3x |
| p90 | 12,001 | 0.000012 | 2.4x |
| p99 | 355,000 | 0.000355 | 71.0x |
| Maximum | 19,509,541 | 0.01951 | 3,901.9x |
Cost and failure rate per DEX program
These are the routing targets a Solana volume bot actually uses. A transaction is counted here when the program appears in its account list, so the figures reflect real traffic against each program in the sampled blocks rather than a synthetic benchmark.
| Program | Sampled tx | Failure rate | Median fee | p90 fee | Cost per landed swap |
|---|---|---|---|---|---|
| Pump.fun AMM (post-graduation) | 3,488 | 35% | 7,398 | 20,000 | 11,382 |
| Meteora DLMM | 1,952 | 58.8% | 7,975 | 14,506 | 19,357 |
| Pump.fun bonding curve | 1,821 | 86.3% | 7,455 | 51,698 | 54,416 |
| Jupiter aggregator v6 | 749 | 80.6% | 8,644 | 26,985 | 44,557 |
| Orca Whirlpools | 354 | 80.5% | 6,786 | 10,002 | 34,800 |
| Raydium CLMM | 321 | 75.1% | 6,918 | 19,847 | 27,783 |
| Raydium AMM v4 | 144 | 57.6% | 8,492 | 465,000 | 20,028 |
| Meteora dynamic AMM low sample | 15 | 46.7% | 5,002 | 27,926 | 9,385 |
| Raydium CPMM low sample | 12 | 41.7% | 5,032 | 105,000 | 8,631 |
How to turn this into a campaign budget
Take the swap count you want to land, divide it by the success rate of your routing target, and multiply by the cost per landed swap. A campaign that needs 5,000 settled swaps on a program failing 30% of the time has to attempt roughly 7,150 transactions, not 5,000. Budgeting from the attempt count instead of the landed count is the single most common way a volume campaign runs out of funds early.
Worked through with the measured figures for the highest-sample program in this window:
| Step | Value |
|---|---|
| Routing target | Pump.fun AMM (post-graduation) |
| Swaps you want to land | 5,000 |
| Measured failure rate | 35% |
| Transactions you must attempt | 7,693 |
| Median fee per attempt | 7,398 lamports |
| Network fee total | 0.0569 SOL |
Two costs sit outside this table and both are real. Jito tips are paid per bundle when you route to avoid sandwich MEV, and they are a bid rather than a fixed price, so they rise with competition; the Jito tips reference covers how that bidding behaves. Account rent is charged once when a swap has to create an account that does not exist yet, which is why the first trade from a fresh wallet costs more than its tenth.
How this was measured
Transparency about method is the only thing that makes a number like this worth anything, so here is the whole procedure:
- Requested 14 blocks from mainnet.helius-rpc.com at finalized commitment, spaced 60 slots apart to avoid sampling one congestion spike.
- Called getBlock with transactionDetails=accounts, which returns the fee and error status of every transaction plus its account list.
- Read meta.fee for the fee actually charged and meta.err for whether the transaction failed.
- Attributed a transaction to a program when that program's address appears in the transaction's account list.
- Computed percentiles over the raw fee values with no trimming, so outliers are visible rather than smoothed away.
Limits you should know about
This is a sample, not a census. It covers 19,703 transactions in a window spanning roughly 5 minutes of mainnet activity, which is enough to characterise typical behaviour and nowhere near enough to describe a volatile launch hour. Fees on Solana are driven by contention for specific accounts, so a hot token can cost several multiples of what this table shows while the network median stays flat. Attribution by account list also counts a transaction that touched a program without swapping through it, which slightly inflates the sample for aggregators. We publish the method so you can weigh those caveats yourself instead of taking the figure on trust.
Using these figures
The measurements on this page are published under CC BY 4.0. Cite them as Volion, Solana transaction costs measured from live blocks, and link back to this page. If you are comparing volume bot vendors, the useful question to put to each one is not what they charge but what their landed-swap cost is on your routing target, and whether they can show you the measurement.
These are the same figures every estimate on this site is computed from. They drive the per-venue cost shown on the Solana volume bot overview, the bonding-curve arithmetic on the Pump.fun volume bot page, the worked totals on pricing, and the cost floor used to test other vendors quotes on the scam arithmetic page.
Run a campaign against these numbers
The console shows target volume, wallet count and estimated network cost together before anything goes live.