Why an order gets rejected instead of filled

Why an order gets rejected instead of filled
Short answer

A rejection means your order was never accepted into the order book at all, so it never had a chance to fill. Some rule between your platform and the matching engine tested the order before it went live and found it inadmissible: wrong size, a price too far from the market, not enough free margin, or an instrument that is not accepting orders right now. Rejection is a pre-trade check failing, not a trade failing.

A rejected order is one that never reached the order book. Something between your click and the matching engine tested the order against a rule, the order failed that rule, and it was handed back to you unfilled instead of being allowed to compete for a fill.

That distinction matters more than it sounds. A rejection is not a trade that went badly. It is a trade that was never admitted. Nothing was bought, nothing was sold, your position is unchanged, and no fee was charged. What you have lost is the intent: the entry you wanted is not on, or the stop you wanted is not in place.

The gate your order has to pass before it can compete

Every order passes through a chain of pre-trade checks. Some live on your broker’s risk layer, some live at the venue, and the order is tested against all of them in sequence before it is allowed to rest in the book.

The checks exist because the book is a shared resource with real consequences. A venue that accepted any order at any size and any price would fill nonsense trades at nonsense prices, and then have to decide whether to break them. A broker that accepted any order would let clients open positions their balance cannot support, and would end up carrying the loss itself. Rejection is the cheap version of that problem: say no in a millisecond, before anything irreversible happens.

Two properties of this chain explain most confusing rejections.

First, the checks are sequential, and the order stops at the first one it fails. You only ever learn about one problem at a time. Fix the size and you may immediately discover a margin problem that was always there behind it.

Second, the checks are evaluated against state at the instant of submission, not against anything stored with the order. The same order object, resubmitted, is a new order tested against new conditions. This is why “it worked two minutes ago” is normal rather than mysterious.

The four families, and what each one is guarding

Almost every rejection you will meet belongs to one of four groups. Knowing what each one protects tells you what to change.

FamilyWhat it checksWhat it is protectingTypical shape of the message
SizeQuantity against a minimum, a maximum, and a step incrementThe venue from dust orders and from single orders large enough to distort the bookInvalid quantity, below minimum, size not a multiple
Price bandYour limit price against a window around the current marketEveryone from fat-finger prices matching against thin liquidityPrice out of range, limit too far from market
MarginRequired margin for the new position against your free collateralYour broker from carrying a position your balance cannot supportInsufficient margin, insufficient funds, reduce-only
Instrument stateWhether that symbol is accepting that order type right nowOrderly markets during halts, auctions, settlement and expiry windowsMarket closed, trading halted, instrument not tradable

Size rules are the most mechanical. An instrument has a tick size for price and a lot or step size for quantity, and your quantity has to be an exact multiple of the step. This is why a quantity that looks fine to a human fails: it is not too big or too small, it is simply not on the grid.

Price bands are the family most people never think about until a limit order bounces. A venue will often refuse limit prices beyond some distance from the last traded or reference price. The band is usually wider in calm conditions and tighter when the venue wants to protect a thin book. A limit far above or below the market, placed as a resting bid you hope the market comes to one day, is exactly the shape of order a band rejects.

Margin rejections are about what the position would require, not what you currently hold. A position that reduces your exposure can be accepted at the same moment that one increasing it is refused, which is why reduce-only variants exist at all.

Instrument state is the family that has nothing to do with your order. The symbol is simply not taking orders of that kind at that moment. The same order will be accepted when the state changes, with no edit at all.

Working out which one you hit, with numbers

Suppose, and these figures are invented for the example, that an instrument has a step size of 0.01 units, a minimum order of 0.05 units, and a maximum of 50 units. Say your account shows 400 units of currency in free collateral, and the venue requires 10% margin on this instrument, so your collateral supports a notional of 4,000. Imagine the instrument trades at 200, and the venue’s price band is 5% either side, so limit prices are admissible between 190 and 210.

You submit a buy limit for 0.025 units at 185.

That order fails twice over, but you will only be told once. The quantity 0.025 is below the invented 0.05 minimum, so the size check fails first and the order is handed back. You fix the quantity to 0.05 and resubmit. Now the size check passes and the price check runs: 185 sits below the invented lower bound of 190, so the order is rejected again, this time with a different reason. You raise the limit to 195 and the order is accepted.

Now suppose instead you had submitted 25 units at 195. Size is on the grid and within the cap. Price is inside the band. But 25 units at 195 is a notional of 4,875, and at the invented 10% requirement that needs 487.50 of margin against 400 available. Rejected on margin, with the size and price perfectly legal. Dividing the admissible notional of 4,000 by the price of 195 gives roughly 20.5 units, so about 20 units is the largest order that passes all three. The position size calculator does this arithmetic against your own inputs, and the liquidation price calculator shows how little headroom is left once you sit near that ceiling.

The diagnostic method falls out of the arithmetic: change one variable at a time. Halve the quantity. If the order is accepted, the binding constraint scaled with notional, which means margin or a maximum size cap. If it is still rejected identically, the constraint does not care about size, so look at the price or the instrument state. Move the limit price closer to the market. If that fixes it, you were outside the band.

The mistake that turns a rejection into a loss

The common error is treating a rejection as noise and resubmitting the same order until something changes. That wastes nothing on an entry. On a protective order it is how people end up unhedged without knowing it.

Here is the sequence that does the damage. A position is open. The market moves against it. The trader sends a stop or a closing order. It is rejected, often on margin, because unrealised loss has already eaten the free collateral, or on instrument state, because the venue has halted the symbol in exactly the conditions that made the stop urgent. The platform shows a brief message that is easy to miss. The trader assumes the stop is in place and stops watching.

The protection against this is procedural, not clever. After submitting any risk-reducing order, confirm it appears in the list of working orders. A rejection means nothing is working. Treat the absence of an order in that list as the only evidence that matters, and treat the confirmation toast as decoration.

The second mistake is reading every rejection as a sign of a broken platform. Some rejections are telling you something true about your position: that it is already larger than your collateral comfortably supports, or that the price you asked for is far enough from the market that the venue considers it a mistake. A margin rejection on a new entry is information about sizing. An order that is rejected for size every time is information about an instrument’s grid, which is fixed and knowable. Rejections cluster by cause, and the pattern across a week tells you more than any single message does. For the related question of why an accepted order can still fill at a price you did not expect, see what is slippage, and for how order type changes which checks apply, market order vs limit order and what is a stop-limit order.

Education only, not financial advice, and trading carries a risk of loss.

Key facts

  • A rejection happens before the order reaches the order book, so no part of it is filled and no position changes.
  • Rejection checks are run in sequence, and the order stops at the first rule it fails.
  • Most rejections fall into four families: size, price band, margin, and instrument state.
  • A rejection is a hard no at that moment, while a cancellation can happen after an order has already been live and partly filled.
  • The same order can be rejected at one moment and accepted seconds later if the market or your account state changes.
  • Rejection codes are generated by the venue or the broker's risk layer, not by the trader's software, so retrying without changing anything usually reproduces the same result.

Frequently asked

Is a rejected order the same as a failed or cancelled order?

No. A rejected order never entered the book, so it never existed as a live resting order. A cancelled order was accepted, sat in the book, and was then removed, either by you or by the venue. The practical difference is that a cancellation can leave you with a partial fill, while a rejection cannot leave you with anything.

Why did the same order work a minute ago and get rejected now?

Because the checks are evaluated against conditions at the instant of submission. Price bands move with the market, free margin falls when another position moves against you, and an instrument can enter an auction or halt state without warning. The order text did not change, but the state it was tested against did.

Can a rejection cost me money?

Not directly, since nothing was traded. The cost is indirect: the position you intended to open did not open, or the stop you intended to place is not there. If you submitted a protective order and it was rejected, you are unhedged until you notice, which is why rejections on risk-reducing orders deserve more attention than rejections on entries.

How do I tell a margin rejection from a size rejection?

Change one variable. Halve the quantity and resubmit. If a half-size order is accepted, the constraint scaled with notional, which points to margin or to a maximum size cap. If the half-size order is also rejected with the same message, the problem is more likely a step or minimum rule, or the instrument itself is not accepting orders.

Risk warning: trading is high risk and most retail accounts lose money. Education only, not financial advice.

Run the numbers