Skip to content

Learn

Exchange APIs

What is a reduce-only order?

Figures on this page are as of 2026-09. Fees, limits and margin tiers change — check the venue's own docs.

A reduce-only order is an order the venue will only execute to the extent that it makes an existing position smaller; it can never open a new position, add to one, or carry a position through zero into the opposite direction.

It is a flag, not an order type. You attach it to a market, limit or stop order that you intend as an exit, and the venue then checks that intent against your actual position. This page is for anyone writing or reviewing exit logic on futures or perpetuals — by hand, in a bot, or through a model — and it covers how the check works, where it surprises people, and where it belongs in an automated setup.

Why this matters now

On a derivatives account, “sell” is ambiguous. If you are long 1.0, selling 1.0 closes the position. If you are long 0.6 because an entry partially filled, the same sell closes the 0.6 and opens a 0.4 short. If you are flat because your stop already fired, it opens a 1.0 short. The exchange does not know which of these you meant. It sees a valid sell.

Hand trading hides this because you look at the position before clicking. Automation does not look unless it was written to. And when a model drafts the exit, the side and quantity are parameters it produced from context — context that may describe the position you had. The failure modes in how LLM tool calls go wrong on orders — flipped side, stale size — all become new positions on an exit without this flag. With it, they become rejections.

How it actually works

  1. You mark the order reduce-only. The field name and format are venue-specific; check the order endpoint documentation.
  2. The venue compares it to your position. An order is acceptable if executing it would move the position towards zero. A sell against a long, or a buy against a short, qualifies. The same order against a flat account, or against a position on the other side, does not.
  3. An order that would increase exposure is refused. Hyperliquid documents the refusal string verbatim: Reduce only order would increase position.
  4. A resting reduce-only order can be re-evaluated as the position changes. If the position shrinks or disappears while the order waits, the order may no longer reduce anything. Hyperliquid documents an order status for exactly this — reduceOnlyCanceled, described as “Canceled reduced-only order that does not reduce position”.
  5. An order larger than the position is handled per venue. Some venues reject it; some execute only the part that brings the position to zero. Which one you get is a venue behaviour to look up, not assume.

The fourth step is the one people do not expect. A reduce-only order is not necessarily checked once and then left alone; its validity depends on a position that keeps moving underneath it.

Reduce-only vs the things it gets confused with

ThingWhat it controlsWhat it does not do
Reduce-onlyDirection of the effect on your positionChoose a trigger price, or guarantee a fill
Stop-lossWhen an exit firesStop the exit from opening a position
Plain sell / buyNothing about your positionAnything — it is just a trade
“Close position” optionCloses whatever is there, on venues that offer itLet you close a specific part

A stop-loss and reduce-only are orthogonal. The stop decides when; reduce-only decides what the order is allowed to do once it fires. A protective stop without reduce-only is a trigger for a trade of fixed size and side, and whether that trade closes or opens depends on the position when it fires. See order types explained for the trigger side.

The concept is defined relative to a position, which is why you meet it on futures and perpetuals. On a spot account, selling more than you hold is refused for insufficient balance — a different check that happens to protect you in a similar way.

Where it surprises people

Stacked exits. A take-profit and a stop-loss on the same 1.0 long, both for 1.0, together sum to twice the position. Once one fills, the other no longer reduces anything. With reduce-only, the survivor is refused or cancelled — on Hyperliquid, that is the reduceOnlyCanceled path. Without it, the survivor is a live order that opens a 1.0 short the next time price reaches it. This is the most common way a closed trade turns back into an open one.

Venue-required reduce-only. Some venues build the rule into their own take-profit and stop-loss orders. Hyperliquid lists a non-reduce-only TP/SL among the errors it returns on the payload alone, before matching.

Exits that shrink without warning. If your exit is sized from the plan rather than from the position, reduce-only turns an oversize exit into either a clipped fill or a rejection — both better than a reversal, but both surprises if your code expected the order to complete as sent.

It is not a size check. Reduce-only stops an order from overshooting zero. It does nothing to stop you closing all of a position you meant to close half of. That is a quantity error inside the allowed direction, and only your own sizing or an approval step catches it.

Where the boundary should sit

  • Every closing order carries reduce-only. Stops, take-profits, manual exits, emergency flattening. It costs nothing when the order is right and removes the worst outcome when it is wrong.
  • Set it in code, not in the prompt. If a model drafts exits, the tool or wrapper that submits a close should add the flag itself. A flag the model has to remember is a flag it will occasionally forget.
  • Size exits from the queried position. Fetch the position, then size the exit — see position reconciliation. Reduce-only is the backstop, not the sizing method.
  • Handle the refusal as information. A reduce-only rejection usually means your view of the position is wrong. Treat it as a trigger to reconcile, not as something to retry without the flag.
  • Expect cancelled siblings. When one exit fills, the others may be cancelled by the venue. Your state tracking should read that as normal, not as an error.

In an approval flow, one rule falls out of this: an order the plan labels as an exit and that is missing reduce-only should not reach the approve button at all.

FAQ

What does reduce-only mean on a futures order?

It means the order may only decrease your existing position. A reduce-only sell against a long closes some or all of the long; the same sell with no position, or against a short, is refused rather than opening or adding to a short. It turns side and size mistakes on exits into rejections instead of new positions.

Why was my reduce-only order cancelled without me cancelling it?

Most likely because the position it was meant to reduce shrank or closed while the order was resting, so it no longer reduced anything. A venue can re-check the condition as the position changes; Hyperliquid, for example, documents a reduceOnlyCanceled status for this case. It commonly happens to the remaining exit after a stop or take-profit fills.

Does reduce-only work if my order is bigger than my position?

It depends on the venue. Some reject the order outright; others execute only enough to bring the position to zero and drop the rest. In neither case does the excess open an opposite position, which is the point of the flag. Check your venue’s order endpoint documentation for which behaviour applies.

Should a stop-loss always be reduce-only?

For a stop that exists to close a position, yes. Without the flag, a stop is a fixed-size trade that fires whenever price reaches it, whether or not the position is still there — so a stop left behind after a manual close can open a fresh position in the opposite direction.