- Home
- Troubleshooting
- Why was my Hyperliquid order rejected?
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 see | What it means | The fix |
|---|---|---|
| Price must be divisible by tick size | Your price is between two valid increments | Round to a valid tick |
| Order must have minimum value of $10 | Perp notional below the floor | Increase the size |
Order must have minimum value of 10 {quote_token} | Spot order below the floor in the quote token | Increase the size |
| Insufficient margin to place order | Not enough free collateral | Free margin, or reduce size |
| Reduce only order would increase position | Wrong side, or no position left to reduce | Check the side and the position |
| Post only order would have immediately matched | An ALO order that would cross | Move to the passive side |
| Order could not immediately match | An IOC order found nothing to fill against | Use a resting order instead |
| Invalid TP/SL price | Trigger on the wrong side of the market | Stop below for a long, above for a short |
| No liquidity available for market order | The book cannot fill it | Reduce size, or use a limit |
| Order price too far from oracle | Outside the allowed band around the oracle | Check for a mistyped decimal |
| Would exceed margin tier limit at current leverage | Position too large for this leverage | Lower 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
- Hyperliquid docs: Error responseshyperliquid.gitbook.io
- Hyperliquid docs: Order typeshyperliquid.gitbook.io
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.