Swapping Solana memecoins without overpaying: slippage, price impact, priority fees and fees
We break one swap into the costs our trade sheet shows: what “Minimum received” means, why a quote expires, how a sandwich attack works, where the Token-2022 transfer fee hides and how much we actually earn on your swap.

Key takeaways
- Slippage tolerance, price impact, priority fees and platform fees are four different costs. A higher tolerance does not improve the price, it only permits a worse result
- “Minimum received” is the worst result you accept. If the market moves further, the transaction fails, but you still pay the network fee
- A quote expires because a Solana transaction has a limited validity and prices move. Once it expires, our terminal blocks signing
- Low slippage is the most effective defence against a sandwich attack. No tool removes MEV entirely
- A token with a Token-2022 transfer fee loses part of every transfer, including when you buy and sell, and the rate can change after you buy
- MEMECOINY charges 0.75% on every swap in its terminal. Swapping directly in Jupiter Ultra costs less for most pairs
Four different costs in one swap[2][1][6]
A Solana memecoin swap in our terminal goes through the Jupiter Swap API. Before you sign anything, the “Quote preview” sheet shows three rows: “Minimum received”, “Price impact” and “Total swap fees”. Behind the “Fee and route details” button there are more: “Expected output”, “Slippage”, “MEMECOINY fee”, “Jupiter / route fee” and “Network fee (est.)”. Each row is a different cost, and it pays to keep them apart.
Price impact comes from the size of your order relative to the pool's liquidity: the bigger the trade in a shallow pool, the worse the average price. Jupiter reports it in the priceImpact field in percentage points, and we show it in the “Price impact” row. Slippage tolerance is something else: how far execution may move from the quote before the transaction is rejected. A priority fee pays the validator to include the transaction sooner. A platform fee is the intermediary's charge, for us the “MEMECOINY fee”.
- Price impact: the cost of your order size in that pool, the “Price impact” row
- Slippage tolerance: the permitted move away from the quote, the “Slippage” row and the “Max slippage” setting
- Priority fee and the base network fee: the “Network fee (est.)” row
- Platform fee: the “MEMECOINY fee” and “Jupiter / route fee” rows, together in “Total swap fees”
What “Minimum received” really means[2][7]
The “Minimum received” row is the smallest amount of the token the transaction can give you. We take it from the otherAmountThreshold field, which Jupiter describes as the minimum output amount after slippage. If Jupiter does not report it, we compute it ourselves: the expected output reduced by the slippage setting, rounded down.
The minimum is neither a forecast nor a guaranteed loss. It is a boundary: if the price moves further than the tolerance allows, the transaction is rejected instead of executing at a worse price. A rejected transaction is not free, though. The Solana documentation says plainly that the transaction fee is charged whether the transaction succeeds or fails.
So before signing, look at “Minimum received” first and only then at “Expected output”. The estimate shows the result at the current price, the minimum shows what you agree to in the worst case.
Slippage in the terminal: Auto, 0.5%, 1%, 3% or custom[2][1][3][5]
The “Max slippage” setting offers Auto, three presets of 0.5%, 1% and 3%, and a custom field from 0.1% to 10%. In Auto we do not send the slippageBps parameter, and according to its documentation Jupiter then determines an appropriate slippage itself. In Ultra Mode this is done by the Real-Time Slippage Estimator (RTSE), which sets the tolerance for each swap from the token category, recent volatility, liquidity depth and network congestion, aiming for the lowest value at which the trade still lands.
Jupiter also describes the other side: slippage set too low increases failed trades, set too high exposes you to worse prices. Above 3% we show a warning: “Slippage above 3% raises the risk of a worse price and sandwich attacks.”
Under the “Slippage” row you see the mode Jupiter returned: ultra or manual. Jupiter's documentation lists slippageBps and referralAccount among the parameters that switch an order to manual mode and may restrict routing. Our orders always carry a referralAccount, because that is how we collect our fee, so expect manual there.
Why a quote expires[8][1]
A Solana transaction carries a recent blockhash, which the Solana documentation says is valid for 150 slots. For aggregator routes, Jupiter returns lastValidBlockHeight as the hard expiry: after that block height the transaction is invalid. RFQ routes, quoted by a market maker, carry their own expireAt, and Jupiter says they are typically shorter-lived than aggregator quotes. Jupiter advises signing and submitting at once, because within the validity window the price can move against you.
A browser cannot convert block height into time without an extra RPC call, so for aggregator routes we use a fixed, conservative 45-second window. When an RFQ route has an earlier expireAt, that applies instead. We subtract a 3-second safety margin, so the countdown in the “Trade details” sheet starts at 42 seconds at most and reads, for example, “valid 30s”.
When the countdown reaches zero you see “expired” and the message “The quote expired. Refresh it before signing.” Signing is blocked at that point. A new quote is not a formality: it is computed again at the current price, so the amounts can differ.
Priority fees and the network fee[6][7][1][2]
Every Solana transaction pays a base fee of 5,000 lamports per signature. Half is burned and half goes to the validator. The priority fee is optional and is computed as the compute unit price in micro-lamports times the compute unit limit, divided by one million and rounded up. The whole priority fee goes to the validator. Both fees are charged even when the transaction fails.
We do not set the priority fee by hand. Jupiter applies its own priority fee strategy for current network conditions, and the prioritizationFeeLamports field in its response includes priority fees and tips, for example for Jito. The “Network fee (est.)” row adds up the signature fee, the priority fee when you pay it, and the rent deposit for a new token account when your wallet does not have one yet (the note “includes rent deposit”). When Jupiter covers the network fees, the row reads “covered by Jupiter”.
Before you sign, our server checks the transaction. If the priority fee exceeds 0.005 SOL, we refuse with the message “The priority fee is unusually high. Signing refused.”
The 0.75% MEMECOINY fee and what the same swap costs elsewhere[1][2][3]
We earn money on swaps made through our terminal. Every Jupiter order we send carries a referralAccount with a 75 basis point fee, which is 0.75% of the swap value. Jupiter allows a referral fee from 50 to 255 basis points, keeps 20% of the integrator fee and charges no separate platform fee in that case. Of the 0.75%, 0.6% of the swap value goes to MEMECOINY and 0.15% to Jupiter. You pay 0.75%.
The “MEMECOINY fee” row shows the rate and the amount in the token Jupiter collects it in. “Jupiter / route fee” shows what Jupiter adds on top of our rate, such as cost recovery for a gasless transaction. When nothing is added, you see “none extra”. “Total swap fees” is the feeBps field, which Jupiter describes as the total fee rate for the swap, with “+ network” when you pay the network fee. Our server rejects a transaction whose platform fee is above 0.75%.
A fair comparison: swapping in Jupiter Ultra without an intermediary costs, according to its documentation, 0.1% for most pairs, 0.5% for tokens younger than 24 hours, and 0% for some stablecoin and LST pairs. If the lowest fee is your only criterion, a swap directly on jup.ag costs less than one through our terminal.
MEV and sandwich attacks: what helps and what does not[10][11][5][3][4][1]
The Solana documentation describes a sandwich attack like this: a searcher detects your pending swap and exploits transaction ordering. First it buys the token before you, pushing the price up, then it sells after your trade and pockets the difference. Your swap executes at a worse price, but still within the boundary you agreed to. That is why the same documentation calls tight slippage the single most effective defence: a smaller window leaves the attacker a smaller margin.
On Solana, ordering can be set by a bundle. Jito defines a bundle as a list of up to 5 transactions that execute sequentially and atomically, all or nothing, and a tip of at least 1,000 lamports is needed for it to be considered. Jito also offers jitodontfront: an account that, once added to an instruction, forces the transaction to come first in any bundle. Jito cautions that this may help reduce sandwich attacks but is not guaranteed to, and it only covers transactions sent through the block engine.
Jupiter says Ultra Mode has built-in MEV protection through private transaction submission, which lowers the risk without removing it, because MEV cannot be fully prevented on any blockchain. The manual mode on jup.ag, Manual Mode, has no MEV protection according to Jupiter. We send our signed transactions through Jupiter's /execute endpoint, but the API documentation does not say whether manual-mode orders get the same protection as Ultra, so we do not promise it.
- Keep slippage low. Auto lets RTSE pick the lowest value at which the trade lands
- Do not raise the tolerance just because one transaction failed
- A large order in a shallow pool is an easy target. Consider a smaller amount
- Compare “Minimum received” with what your wallet shows before signing
The Token-2022 transfer fee trap[9]
A Token-2022 token can carry the transfer fee extension. The mint sets a rate in basis points and a maximum fee per transfer, and every transferred amount is reduced by that fee. The withheld part stays on the recipient's account, and only the withdraw_withheld_authority named in the mint can withdraw it. A rate change takes effect two epochs later.
A swap is a transfer too: when you buy, the token moves from the pool to you, and when you sell, from you to the pool. A token with a transfer fee therefore loses value in both directions, regardless of our fee and price impact. The rate you check today can differ in a few days, because whoever controls the fee configuration can change it after you buy.
Get a sell quote before you buy[2][1]
Before buying, check the exit. In the terminal choose “Buy”, enter an amount of SOL under “You pay” and note the “Expected output”, which the “You receive (est.)” field also shows. Then switch to “Sell”, enter the same number of tokens and read “Minimum received” and “Price impact” on the SOL side. A quote does not need a connected wallet.
The gap between the SOL you pay and what you would get back by selling at once is your cost of getting in and out at an unchanged price: two swap fees, price impact both ways and any transfer fee. If that cost is large, or no sell quote appears, treat it as a sign that leaving may be hard. A quote is a snapshot: liquidity can disappear after you buy.
A worked example on a hypothetical token
The numbers below are hypothetical. They show how to read the sheet, not how any real token will behave. You buy TOKEN for 1 SOL with “Max slippage” at 1%.
“Expected output”: 2,000,000 TOKEN. “Slippage”: 1%, so “Minimum received”: 1,980,000 TOKEN. “Price impact”: −0.80%. “MEMECOINY fee”: 0.75%, here 0.0075 SOL. “Jupiter / route fee”: none extra. “Network fee (est.)”: 0.000105 SOL (5,000 lamports for the signature and 100,000 lamports of priority fee). A sell quote for 2,000,000 TOKEN on the “Sell” tab shows an “Expected output” of 0.9694 SOL. If the price stood still, getting in and out would cost about 3.1%: roughly 1.5 percentage points are the two 0.75% fees and the rest is price impact both ways. At 1% slippage a sandwich attack can push you down to 1,980,000 TOKEN at most. At 10% the boundary would drop to 1,800,000 TOKEN, which is 200,000 TOKEN more at stake. If TOKEN had a 2% transfer fee below its maximum fee cap, buying and selling would take almost 4% more.
Before you sign: a checklist
This order takes a minute and follows the rows of the sheet. If any step leaves a doubt, do not sign: refresh the quote or lower the amount.
- The full token address and the network match, and the risk report shows no unexplained transferFee
- “Price impact” is low for your amount. From 1% the row is highlighted
- “Max slippage” is Auto or a low value. Take the warning above 3% seriously
- “Minimum received” is a result you genuinely accept
- “Total swap fees” and “Network fee (est.)” match what you expect
- A sell quote for the same amount shows an acceptable exit cost
- The countdown in “Trade details” has not expired and the amounts match your wallet
- You only commit an amount you can afford to lose
Sources
Primary material used to verify the information. A number beside a section points to the related source. A link is not an endorsement of the asset discussed.
- 01Jupiter Developers: Order & Execute (Swap API V2)
- 02Jupiter Developers: Get Order (Swap API), parametry i pola odpowiedzi [Jupiter Developers: Get Order (Swap API), parameters and response fields]
- 03Jupiter: Ultra Mode
- 04Jupiter: Manual Mode
- 05Jupiter: Risks and Limitations
- 06Solana: Fees
- 07Solana: Fee Structure
- 08Solana: Transactions (ważność recent blockhash) [Solana: Transactions (recent blockhash validity)]
- 09Solana: Transfer Fees (Token-2022)
- 10Solana: MEV Protection with Jito DontFront
- 11Jito: Low latency transaction send (bundles, tips, jitodontfront)
Spotted an error or something out of date? Write to kontakt@memecoiny.pl. How corrections work
