Post-only, reduce-only, IOC, and FOK are execution constraints and time-in-force rules that control how your orders interact with the order book. Post-only forces maker-only placement. Reduce-only prevents accidental position increases. IOC fills what is available immediately and cancels the rest. FOK demands full immediate execution or cancels entirely. These are not standalone order types but modifiers you attach to limit or market orders to manage fees, position risk, and fill behavior on centralized exchanges.
What Do These Order Flags Actually Do?
These four modifiers answer questions that basic order types leave open. A limit order specifies price but says nothing about whether you accept taker fills. A market order guarantees speed but cannot prevent position flips. Execution constraints (post-only, reduce-only) and time-in-force rules (IOC, FOK) fill those gaps by restricting which outcomes the exchange permits.
Quick reference:
Flag | Type | What It Controls | Outcome If Violated |
|---|---|---|---|
Post-only | Execution constraint | Must rest as maker | Order cancelled |
Reduce-only | Execution constraint | Cannot increase position | Order rejected |
IOC | Time-in-force | Fill now, partial OK | Unfilled portion cancelled |
FOK | Time-in-force | Fill all now or nothing | Entire order cancelled |
The mental model: your base order (limit or market) determines price intent. The flag determines what happens when reality conflicts with that intent.
Post-Only: Guaranteed Maker Status or Cancellation
A post-only order can only add liquidity to the order book. If your price would match existing orders immediately, the exchange cancels your order before any fill occurs. The entire point is fee control: you either fill as a maker or you do not fill at all.
Why this matters for fees: Most exchanges charge lower fees for makers than takers. On BloFin, the maker-taker spread is meaningful enough that over hundreds of trades, forcing maker status materially reduces cumulative costs. Some venues like MEXC offer zero maker fees on certain tiers, making post-only effectively free execution when your order fills.
How crossing the spread triggers cancellation:
You want to buy BTC. The current best ask is $65,000. You place a post-only buy limit at $65,050. Because your bid exceeds the best ask, your order would match immediately as a taker. The exchange rejects it. To post successfully, your buy limit must sit below $65,000.
Rules for prices that post:
Buy limit: set below the current best ask
Sell limit: set above the current best bid
Fast markets shift the book between submission and processing, so build a buffer of 0.1-0.3% below/above the spread edge
If you need immediate execution, post-only is the wrong tool
Common cancellation messages: "Would execute immediately," "post-only rejected," "order would cross the book." All mean the same thing: your price was too aggressive to rest as a maker.
Partial fills after posting: Once your order rests on the book, incoming taker orders can fill it partially or fully over time. The post-only constraint applies only at submission. After posting, normal fill mechanics apply.
I use post-only on every non-urgent entry. The worst outcome is a cancellation that costs nothing. The best outcome is saving taker fees on every fill across a session.
Reduce-Only: Position Safety on Perpetuals
A reduce-only order can only decrease or close your existing position. If executing it would increase net exposure or flip your direction, the exchange rejects it. This is a safety mechanism for perpetual futures where a single misclick can flip a long into a short.
We commonly see active traders on our platform use post-only mode as their default for limit entries, switching to IOC only when they need immediate partial fills on time-sensitive exits.
Scenario: Closing a long
You hold 0.5 BTC long. You place a reduce-only sell for 0.5 BTC. The order executes and closes your position. If you accidentally enter 0.8 BTC as the sell size, the exchange rejects the order because selling 0.8 when you only hold 0.5 would create a 0.3 BTC short position, increasing your exposure rather than reducing it.
Scenario: Closing a short
You are short 3 ETH. A reduce-only buy for 3 ETH closes you flat. A reduce-only buy for 4 ETH gets rejected because it would flip you 1 ETH long.
Why reduce-only orders get rejected:
Wrong side: placing a buy when you are already long (adds exposure)
Position already closed: another order or liquidation closed you before this order reached the engine
Oversized: order exceeds current position and the venue does not auto-trim
Market shift: position changed between order placement and execution
Reduce-only with market orders: Unlike post-only, reduce-only works with market orders. "Close this position immediately at market price" is a valid use case. Combining reduce-only with a market sell on a long position gives you fastest possible exit with no risk of accidental reversal.
Post-only + reduce-only combination: Some exchanges allow both flags simultaneously. This creates a maker-only exit that also cannot flip your position. You are long 1 BTC and want to take profit at $70,000 as a maker. A post-only reduce-only sell limit at $70,000 ensures maker fees and prevents accidental shorts. Verify support on your specific venue.
IOC: Fill What You Can, Cancel the Rest
Immediate-or-cancel tells the exchange: execute whatever quantity is available right now at my price or better, then cancel any unfilled remainder. Partial fills are acceptable. The order never rests on the book.
How IOC differs from a standard limit:
A GTC limit order that does not fill immediately sits on the book until filled or cancelled. An IOC limit at the same price fills whatever is available at that moment and disappears. You get liquidity without leaving resting exposure that might fill later at an unwanted time.
Worked example:
You submit an IOC buy limit for 2 BTC at $64,000. The book has 1.2 BTC available at or below $64,000. Result: 1.2 BTC fills, 0.8 BTC is cancelled. No order remains on the book. You received partial execution without any lingering open order.
IOC vs market order in thin liquidity:
A market order has no price ceiling and sweeps the entire book regardless of cost. An IOC limit order sets a ceiling: you fill up to your limit price and cancel the rest. In thin books where depth drops off sharply, IOC with a limit protects you from catastrophic slippage while still capturing available liquidity instantly.
When IOC makes sense:
You want immediate execution but with price protection
You are adjusting a position quickly during volatility
Partial fills are useful (you can submit another order for the remainder later)
You do not want stale orders sitting on the book overnight
FOK: All or Nothing, Immediately
Fill-or-kill demands that the entire order executes immediately at your specified price or better. If the book cannot fill 100% of your size right now, the entire order is cancelled. Zero partial execution.
Worked example:
You submit a FOK buy limit for 5 ETH at $3,100. The book has 3.2 ETH at $3,100 or below. Because only 3.2 of your 5 ETH can fill, the entire order cancels. Nothing executes. Compare with IOC: you would have received the 3.2 ETH and cancelled the remaining 1.8.
Why FOK exists:
Hedging exact quantities: you need precisely 10,000 USDT of BTC to match a derivative position. A partial fill creates a mismatch.
Arbitrage execution: the opportunity only exists if you can fill the full size. Partial execution leaves you with unhedged exposure.
Batch operations: accounting or rebalancing requires exact amounts.
FOK failure rate: In practice, FOK orders fail frequently on all but the most liquid pairs. The requirement for full immediate fill means any order larger than the top-of-book depth will cancel. Use FOK only when partial fills create operational problems, not as a default.
FOK vs IOC decision:
Situation | Use |
|---|---|
Partial fill is useful | IOC |
Partial fill creates problems | FOK |
You can resubmit for remainder | IOC |
Opportunity vanishes if not fully filled | FOK |
Compatibility: What Combines With What
Not every flag works with every order type. The logic is straightforward: if a combination is self-contradictory, the exchange rejects it.
Post-only + market order: Impossible. Market orders take liquidity by definition. Post-only requires adding liquidity. These are mutually exclusive.
Reduce-only + market order: Valid. A market order that closes a position can be reduce-only. You want speed and safety simultaneously.
Post-only + IOC/FOK: Generally not combined. Post-only prevents immediate execution; IOC and FOK require it. Some venues technically allow post-only with IOC (if the order can post, it posts; if not, it cancels like IOC), but the practical use case is narrow.
Reduce-only + IOC/FOK: Valid on many venues. "Close my position immediately, partial OK" (reduce-only + IOC) or "close fully or not at all" (reduce-only + FOK) are coherent instructions.
Reduce-only + post-only: Valid where supported. Maker-only exit with position safety. Best combination for patient profit-taking on perpetuals.
Combination | Valid? | Use Case |
|---|---|---|
Post-only + limit | Yes | Fee-optimized entries |
Reduce-only + market | Yes | Fast safe exits |
Reduce-only + post-only limit | Yes (venue-dependent) | Maker exits on perps |
Post-only + market | No | Contradictory |
Post-only + FOK | Rarely | Edge case |
Reduce-only + IOC limit | Yes | Quick partial close |
Decision Framework: Which Flag When
Start here: What is your priority?
Minimizing fees on entry? Post-only limit. Accept that the order may cancel if your price is too aggressive.
Closing a perps position without risk of reversal? Reduce-only. Add post-only if you want maker treatment and are not in a rush.
Immediate execution with price ceiling? IOC limit. You get what is available now, remainder disappears.
Full size or nothing? FOK. Accept high cancellation rate on anything but the most liquid pairs.
Emergency exit, speed above all? Market order with reduce-only. No post-only, no IOC, just get out.
Beginner defaults:
Every planned entry on a liquid pair: post-only limit (saves fees on every fill)
Every perps exit: reduce-only (prevents the most common perpetuals mistake)
IOC: use when you need partial liquidity now and will handle remainder separately
FOK: use only when partial fills create downstream problems
I default to post-only on entries and reduce-only on every perpetuals exit. The combination of both on limit exits has saved me from accidental shorts more than once.
CEX vs AMM: Why These Flags Do Not Exist on DEXs
These execution constraints exist because centralized exchanges use order books where buy and sell orders queue at discrete price levels. Maker, taker, posting, crossing the spread: all concepts rooted in order book architecture.
Automated market makers (AMMs) on decentralized exchanges like Uniswap use liquidity pools and algorithmic pricing. There is no book to post to, no spread to cross, no queue priority. You swap against a pool at the algorithmically determined price. Concepts like post-only are meaningless in this context.
If you trade on both CEXs and DEXs, understand that execution mechanics differ at the infrastructure level. The flags in this guide apply exclusively to order-book venues.
Troubleshooting Common Rejections
Post-only cancelled instantly:
Your buy limit was at or above the best ask
Your sell limit was at or below the best bid
Fix: widen your distance from the spread edge by 0.1-0.3%
Reduce-only rejected:
Confirm position direction matches order side (sell to close long, buy to close short)
Check current position size has not changed since you placed the order
Verify order size does not exceed remaining position
IOC fills zero:
No liquidity at your limit price at the moment of submission
Fix: widen your limit slightly or switch to market if speed is critical
FOK cancels repeatedly:
Insufficient depth for full size at your price
Fix: reduce order size, widen limit, or switch to IOC if partial fills are acceptable
Frequently Asked Questions
Are post-only and reduce-only separate order types?
No. They are execution constraints that modify how an underlying limit or market order can fill. Post-only attaches to limit orders and prevents taker execution. Reduce-only attaches to either order type and prevents position increases. The underlying order type (limit or market) still determines price behavior. Time-in-force rules like IOC and FOK similarly modify duration and fill requirements without replacing the base order. Exchanges display them as checkboxes or dropdowns alongside your order entry, not as independent order categories.
Why does my post-only order keep cancelling even though my price looks safe?
The order book can shift between the moment you see prices and the moment your order reaches the matching engine. On volatile pairs, even 200-500ms of latency can move the best ask below your buy limit. The fix is to set your limit further from the spread edge. A buffer of 0.1-0.3% below the best ask (for buys) or above the best bid (for sells) accounts for normal microstructure movement. If your order still cancels, the market is moving against you faster than you can post, and you should wait for conditions to stabilize.
Can I use reduce-only on spot markets?
Behavior varies by venue. On perpetual futures, position size is explicit and reduce-only has clear meaning. On spot, you either hold an asset or you do not, so the concept is less defined. Some exchanges implement spot reduce-only as "cannot sell more than your balance," which prevents overselling but functions differently from the perpetuals version. Check your specific exchange documentation rather than assuming universal behavior.
When would I choose FOK over IOC?
Choose FOK when partial execution creates an operational problem. Examples include hedging a derivative with an exact spot quantity where a mismatch leaves you exposed, executing an arbitrage where the profit only exists at full size, or rebalancing a portfolio where fractional fills complicate accounting. For most trading situations where partial fills are simply suboptimal but not harmful, IOC is the better choice because it maximizes the liquidity you capture while still preventing stale resting orders.
Should beginners use these flags from day one?
Post-only and reduce-only are beginner-friendly safety tools with no downside beyond occasional order rejections. Post-only saves fees on every successful fill. Reduce-only prevents the most common perpetuals mistake (accidental position flip). Start with both immediately. IOC and FOK require understanding liquidity and book depth to use effectively and have higher failure rates on thin pairs. Add them once you are comfortable reading order book depth and can assess whether your size matches available liquidity.
Key Takeaways
Post-only guarantees maker treatment or cancellation. Use it on every non-urgent entry to save fees across hundreds of trades.
Reduce-only prevents accidental position increases on perpetuals. Enable it on every exit order without exception.
IOC fills available liquidity immediately and cancels the rest. Use it when you need speed with a price ceiling and partial fills are acceptable.
FOK demands full immediate fill or cancels entirely. Reserve it for situations where partial execution creates downstream problems.
These are not order types but modifiers. They attach to your limit or market order and restrict which outcomes the exchange permits.
Post-only cannot combine with market orders. Reduce-only can combine with anything. IOC and FOK replace the default GTC time-in-force.
Action this week: On your next entry, enable post-only and compare your fill fee against a standard limit. On your next perps exit, enable reduce-only and confirm the order rejects if you accidentally overshoot your position size.
---
Researched and written by the Blofin Academy editorial team with AI-assisted drafting. Primary sources include BloFin exchange order-type documentation (execution constraints and time-in-force specifications); Cube Exchange educational guides on post-only and IOC/FOK mechanics (https://www.cube.exchange/what-is/post-only-order); Bitget futures trading documentation on GTC, FOK, and IOC order handling (https://www.bitget.com/support/articles/12560603818004); Gate.io IOC order analysis covering execution logic and risk management (https://www.gate.com/crypto-wiki/article/ioc-or-cancel-order-full-analysis-fast-execution-and-risk-management). All facts independently verified against cited documentation current as of April 2026.
This article is for informational purposes only and does not constitute financial advice. Cryptocurrency trading involves substantial risk of loss. Past performance does not guarantee future results. Always conduct your own research and consider your financial situation before trading. BloFin does not guarantee the accuracy of third-party data referenced herein.
