> For the complete documentation index, see [llms.txt](https://docs.j.tools/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.j.tools/tools/trade/bundled-trade.md).

# Bundled Buy and Sell With Jito Bundles

Bundled Trade runs a single direction, a buy or a sell, across a large set of wallets and aims to land every trade in the same block. It builds and signs each wallet's transaction in your browser, groups them into [Jito bundles](/concepts/bundles-and-jito.md), and each Jito bundle lands atomically, so the transactions in one bundle confirm together or that bundle does not land. The result is a coordinated entry or exit that leaves little room for snipers and front-runners to wedge in.

## What it is

[Bundled Trade](https://j.tools/en/tools/bundled-trade) is a combined buy and sell terminal for many wallets at once. You import one wallet list, choose a direction (Buy or Sell) and a DEX, and set per-wallet amounts. It handles up to 400 wallets, shares the same list across both modes, and shows the live status of every wallet as the run goes.

## Why use this tool

A normal multi-wallet swap sends transactions one at a time. They trickle onto the chain across several blocks, which leaves gaps. In those gaps, a bot watching the chain can see your first buy, copy it, and trade ahead of the rest of your wallets. By the time your later wallets land, the price has moved against them.

Bundled Trade narrows that gap. Within a bundle there is no slot between your trades for someone else to act, which makes it a strong pick for anti-MEV entries, fair-launch style buys, and clean coordinated exits where you do not want the price drifting while your wallets line up.

## How it works (under the hood)

You pick a token, a DEX, and a direction. For each wallet, the tool requests a fresh quote from the run's venue. A quote is the venue's current answer to "how much of the other side do I get for this input." The quote carries a price, and from there two numbers matter:

* **Slippage** and **price impact** work as described on [Swap](/tools/trade/swap.md). What changes here is scale: Auto slippage uses a safe 15 percent default, the other presets are 10, 15, and 25 percent plus a custom field, because a thin pool absorbing a whole run of buys needs far more room than a single trade.

The platform fee attaches as a separate transfer inside each wallet's transaction. It is not skimmed from the swap output and it is not the Jito tip. The amount is read from the server config at run time, so the summary always reflects the live fee before you sign.

Each wallet's transaction is built and signed locally in your browser tab from the key you imported, and no key passes through any server on the way to the chain. The signed transactions are then packed into bundles automatically, at most 3 wallet transactions per bundle. The whole bundle is capped at 4 transactions, because on some venues the tip takes a slot of its own, so a full 400-wallet run becomes 134 bundles. Atomicity holds within a single bundle: each bundle lands or misses on its own, so part of a run can land while the rest does not, and you retry the wallets that missed.

Where the tip sits depends on the venue. On a Pump.fun bonding curve every wallet transaction carries its own tip next to the platform fee. On PumpSwap and Raydium the swap transaction is already close to the 1232-byte packet limit, so the tip goes into one separate transaction signed by the bundle's first wallet, and that bundle pays one tip rather than one per wallet. Either way the tip is what gives a validator a reason to include the bundle, and the bundles go out through Helius Sender, which relays them into the Jito auction across its regions. The same bytes are re-posted every few seconds while the bundle is still valid, because a Jito bundle can only land when a Jito-enabled validator is the scheduled leader. The terminal polls for confirmation and reports which wallets succeeded, which failed, and the bundle IDs.

<figure><img src="/files/I8ApiCgAkMwGU0RQOBDl" alt="How an atomic bundled trade works"><figcaption></figcaption></figure>

## When to use it

* You want one terminal for both bundled buy and bundled sell, without rebuilding the wallet list when you switch direction.
* You want to pin a specific venue (Pump.fun, PumpSwap, or Raydium) or let Auto resolve the live pool, with control over the per-wallet Jito tip. See [DEXes and liquidity](/concepts/dexes-and-liquidity.md) for how each venue routes.

If trades do not need to share a block, [Multi Swap](/tools/trade/multi-swap.md) sends each wallet on its own with pacing and retries. For a single trade from one wallet, use [Swap](/tools/trade/swap.md).

## Before you start

* A connected wallet is optional here. Connect one and the run's fee and referral records are anchored to it; leave it disconnected and the first imported wallet identifies the run instead. Either way it does not fund the trades and it never signs one. ([How to connect a wallet](/getting-started/quick-start.md).)
* The private keys for every trading wallet, imported through the **Import Wallets** modal. Each wallet's swap transaction is built and signed in your browser tab from its key.
* A valid [SPL token](/concepts/spl-vs-token2022.md) mint, picked with the built-in token selector.
* For buys, each wallet funded with enough SOL for its amount plus the network fee and the Jito tip. For sells, each wallet holding a balance of the token you chose.

{% hint style="warning" %}
**This tool imports raw private keys.** Bundled Trade signs each wallet's transaction locally from its private key, so the import modal asks you to paste those keys. That is by design for this tool, and the config marks it high risk. Keys stay in your browser tab and are used only to sign. Treat the wallets you import as hot wallets, never paste a key you also use for long-term storage, and close the tab when you are done so the session clears.
{% endhint %}

## Step by step

{% stepper %}
{% step %}

### Choose a mode

Connect a wallet if you want the run credited to your referral, or skip it. Then pick **Buy** or **Sell** with the tab at the top. Switching modes keeps your imported wallet list, so you can flip from buy to sell without re-importing.
{% endstep %}

{% step %}

### Pick the route and the token

Choose the route: Auto, Pump.fun, PumpSwap, or Raydium. Auto looks up where the token trades at run start and pins that venue; picking a venue forces it. Then select the token mint with the built-in token selector.
{% endstep %}

{% step %}

### Set slippage and the tip

Choose a slippage tolerance (Auto applies a safe 15 percent default; the presets are 10, 15, and 25 percent, plus a custom field) and a per-wallet Jito tip (the low, med, and high presets are 0.003, 0.006, and 0.015 SOL, or set a custom value). Bundle packing is automatic, so there is nothing to size by hand.
{% endstep %}

{% step %}

### Import the wallets

Open the **Import Wallets** modal and add the private keys for the wallets you want to trade from, up to 400. Live SOL balances are fetched so you can see what each wallet holds.
{% endstep %}

{% step %}

### Fill in per-wallet amounts

Pick an amount mode for the run. On buys, **Max − reserve** spends each wallet's balance minus a reserve you set, **Percent** spends one percentage of every balance, **Equal** spends the same fixed amount everywhere, and **Manual** lets you edit each row's amount in the table. On sells the first mode becomes **Max (all)**, which sells each wallet's full token balance. You can filter rows, select only some, or remove any you do not want in the run.
{% endstep %}

{% step %}

### Review and execute

Check the summary: the eligible wallet count, the bundle plan, the platform fee, and the total Jito tip. When it looks right, click **Execute**. Each wallet gets a quote against the run's pinned venue, and a signed transaction is built with that wallet's key.
{% endstep %}

{% step %}

### Watch the bundles land

Signed transactions are packed into bundles automatically, at most 3 wallet transactions each, and submitted. The terminal shows the bundle IDs, the count of successful and failed wallets, the bundle plan, and the per-endpoint attempt history as each bundle confirms.
{% endstep %}
{% endstepper %}

[**Open Bundled Trade in the app →**](https://j.tools/en/tools/bundled-trade)

{% hint style="info" %}
**About wallet warnings.** Some tools bundle several instructions into one transaction, for example creating a token and its metadata together. Phantom can show a caution banner for these transactions. The banner is expected here and does not mean something is wrong. Read what you are signing, then approve.
{% endhint %}

## The options, explained

* **Mode:** Buy or sell for the whole run, chosen with the Buy/Sell tab. Buy spends SOL for the token; Sell swaps the token back to SOL. Switching keeps the wallet list.
* **DEX:** the route: Auto, Pump.fun, PumpSwap, or Raydium. Auto resolves the live pool at run start and pins it for the whole run. Picking a venue forces it, and a token with no market there fails its quote.
* **Token:** the SPL token mint to trade, chosen with the built-in token selector. Required before Execute is enabled.
* **Wallets:** the trading wallets, imported by private key through the Import Wallets modal. Up to 400 per run, with live SOL balances shown.
* **Amount per wallet (buy):** set by the amount mode: Max − reserve (balance minus a reserve you set), Percent (one percentage for the run), Equal (one fixed SOL amount), or Manual (edit each row in the table).
* **Amount per wallet (sell):** the same modes, in tokens. Max (all) sells the wallet's full on-chain balance, Percent sells one percentage of each balance, and Manual overrides single rows. Amounts above the actual balance are rejected.
* **Slippage:** tolerance in percent: 10, 15, or 25, plus Auto, which applies a safe 15 percent default, or a custom value validated in the tool.
* **Jito tip:** the validator tip in SOL: low (0.003), med (0.006, the default), high (0.015), or a custom value. Where it sits per venue is covered under How it works; either way it is a priority tip, not the platform fee, and the tool reserves it in every wallet, so fund for the upper bound. A higher tip improves your odds of inclusion when the network is busy. The preset does not cap the tip: before each bundle goes out, the tool reads the live Jito tip floor and raises your tip to meet it if the auction has moved above your setting, up to 0.05 SOL per transaction, because a bundle tipped below the floor simulates cleanly and then never lands.
* **Bundle packing:** automatic. The builder packs at most 3 wallet transactions per bundle, inside a 4-transaction bundle ceiling that leaves room for a tip transaction, and sizes each bundle dynamically.

## Supported DEXs

Bundled Trade pins one venue for the whole run. Auto resolves the live pool at run start; picking a venue forces it, and if the token cannot be traded there the quote is rejected and the row fails. Meteora and Orca are not supported in this tool.

{% tabs %}
{% tab title="Auto" %}
Looks up where the token trades at run start and pins that venue for the whole run. Use this when you are not sure whether the token is still on its bonding curve or already in a pool.
{% endtab %}

{% tab title="Pump.fun" %}
Trades tokens that are still on a Pump.fun bonding curve, before graduation.
{% endtab %}

{% tab title="PumpSwap" %}
Trades tokens that have graduated from the bonding curve to a PumpSwap pool.
{% endtab %}

{% tab title="Raydium" %}
Routes through Raydium, including its CPMM and CLMM pools. Use this for tokens with a live Raydium market.
{% endtab %}
{% endtabs %}

## Fees and costs

{% hint style="warning" %}
**About fees.** Every action has two costs: the Solana **network fee** paid to validators, and the **J Tools platform fee**. The platform fee always shows in the app before you confirm, and nothing is charged until you sign. Fees can change over time, so trust the in-app summary rather than a number you saw once.
{% endhint %}

**Current platform fee: 0.0035 SOL per wallet, charged only on wallets whose bundle actually lands.**

| Cost                 | Amount                                             |
| -------------------- | -------------------------------------------------- |
| J Tools platform fee | 0.0035 SOL per wallet, on landed wallets only      |
| Solana network fee   | a small amount per transaction, paid to validators |

Example: a 20-wallet run costs at most 0.07 SOL in platform fees. A bundle that misses costs nothing, so a run where 14 of the 20 wallets land pays 0.049 SOL.

On top of the platform fee, every transaction in the bundle pays the standard Solana network fee, and the run pays the Jito tip you set with the tip preset. The network fee is tiny per transaction. What the tip costs depends on the venue: on a Pump.fun curve every wallet pays its own, so budget the tip times the wallet count; on PumpSwap and Raydium one tip covers a bundle of up to 3 wallets, so the real spend is roughly a third of that. The cost line quotes the upper bound and the pre-flight reserves a tip in every wallet, so fund each buying wallet for its trade amount plus the network fee plus its own tip; a wallet short on SOL will fail its row.

## Common mistakes and troubleshooting

* **No route for the selected DEX.** The token is not tradable on the DEX you picked, so the quote is rejected. Switch to the venue where the token has liquidity.
* **A sell row has no balance.** A wallet set to sell holds zero of the token. Remove it, or fund it with the token first.
* **A sell amount is too high.** A number or percentage above the wallet's actual on-chain balance is rejected. Lower it, or switch to Max (all).
* **A buy wallet is underfunded.** A wallet does not hold enough SOL for its amount plus the network fee and the Jito tip. Top it up and rerun.
* **A bundle stays pending.** The tool watches the bundle's own transaction signatures on chain for about 30 seconds, re-posting the same bytes every few seconds, then gives the bundle one retry on a fresh blockhash. If neither window lands it, the bundle is marked failed and its wallets are left untouched. Retry those wallets, and raise the tip if the network is busy.
* **Phantom shows a caution banner.** These are fee-bearing, multi-signer transactions, so the banner can appear. Read what you are signing, then approve.

For the full list, see the [Error codes reference](/reference/error-codes.md).

## Advanced tips

* **Raise the tip when bundles time out.** Packing is automatic, so under heavy load the lever you control is the Jito tip. If bundles keep missing their slots, move up a preset and rerun the failed wallets.
* **Spread amounts to look organic.** Identical SOL amounts across every wallet read as a bot. Vary the per-wallet amounts so the entry looks like separate buyers rather than one script.
* **Budget the tip by venue.** On a Pump.fun curve every wallet pays its own tip, so a 100-wallet run at the 0.003 SOL preset costs about 0.3 SOL in tips. On PumpSwap and Raydium the same run packs into 34 bundles with one tip each, about 0.102 SOL. The cost line shows the higher figure, and each wallet still has to hold its own tip.

## Related tools

{% content-ref url="/pages/sAoyZDh9f2RlcKOAuq5G" %}
[Multi-Wallet Swap](/tools/trade/multi-swap.md)
{% endcontent-ref %}

{% content-ref url="/pages/wzTSdddfnEFKadxZXdPR" %}
[Solana Token Swap](/tools/trade/swap.md)
{% endcontent-ref %}

{% content-ref url="/pages/OUTARQ7CwmWSmwdYM3f6" %}
[Pump.fun Create and Bundle Buy](/tools/launch/pumpfun-create-and-bundle-buy.md)
{% endcontent-ref %}

{% content-ref url="/pages/o5eO6abVdoCCB4WkfKVR" %}
[Solana Holder Booster](/tools/boost/holder-booster.md)
{% endcontent-ref %}

{% hint style="success" %}
**J Tools is non-custodial.** We never store or transmit your private keys and never ask for your seed phrase. Every transaction is signed in your own browser, and nothing about a key ever reaches our servers. A few multi-wallet tools do let you paste private keys for throwaway hot wallets, which stay in your browser tab and are used only to sign locally. Never paste a key tied to long-term holdings, and if a page ever asks for your seed phrase, stop and close it.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.j.tools/tools/trade/bundled-trade.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
