Trading

DEX Limit Orders (CoW + Velora)

8 min read

What it is

Place price-targeted orders on-chain via solver-network protocols — CoW Protocol and Velora. Sign the order ONCE with EIP-712, the order sits in the protocol's orderbook, and solvers fill it automatically when your price hits. Fills are GAS-FREE for you (solvers absorb gas). MEV-protected by design. Multiple expiry tiers from 24 hours to 90 days.

How to think about it

Two protocol options, both free and no KYC: CoW Protocol (Ethereum mainnet, Arbitrum, Base — solver auctions with surplus refunds) and Velora (adds Polygon, BSC, Optimism, Avalanche — formerly ParaSwap, EU-based intent fills). The dedicated DEX Limit Orders page lives at /dex-limit-orders — separate from the legacy Swap → Limit Order tab which uses different rails.

Step-by-step

  1. Connect wallet + pick protocol

    Click Connect Wallet (RainbowKit modal opens). Once connected, the form shows the protocol picker: CoW (default — works on mainnet/Arbitrum/Base) or Velora (mainnet + all other supported chains). If you want a Polygon limit order, you MUST pick Velora — CoW does not support Polygon.

  2. Pick network + tokens

    Network dropdown shows only chains your chosen protocol supports. Sell + Buy token dropdowns pull from the curated per-chain list. To trade a custom token, paste its contract address into the "Add custom token" input — the page resolves the symbol + decimals from on-chain ERC-20 metadata.

  3. Set sell amount + limit price

    Sell amount = how much of the sell-token to swap. Limit price = price of 1 sell-token in buy-token units (e.g., "sell 1 WETH @ limit 3500 USDC" means: fill when 1 WETH is worth ≥ 3500 USDC). The preview line shows the buy amount you receive at the limit price.

  4. Pick expiry

    Presets: 24 hours, 7 days, 30 days, 90 days. Order is automatically cancelled at expiry if not filled. Pick longer expiry for distant targets ("sell BTC at $200k") and shorter for tight targets you expect to hit soon.

  5. Approve + sign (3-step flow first time)

    Click Create. For first-time sell-token use: (1) Approval tx — gas needed, ~$0.50-3 on Base, $5-30 on Ethereum. (2) EIP-712 typed-data signature — NO gas, just a wallet popup. (3) Backend submits the signed order to the protocol orderbook. For repeat sell-tokens you already approved, only step 2 happens.

  6. Watch the order status

    Order list below shows status: Open (waiting for price), Partial fill (solver filled some, waiting for more), Filled (complete), Cancelled (you cancelled), Expired. Click any row to expand for protocol order ID, explorer link (CoW Explorer or Velora app), and the cancel button.

  7. Cancel or refresh

    Cancel button on each row submits a cancellation to the protocol. CoW cancellations are off-chain (free). Velora may require an on-chain tx depending on order state. Refresh polls the protocol for the latest status — useful if the orderbook shows a fill that did not update in our backend yet.

Tips & pitfalls

  • Fills are gas-free FOR YOU. The solver who fills your order pays the gas (and is compensated by the price improvement they extract). This is why CoW + Velora exist — Uniswap V2/V3 cannot do this natively.
  • First-time approval is gas-cost ONCE per (sell-token, protocol) pair. After that, any number of CoW limit orders on the same token are free to create.
  • Limit price direction can confuse: "sell 1 WETH @ 3500 USDC" means the order fills when 1 WETH ≥ 3500 USDC. For sells you want price HIGHER than current; for buys you flip — sell USDC @ limit 1/3000 = 0.000333 (means: fill when USDC ≥ 0.000333 WETH per USDC = WETH ≤ 3000 USDC).
  • USDT and a few other non-standard ERC-20s revert if approve() is called while existing allowance is non-zero. The page handles this for you — it does a reset-to-zero tx first, then the real approval. Costs you 2 signatures instead of 1 the first time.
  • CoW has surplus refunds — if the solver fills above your limit price, the extra goes to you, not the solver. Velora intent fills do not refund surplus the same way; if you want surplus, CoW is your default.
  • Expiry only matters if your limit price never hits. A 24-hour limit order that fills at hour 3 just becomes a normal fill — expiry was irrelevant.
  • For very large orders ($50k+) consider DEX Smart Trade or DEX Algo Orders instead — limit orders execute at the limit price but with one big chunk. Algo Orders slice into pieces, Smart Trade adds TP/SL automation.
  • The TradingView chart below the form follows your selected pair — useful for spot-checking that your limit price is realistic for current market conditions.