Hyperliquid Academy Independent · Unofficial

Why was my Hyperliquid order rejected?

Verified against Hyperliquid docs: Error responses and Hyperliquid docs: Order types · by Hyperliquid Academy

Rejections are specific, and that is good news

Nothing here is intermittent or mysterious. The exchange returns a named reason for every rejected order, and each maps to one fix.

If you are trading through the interface you will see a message; through the API you get the error name as well. This page covers all of them.

The eleven reasons

What you seeWhat it meansThe fix
Price must be divisible by tick sizeYour price is between two valid incrementsRound to a valid tick
Order must have minimum value of $10Perp notional below the floorIncrease the size
Order must have minimum value of 10 {quote_token}Spot order below the floor in the quote tokenIncrease the size
Insufficient margin to place orderNot enough free collateralFree margin, or reduce size
Reduce only order would increase positionWrong side, or no position left to reduceCheck the side and the position
Post only order would have immediately matchedAn ALO order that would crossMove to the passive side
Order could not immediately matchAn IOC order found nothing to fill againstUse a resting order instead
Invalid TP/SL priceTrigger on the wrong side of the marketStop below for a long, above for a short
No liquidity available for market orderThe book cannot fill itReduce size, or use a limit
Order price too far from oracleOutside the allowed band around the oracleCheck for a mistyped decimal
Would exceed margin tier limit at current leveragePosition too large for this leverageLower leverage or size

The five that account for most of them

Tick size

Every market has a minimum price increment, and it differs per market. A price between two increments is rejected rather than rounded.

Through the app this rarely happens, because the ticket rounds for you. Through the API it happens constantly, because your code does not. The increment comes from the market metadata; read it rather than assuming a number of decimals.

The minimum order value

$10.00 of notional on perpetuals, or ten units of the quote token on spot.

It is a notional threshold, so the quantity it corresponds to moves with the price. A size that worked last week can be under the floor today after a fall. What the minimums actually constrain.

Insufficient margin

The obvious cause is an empty account. The two non-obvious ones catch more people.

Resting orders reserve margin. Open orders that have not filled can hold collateral, so an account that looks free is not. Cancel what you are not using.

Your account mode decides which balance counts. In standard mode the perps balance is what margins a perpetual, and USDC sitting in spot does not. Which mode you are in changes the answer.

Reduce-only would increase the position

Reduce-only orders can only shrink. Rejection means yours would not have.

Two causes: the side is wrong — a reduce-only buy against a long is an increase — or the position is already closed, so any order now opens a new one.

This rejection is the flag doing its job. Without it, that same order would have opened a position in the opposite direction, which is the accident reduce-only exists to prevent.

Post-only would have matched

The ALO flag means “reject rather than take”. If your price crosses the spread, that is precisely the case it refuses.

The error reports the best bid and offer at the time, which tells you exactly how far to move. If you actually wanted the fill, drop the flag and accept the taker fee.

The subtler three

Order price too far from oracle. There is a band around the oracle price and your limit sits outside it. It is a fat-finger guard, and when it fires the cause is usually a decimal place rather than a view.

No liquidity available for market order. The book cannot fill your size at any price it is willing to accept. On a thin market this is the exchange refusing to give you a terrible fill. Reduce the size, or use a TWAP and let the book refill between pieces.

Would exceed the margin tier limit at current leverage. Maximum leverage steps down as a position grows, so the cap that applied to your first slice does not apply to the whole. Lower the leverage or reduce the size — the tier table shows where the steps are.

Rejections that are not rejections

Two things get reported as failures and are not.

An IOC order that filled nothing. Immediate-or-cancel did exactly what it says. Nothing is wrong; there was nothing to match against.

A stop that has not triggered. A trigger order sitting in the TP/SL column is waiting, not failing. It sends an order when the price is reached, and until then it does nothing at all. How triggers behave.

If none of these fit

Check the obvious things in this order: the connection is live and your address is the one you think it is; you are on the market you meant; the account mode is what you assume. Connection problems present as a dead interface rather than an error, which is why they are easy to misread as a rejection.

Where to go next

Every order type and flag, which is the reference behind most of this page, and the rest of the troubleshooting section, organised by symptom.

Frequently asked questions

Why does it say my price must be divisible by tick size?

Each market has a minimum price increment and your price was between two of them. Round to a valid increment; the app usually does this for you, and a manually typed or API-submitted price does not.

What is the minimum order size?

Ten dollars of notional on perpetuals, or ten units of the quote token on spot. Below that the order is rejected outright rather than partially accepted.

Why is my reduce-only order rejected?

It would have increased the position rather than reduced it. Usually the side is wrong, or the position already closed and the order would now be opening a fresh one in the other direction.

Why did my post-only order fail?

It would have matched immediately against the book, which is exactly what post-only forbids. Move the price to the passive side of the spread. The error reports the best bid and offer at the time.

What does 'order price too far from oracle' mean?

Your limit price sits outside the band the exchange allows around the oracle price. It is a protection against fat-finger orders, and it fires most often on a thin market or a mistyped decimal.

Why can I not increase my position further?

Margin tiers. Maximum leverage steps down as a position grows, so a size that was fine at your current leverage stops being fine past a threshold. Lower the leverage or reduce the size.

Sources

We link the primary source for every number on this page. If a figure here disagrees with the Hyperliquid documentation, the documentation is right and we want to know.

Keep going