What a Solana Trading Bot Actually Costs to Run

Base fees, priority fees, rent, failed attempts, and infrastructure — the full cost picture, and the line items teams discover late.

BoltTx Team··10 min read
solanacostsfeestrading-bottransaction-landingeconomics

Most bot cost estimates start and end with the base fee, note that it is tiny, and stop there. Then the wallet drains faster than the trading results explain.

★The base fee is rarely the largest line item, and it is the only one most people budget for.★

The Complete Picture

Cost Applies when Recoverable
Base fee ★every landed transaction★ no
Priority fee when you attach one no
Rent creating accounts ★yes, on close★
★Failed attempts★ ★landed and reverted★ ★no★
RPC / infrastructure continuously no
Slippage and impact every fill no

★The row teams miss is failed attempts.★ A transaction that lands and reverts consumed a base fee and whatever priority fee you attached. It changed nothing on chain, and it still cost money.

For a sniper bot competing on new launches, reverts can be a large share of all attempts. The cost of the failures is a real operating expense, not an anomaly.

Attribute Cost to Outcome

The one measurement that gives every other number meaning:

// ★Record cost against outcome on every attempt.★
costs.record({
  outcome,                       // success | reverted | expired
  baseFeeLamports: 5000,
  priorityFeeLamports,
  rentLamports: accountsCreated * rentExempt,
  strategy,
});

From that, three numbers that a bare fee total cannot give you:

Cost per successful trade. Total spend divided by successes, not by attempts. ★If one in three attempts succeeds, your real cost per trade is roughly three times the per-transaction fee.★

Wasted spend. Everything paid on reverts. Rising in absolute terms while success stays flat means something upstream changed.

Cost as a share of profit. The only number that says whether the strategy works.

If your fee spend is rising because transactions are not landing, a free BoltTx key is one line to test the submission path.

Priority Fees Are Where Money Leaks

Base fees are fixed and small. Priority fees are chosen, and that is where policy either saves you or costs you.

Hardcoded fees are wrong in both directions. Too high in calm conditions means overpaying on every routine transaction. Too low during congestion means losing the trades that mattered enough to be contested.

// ★Contested per account, not globally.★
const fees = await connection.getRecentPrioritizationFees({
  lockedWritableAccounts: writableAccounts,
});
const sorted = fees.map((f) => f.prioritizationFee).sort((a, b) => a - b);
const median = sorted[Math.floor(sorted.length / 2)] ?? 0;

const fee = Math.min(
  Math.max(median * 2, FLOOR),
  CEILING,                       // ★bound it★
);

★The ceiling is not optional.★ During a fee spike, an unbounded policy is an unbounded expense, and the spike is exactly when your bot is most active. Hitting the ceiling should be an alert, not a silent payment.

Scale the fee to what the trade is worth. Paying the same priority fee for a large opportunity and a routine rebalance means overpaying on one and underpaying on the other.

Compute Limit Is a Fee Decision

This one is invisible until you look for it.

Priority fee is charged as compute unit price × compute unit limit. The limit is what you requested, not what you used.

// ★Leaving the default means paying against a figure well above real usage.★
const sim = await connection.simulateTransaction(tx, {
  replaceRecentBlockhash: true, sigVerify: false,
});
const limit = Math.ceil((sim.value.unitsConsumed ?? 200_000) * 1.2);

instructions.unshift(
  ComputeBudgetProgram.setComputeUnitLimit({ units: limit }),
);

★A transaction requesting far more compute than it needs pays proportionally more priority fee for the same result.★ Setting setComputeUnitLimit from the unitsConsumed that simulateTransaction reports is one of the few changes that reduces cost without reducing competitiveness — and it matters most during fee spikes, when the multiplier is largest.

Rent Is an Asset, Not an Expense

Rent-exempt lamports are locked, not spent. ★They come back when the account is closed.★

Which makes closing accounts a real recovery mechanism:

// ★Empty token accounts are recoverable capital.★
const accounts = await connection.getParsedTokenAccountsByOwner(
  wallet.publicKey, { programId: TOKEN_PROGRAM_ID },
);

const empty = accounts.value.filter(
  (a) => a.account.data.parsed.info.tokenAmount.uiAmount === 0,
);
// createCloseAccountInstruction for each, batched.

A bot that trades many tokens accumulates empty token accounts continuously. Each holds rent that is doing nothing. A periodic job using getParsedTokenAccountsByOwner plus createCloseAccountInstruction recovers it, and closing accounts batches cheaply since it is a single instruction each.

★Track locked rent separately from spent fees in your accounting.★ Treating rent as an expense understates your capital and hides that some of it is recoverable at any time.

Infrastructure Against Fees

The two categories behave differently, and confusing them leads to bad decisions.

Fixed costs — servers, RPC subscriptions, data feeds — are the same whether you trade once or ten thousand times.

Variable costs — fees, rent, slippage — scale with activity.

★The question worth asking is what a fixed cost buys in variable terms.★ A more expensive endpoint that raises your landed rate reduces wasted spend on reverts and expiries. Whether it pays for itself is arithmetic, and it is arithmetic most teams never do because the two costs live in different places.

monthly fixed cost
  vs
(wasted spend before) − (wasted spend after)
  + value of trades that now land

Measure both before and after, over the same conditions. A comparison run during a quiet week against a busy one tells you nothing.

Costs That Appear at Scale

Things that are negligible at low volume and material at high volume:

Failed attempt accumulation. At a few trades a day, reverts are noise. At thousands, they are a budget line.

Account creation. Every new token means a token account. A bot trading many new tokens is creating accounts constantly.

RPC overage. Request-based pricing scales with polling frequency, and confirmation polling is usually the largest consumer.

Data transfer. Streaming subscriptions on busy programs move real volume, particularly unfiltered ones.

★Estimate all of these from a real sample rather than from a spreadsheet.★ Run the bot for a day, measure everything, then extrapolate — the surprises show up in the sample, not in the estimate.

What Landing Looks Like

Real transactions through our delivery nodes: median confirmation 336ms — under one slot.

★Landing reliability is a cost variable, not only a performance one.★ Transactions that expire have to be rebuilt and resent, and every retry is another opportunity to pay a fee for an outcome you already wanted.

Where BoltTx Fits

We handle submission. Not your fee policy, not your strategy.

Submissions route through our own delivery nodes in four regions with stake-weighted routing and no public mempool exposure, so a transaction is not observable in transit before it lands.

You sign locally. We never hold funds, never sign, and never modify transaction contents. The tip travels inside the transaction, paid on chain from your own wallet, and reverts with the transaction if it fails, because that is how Solana handles atomic transactions. There is no monthly fee, and you pay only on transactions that reach the chain — which puts our cost on the variable side of your model rather than the fixed side.

Get a free API key:

const connection = new Connection("https://la.bolttx.io/?api-key=YOUR_KEY");

FAQ

How much does it cost to run a Solana trading bot? Base fees plus priority fees plus rent plus failed attempts plus infrastructure. The base fee is small and the one everyone budgets for, while failed attempts and priority fees usually dominate.

Do failed Solana transactions cost money? If they landed and reverted, yes — you paid the base fee and any priority fee for an execution that changed nothing. If they never landed, no fee was charged, but the opportunity was still lost.

What is the biggest cost for a Solana bot? Usually priority fees and failed attempts, not base fees. For bots creating many token accounts, rent can rival both, though rent is recoverable while fees are not.

How do I reduce Solana priority fee spend? Derive fees from recent activity on the accounts you write to rather than hardcoding, set the compute unit limit from simulation, and cap the fee with an alert when you hit the cap.

Does the compute unit limit affect what I pay? Yes. Priority fee is price times limit, and the limit is what you requested rather than what you used. An over-requested limit pays proportionally more for the same result.

Is rent a cost or an asset? An asset. Rent-exempt lamports are locked and returned when the account is closed, so track them separately from spent fees and run a cleanup job to recover them from empty accounts.

How do I calculate cost per successful trade? Total spend including reverts and expiries, divided by successes rather than attempts. If one in three attempts succeeds, your real per-trade cost is roughly triple the per-transaction fee.

Should I close empty token accounts? Yes, periodically. Each holds rent that is doing nothing, and closing is one instruction per account so it batches cheaply. A bot trading many tokens accumulates these continuously.

How do I know if a paid RPC is worth it? Compare the fixed cost against the reduction in wasted spend plus the value of trades that now land, measured under the same conditions. Most teams never do this because the costs live in different places.

What costs appear only at scale? Failed attempt accumulation, account creation for new tokens, RPC request overage from confirmation polling, and data transfer on streaming subscriptions. All are negligible at low volume.

How do I estimate bot costs before running it? Run it for a day, record cost against outcome for every attempt, then extrapolate. Spreadsheet estimates miss reverts and account creation, which are usually the surprises.

Does landing reliability affect cost? Yes. Expired transactions must be rebuilt and resent, and every retry is another chance to pay for an outcome you already wanted. Reliability reduces wasted spend directly.

Should priority fees scale with trade size? Generally yes. Paying the same fee for a large opportunity and a routine rebalance means overpaying on one and underpaying on the other, and the underpaid one is usually the one that mattered.

What is a reasonable fee ceiling? One derived from the value of the trades you are competing for, not a round number. Hitting it should raise an alert so you know conditions are extreme rather than silently paying through a spike.

How do I track costs by strategy? Tag every cost record with the strategy that generated it. Aggregate totals hide that one strategy may be consuming most of the fee budget while contributing little of the profit.

Does slippage count as a cost? It should. It does not appear in fee accounting, but it reduces realised value on every fill, and for a bot with wide tolerance settings it can exceed the fees comfortably.

Back to all posts