New

New: swap on Base, Arbitrum and Polygon See networks →

Solana transaction fees explained: base fee, priority fees and rent

by PrivaccUpdated October 3, 20267 min read

Solana fees are small enough that most people never look at them, right up until a swap fails because the wallet had no SOL left, or a memecoin launch costs fifty cents a transaction instead of a fraction of one. There are three separate costs, each with its own rules, and a fourth that only appears when the network is busy. This guide walks through all of them with real numbers, then answers the questions that come up most: why you need SOL to swap tokens that are not SOL, why a failed transaction still costs, and how much to keep in reserve.

On this page
  1. The four things you can pay for
  2. The base fee
  3. Priority fees
  4. Account rent
  5. Validator tips on swaps
  6. What a failed transaction costs
  7. Why you always need SOL
  8. How Solana compares

The four things you can pay for

Every Solana transaction pays a base fee. Most also pay a priority fee, which is optional in theory and necessary in practice when the network is busy. Receiving a token you have never held before locks a small deposit called rent. And a swap routed through Jupiter, like the ones on this site, may add a tip to the validator that gets it into the block faster.

All four are paid in SOL, by the wallet that signs, whatever tokens the transaction moves. That one fact explains most fee surprises on Solana.

CostTypical amountWhen it appliesRefundable?
Base fee0.000005 SOL per signatureEvery transaction, success or failureNo
Priority fee0.00001 to 0.01 SOLWhenever the network is busyNo
Token account rentabout 0.002 SOL per new tokenFirst time you receive a tokenYes, when the account is closed
Validator tip (Jito)0.0001 to 0.005 SOLSwaps routed for faster inclusionNo

The base fee

Every transaction pays 5,000 lamports per signature. A lamport is one billionth of a SOL, so that is 0.000005 SOL, a fraction of a cent at any SOL price in recent memory. Almost every transaction has one signature, yours; a few have two, which doubles it to 0.00001 SOL.

Half of the base fee is burned and half goes to the validator that produced the block. It is paid whether the transaction succeeds or fails, which matters more than it sounds: a swap that fails because the price moved still costs its base fee, and during a busy launch people can rack up dozens of failures.

Priority fees

A Solana block has room for a fixed amount of computation. When more transactions arrive than fit, validators order them by how much extra each is willing to pay per unit of compute. That extra is the priority fee, set as a price per compute unit multiplied by the compute units the transaction requests.

In a quiet period a priority fee of zero still gets included within a second or two. During a popular token launch or a sharp market move, a transaction with no priority fee can sit unconfirmed until it expires, roughly a minute, and then fail having paid its base fee for nothing.

Most wallets set the priority fee automatically from recent blocks, and Jupiter's swap panel does the same with a setting you can override. The amounts are still small by other networks' standards: a swap at a busy moment might pay 0.001 to 0.01 SOL in priority fee, a few cents to a couple of dollars, where an Ethereum swap at a busy moment costs ten or twenty dollars in gas.

Compute units

A transfer uses a few hundred compute units. A swap through two or three pools uses a few hundred thousand, because each pool's program runs inside the same transaction. The priority fee scales with that, which is why a swap costs more in priority fee than a transfer at the same price per unit.

You never set compute units yourself in a wallet; the app estimates them. If it estimates too low the transaction fails with a compute budget error and still pays the base fee.

Account rent

This is the one that surprises people. On Solana, every token you hold lives in its own small account on-chain, one per token per wallet, and an account has to hold a minimum SOL balance to exist. For a standard token account that minimum is 2,039,280 lamports, a little over 0.002 SOL. The network calls it rent, though nothing is charged over time; it is a deposit that keeps the account alive.

The first time you receive a token you have never held, the transaction creates that account and locks about 0.002 SOL in it. Swap into ten new tokens and about 0.02 SOL is locked across ten accounts. It is refundable: close an empty token account and the deposit returns to your wallet, and Phantom and Solflare both offer a way to do that.

Tokens using the newer Token-2022 standard, which many 2025 and 2026 launches do, can have larger accounts because of the extensions they carry, so the deposit for those can be two or three times higher.

Validator tips on swaps

When a swap is routed for fast inclusion, Jupiter can attach a tip to a validator that runs Jito, a system that lets validators accept bundles of transactions with a payment for ordering them. The tip is separate from the priority fee, goes to the validator rather than being partly burned, and is usually a fraction of a cent to a few cents.

On this site the tip, if any, is already inside the quote: the amount shown as what you receive is after it. There is nothing to add on top.

What a failed transaction costs

A transaction that reaches the chain and fails, because the slippage limit was hit, the price moved, or the compute budget ran out, still pays its base fee and its priority fee. It does not pay rent, because no account was created, and it does not move your tokens.

A transaction that never reaches the chain, because it expired unconfirmed or the wallet rejected it, costs nothing. The difference matters during busy periods, when a swap can fail on-chain several times in a row and each failure costs a few cents.

Why you always need SOL

Every one of the costs above is paid in SOL from the signing wallet, regardless of what the transaction does. Swapping USDC for BONK costs SOL. Sending USDT costs SOL. Receiving a token for the first time locks SOL. A wallet holding ten thousand dollars of USDC and no SOL cannot move the USDC at all.

The most common way to get stuck is to swap away every last bit of SOL. Wallets warn about this, and Jupiter's panel refuses to quote a swap that would leave the wallet unable to pay the fee, but a transfer out can still empty it. Keep a buffer. A tenth of a SOL covers hundreds of transactions and a dozen new token accounts at ordinary fee levels; a quarter of a SOL covers a busy launch too.

How Solana compares

At normal fee levels a Solana swap costs under a cent in base and priority fees, plus the one-time rent if the token is new to the wallet. The same swap on Ethereum mainnet costs a few dollars when quiet and tens of dollars when busy; on Base or Arbitrum it is cents; on BNB Chain a few cents. Solana's fee is also fixed in SOL rather than set by an auction over the whole block, so it is predictable in a way Ethereum gas is not.

The trade-off is that a busy moment on Solana shows up as failed and dropped transactions rather than as a high fee, which is why priority fees exist and why wallets set them for you.

Frequently asked questions

Why did my swap cost more than the base fee?

Three likely reasons: a priority fee because the network was busy, rent because you received a token for the first time, or a validator tip attached by the router. Each is small; together they can reach a few cents, or a dollar or two at the busiest moments.

Do I get the rent back?

Yes. Close the token account once it is empty and the deposit, about 0.002 SOL, returns to your wallet. Phantom and Solflare both have a tool for closing empty token accounts.

Why can I not swap my last bit of SOL?

Because the swap itself has to be paid for in SOL, and the wallet also needs to keep its own minimum balance. Jupiter's panel leaves a small amount behind for that reason. Swap to within a fraction of a SOL and keep the rest.

Does a failed transaction cost anything?

If it reached the chain and failed, it paid the base fee and any priority fee, a fraction of a cent to a few cents. If it expired or was rejected in the wallet before being sent, nothing.

What is a good priority fee?

Whatever the wallet or Jupiter sets automatically, which is read from recent blocks. Raising it by hand only helps during a launch or a sharp move, when being first into a block matters.

Ready to swap?

Non-custodial, no account, and the fee is shown before you sign.

Open the swap

Related articles