Orca Crypto
Menu
Start Here
Learn
Chains
Exchanges
Markets
Tools
Safety
Glossary
More
Our tokens Book a session
Intermediate · DeFi, used well

Limit orders, DCA and TWAP onchain

A market swap pays for speed. These tools let an order wait for your price, or spread it out, while you stay in control.

Loading live prices
By the Orca Crypto teamUpdated 2026-09-28How we check this13 min readIntermediate
The short answer

An onchain limit order is a signed instruction, such as "sell 1 ETH for at least 3,500 USDC before Friday", that a keeper, filler or solver executes once the market makes it worth doing. On most designs placing one costs no gas. DCA splits a purchase into equal buys on a schedule, and TWAP slices one large order so the pool can refill between pieces. None of them promises a fill the instant price touches your level.

Paying for speed, or waiting for price

Every swap in the guide to getting a good fill is a market order: you take what the pool offers right now and pay for that immediacy in price impact and slippage. The three tools in this guide trade immediacy for control.

  • A limit order sets the worst price you will accept, then waits.
  • A DCA order (dollar cost averaging) sets a schedule and deliberately ignores price.
  • A TWAP order (time weighted average price) takes one large trade and spreads it thin enough that each piece barely moves the pool.

There is a puzzle hiding in the first one. An automated market maker has no order book, so there is nowhere for a resting order to sit. Onchain limit orders solve that by keeping the order somewhere else and letting a third party bring it onchain at the right moment.

How an onchain limit order works

There are two designs in wide use, and they differ in where your tokens wait.

Signed order, tokens stay home. You sign a typed message that says, in effect: sell this much of token A, receive at least this much of token B, valid until this time. The signature goes to an order service, not to the chain. Your tokens stay in your wallet, and a one time approval lets the settlement contract pull them only when someone fills an order that matches your signature exactly. The filler pays the gas. UniswapX, CoW Protocol and the 1inch Limit Order Protocol all work this way.

Vault and keeper. You deposit the tokens you are selling into a program owned account, and a keeper bot watches the price and runs the swap when your trigger is hit. Jupiter on Solana works this way, where the deposit is an ordinary low fee transaction.

ExampleChainWhere your tokens waitWho fills itCost to place
Jupiter Limit Order V2SolanaA program owned vaultJupiter’s keeper, routed through its Ultra engineA small Solana transaction to deposit
Uniswap limit orders (UniswapX)Ethereum mainnet in the Uniswap web appYour walletUniswapX fillersNo gas, beyond a one time Permit2 approval per token
CoW Swap limit ordersEthereum and several layer 2s and sidechainsYour walletSolvers in CoW Protocol’s batch auctionsNo gas after the token approval
1inch limit ordersMany EVM chainsYour walletAnyone who submits the signed order onchainA signature after the token approval; unfilled orders cost nothing

Product details as of September 2026. Jupiter’s older Limit Order V1 no longer accepts new orders, and the Uniswap help center, last updated February 2026, lists Ethereum mainnet as the only network for limit orders in its web app.

Intents, in plain terms

A signed limit order is the simplest example of an intent. You sign the outcome you want, not the route to it, and independent parties compete to deliver it. What differs between systems is how that competition is run.

Dutch auction

UniswapX and 1inch Fusion start the price at the generous end and let it decay toward your minimum until a filler finds it profitable. The first filler to settle wins and pays the gas, so a failed attempt costs you nothing.

Batch auction

CoW Protocol collects orders into batches and lets solvers bid to settle each batch. Two users trading in opposite directions can be matched directly, with no pool in between.

Keeper and vault

Jupiter holds the tokens and its keeper executes when the trigger hits. Simple and fast on Solana, where fees are tiny, at the cost of trusting the keeper to act in time.

Intents come with two quiet benefits: you never pay for a transaction that fails, and there is no public swap sitting in the mempool for a sandwich bot to attack. The cost is that someone must find your order worth filling. How solvers compete, and where that competition is thin, is the subject of order books, RFQ, intents and solvers.

When price touches your level and nothing happens

This is the most common surprise with onchain limit orders, and it has four causes.

The filler needs a margin. Filling your order costs gas and the filler wants a profit, so the market has to trade through your price by enough to pay for both. The cost is roughly fixed per order, so small orders need a bigger move. Say you place a sell of ETH at 3,500 USDC and it costs a filler 4 dollars to settle (an illustrative figure):

Order sizeOrder valueMarket price neededBeyond your limit by
0.1 ETH350 USDC3,540.001.14%
1 ETH3,500 USDC3,504.000.11%
10 ETH35,000 USDC3,500.400.01%

CoW Swap’s limit order documentation says this plainly: the order waits until the market price covers both your limit price and the network fees, so it may not execute exactly when the market price hits your limit.

A different price touched. The chart you watch is often an exchange price or an average. Your order is checked against onchain liquidity, or, for Jupiter’s V2 orders, against a USD price, after which the real swap still has to succeed within its slippage limit. A wick on one venue does not mean a pool traded there.

The level did not last. A wick can live for a single block with little liquidity at that price. The result is no fill or a partial one.

The keeper was too slow. Jupiter’s own FAQ lists price moves too rapid for keepers and slippage failures during settlement among the reasons an order does not execute.

Think like the filler
On a centralized exchange your order sits in the book, so a trade at your price can fill it. Onchain, the order sits outside the market until someone profits from bringing it in. Set the limit slightly beyond the level you care about, and size orders so the fixed cost of filling is small.

Expiry, partial fills and fees

Expiry choicesPartial fillsCanceling
Jupiter V21 hour, 1 day, 1 week (default), 30 days or a custom dateYes; filled parts settle, the rest stays openWithdraw from the vault with a transaction
CoW SwapSet when you place itOn by default; can switch to fill or killOffchain cancel is free; onchain cancel costs gas
UniswapSet when you place itNot stated in its help pagesCanceling costs gas; expired orders cost nothing
1inch1 hour, 1 day, 7 days, 1 month or customSupported by the protocolExpires automatically; an early cancel is an onchain transaction

Two details matter in practice. CoW notes that a partially filled order can leave a small remainder unfilled when it is too small to cover the network fee of settling it. And an offchain cancel is a request to the order service: an order can still settle in the moments before the cancel lands.

Fees vary by design. Jupiter charges its V2 limit and DCA orders a base fee of 0.03% to 0.1% plus a routing fee of 0 to 0.5%, depending on the pair. CoW takes half of any surplus above your limit price on orders placed away from the market, capped at 0.98% of volume, plus a volume fee of 0.02% on most pairs and less on stablecoin pairs. These are the published figures as of September 2026, and every interface shows the fee on the confirmation screen.

Stop losses and take profits

Jupiter’s V2 orders go beyond a plain limit: stop loss and take profit, one cancels other pairs where the first trigger cancels the second, an entry order that arms both exits, and a trailing stop that follows the price up at a distance you set, from 0.5% to 90%.

Understand what an onchain stop is: a trigger that fires a market swap, not a promise of a price. Jupiter’s limit order documentation warns that a stop loss may not execute if price moves faster than execution or liquidity runs short within your slippage tolerance.

A stop is not a floor
The moment a stop matters most is a crash, which is when pools are thinnest and, on busy chains, fees spike. A thinly traded token can gap straight through your trigger. Treat an onchain stop as damage control that usually works, and size positions so it does not have to. The risk management guide covers sizing.

DCA: the same amount on a schedule

Dollar cost averaging buys a fixed dollar amount at fixed intervals, whatever the price. Because a fixed amount buys more units when the price is low, your average cost lands below the simple average of the prices you bought at. Five weekly buys of 100 dollars, at illustrative prices:

WeekPriceUnits bought
1$1001.0000
2$801.2500
3$1250.8000
4$901.1111
5$1100.9091
TotalAverage price $101.005.0702 units, average cost $98.62
average cost = total spent ÷ total units boughtAlways at or below the plain average of the prices on your buy dates. It does not promise to beat buying everything on day one: in a steadily rising market, the lump sum wins.

What DCA buys you is freedom from timing. Jupiter’s DCA (previously called Recurring in its web app) deposits the full amount in a vault, executes the first buy at once, then the rest at the interval you pick, such as every minute, hour, day or week, with a random offset of up to 30 seconds either way on each buy to reduce MEV exposure. The V2 minimum is 10 dollars per buy, and you can add a USD price range: a buy scheduled while the price sits outside it is skipped to the next interval.

On chains where each execution pays a network fee, the fee per buy decides whether DCA makes sense. At an illustrative 1 dollar per execution, a 20 dollar buy loses 5% and a 500 dollar buy loses 0.2%. Small amounts belong on a low fee chain. In the US, each buy also creates its own tax lot with its own cost basis, and when you pay with a stablecoin each buy is also a disposal of it, so keep the records (see cost basis).

TWAP: one large order, sliced

Price impact grows with your trade’s size relative to the pool, and arbitrageurs refill a pool after each trade. TWAP exploits both. Take the constant product pool from the fill guide, 100 ETH and 300,000 USDC, with fees ignored:

One order of 30,000 USDCTen slices of 3,000 USDC
ETH received9.0919.901
Average price3,3003,030
Difference0.81 ETH more, about 2,430 dollars at 3,000

The slices win by that much only if arbitrage pulls the price back to 3,000 between them. If the market trends up while you are slicing, later slices cost more. TWAP swaps price impact for timing risk, which is a good trade when the impact is large and the window is short. Modern pools are deeper than this one, so the numbers are illustrative; the shape is the lesson.

CoW Swap offers TWAP orders to Safe smart accounts. Each part settles onchain, so its documentation sets minimums in the thousands of dollars on Ethereum mainnet and a few dollars on Gnosis Chain, Arbitrum and Base (as of September 2026), and all parameters are final once signed, including a price protection limit: a part will not execute if the price has moved against you by more than the percentage you set. On Solana, a Jupiter DCA with a short interval does the same job.

Which tool for which job

You want toUseWatch for
Trade now, at modest sizeA market swap with a sensible slippage limitPrice impact and MEV
Trade only at a price you chooseA limit orderA touch is not a fill; pick an expiry
Build a position without timing itDCAPer execution fees and many tax lots
Move size without moving the poolTWAPThe market trending while you slice
Cap the downside on a positionA stop loss triggerNo promised fill in a fast market

Staying in control of open orders

An open order is a standing permission. Once signed, anyone can fill it on its terms until it expires or you cancel it. For a signed order that usually holds even if you move the tokens out of your wallet and back later. Three habits keep that under control:

  • Short expiries. Pick the shortest expiry that fits the idea, so stale orders clean themselves up.
  • One list. Vault deposits leave your wallet balance, and signed orders do not appear in it at all. Check each app’s open orders tab.
  • Tidy approvals. The settlement contract or Permit2 approval that lets orders fill stays in place after they do. Review it with the token approvals guide.
Signing an order is signing away tokens
An order signature can move your tokens without any transaction from you. A phishing site that asks you to sign an "order" selling your tokens for almost nothing has built a drainer anyone can fill. Read the sell and receive amounts on the signing screen every time, and learn the pattern in reading what you sign and phishing and drainers.

Common questions

Do onchain limit orders cost gas to place?

On signed order designs such as UniswapX, CoW Swap and 1inch, placing the order is a free signature once the token is approved; the filler pays the gas when it settles. On Jupiter you deposit into a vault, which is an ordinary Solana transaction with a small fee. Canceling onchain usually costs gas.

Why did my limit order not fill when the price hit my level?

Because a filler needs the market to trade through your price by enough to cover gas and a profit, the touch may have happened on a different venue or price feed, or the level lasted too briefly for a keeper to act. Small orders need the biggest overshoot. Setting the limit slightly beyond your level helps.

Is DCA better than buying all at once?

Neither is better in general. DCA always gives an average cost at or below the average of the prices on your buy dates and removes the stress of timing. A single purchase at the start does better in a market that rises steadily, and worse in one that falls first.

What is the difference between DCA and TWAP?

The purpose. DCA spreads buys over weeks or months to avoid timing the market. TWAP spreads one large order over minutes or hours to reduce its price impact. The mechanics can be identical, which is why a short interval DCA works as a TWAP.

Are my tokens safe while a limit order is open?

On signed order designs they stay in your wallet and can only leave in a fill that matches the terms you signed. On vault designs they sit in a program owned account until the order fills or you withdraw. The real risks are signing a malicious order on a phishing site and forgetting orders that are still live.

Kept on this device only. Nothing is sent anywhere.

Where to go next

Next: Providing liquidity: your first pool

Guide 7 of 16 in the Intermediate level. Your place is kept on this device, so you can pick up exactly here next time.

Share this page

Was this page useful?