Binance Time in Force: GTC, IOC and FOK Explained
Order type decides what price you are willing to accept. Time in force decides how long you are willing to wait. The two are separate fields on a Binance order, and the second one is the reason an order can come back EXPIRED with a partial fill rather than an error. This guide works through the three documented values and the states they produce.

Cover artwork: CoinSoso · AI-generated, not a photograph of a real venue, product or market capture.
Key takeaways
- Binance's Spot API documents exactly three time-in-force values: GTC, IOC and FOK.
- GTC leaves the remainder of the order on the book until it is cancelled or filled.
- IOC fills as much as it can immediately and expires the rest, which is why a partial fill and an EXPIRED remainder can arrive together.
- FOK either fills the whole quantity at once or expires with nothing filled.
- A LIMIT_MAKER order has no separate time in force that matters, because it is rejected rather than resting if it would cross.
Two fields, two different decisions
A limit order carries a price and a quantity. It also carries a third thing, usually typed last and thought about least: a time in force. That field answers a question the price does not — if the order does not fill right now, what should happen to the part that did not fill?
There are only three answers in Binance’s Spot API, and they are documented with unusual brevity. The whole definition is a table.
| Value | Name | Documented behaviour |
|---|---|---|
GTC |
Good Til Canceled | “An order will be on the book unless the order is canceled.” |
IOC |
Immediate Or Cancel | “An order will try to fill the order as much as it can before the order expires.” |
FOK |
Fill or Kill | “An order will expire if the full order cannot be filled upon execution.” |
The brevity is the point. Time in force does not change the price you offer or the quantity you request. It changes what happens to the remainder, and therefore which outcome you should expect when the order comes back.
GTC: the order that stays
Good Til Canceled is the value most orders carry, and it is the one whose implications are easiest to miss. The remainder of the order goes on the book and stays there. It is now working, it will show in open orders, and it consumes an open-order slot on the pair.
That has three practical consequences.
The order is a commitment of quantity, not of money at a price. A resting bid reserves the quote currency for as long as it lives. If you place three GTC bids at the same time on the same pair, the venue will reserve against all three. On a pair whose MAX_NUM_ORDERS filter read 200 on BTCUSDT on 2026-10-18, a dense ladder of resting orders spends that allowance quickly.
A resting order can be a maker order. If the order was on the book when it was matched rather than crossing on arrival, it added liquidity, and Binance prices that differently. The maker and taker explainer works through that split; the important part here is that GTC is what makes the maker outcome possible at all, because an order that never rests can never provide liquidity.
Cancellation is yours to perform. Nothing expires a GTC order except its own fill or your cancel request. That is also why an account can accumulate stale orders that look like position risk in a screenshot but are only unfilled intent.
IOC: fill what you can, forget the rest
Immediate Or Cancel does one thing: it attempts execution against the book as it stands at that instant, keeps whatever fills, and expires the remainder. It does not rest. An IOC order cannot become a maker order, because it is never on the book between trades.
The state this produces is the one that confuses people most, and Binance documents it explicitly. The EXPIRED order status is defined as covering “LIMIT FOK orders with no fill, LIMIT IOC or MARKET orders that partially fill”, or orders the exchange cancels during liquidation or maintenance.
Read that carefully: a partial fill under IOC does not leave the order PARTIALLY_FILLED on the book. The filled part is a trade, and the remainder is expired. The order is finished, and what you hold afterwards is a smaller position than you asked for.
IOC is the right tool when the quantity is optional and the price is not. If you want to buy “up to this much, but only at this price or better, and only right now”, IOC expresses that in one request. GTC would express it too, but it would also leave a resting order you then have to remember to cancel.
FOK: all or nothing
Fill Or Kill is the strictest of the three. Binance’s wording is that the order “will expire if the full order cannot be filled upon execution” — the whole quantity, at the moment of execution, or nothing at all.
This is a guarantee of completeness and nothing else. It does not guarantee a good price; it guarantees that if you get a fill, you get the whole size at a price inside your limit. It also does not guarantee that the market was not moved by your own order — a large FOK can sweep several levels and still fill completely, and the average price of that sweep is what you paid.
FOK with no fill produces EXPIRED, not REJECTED. That distinction is worth building into whatever reads your order history: a rejected order was not accepted by the engine at all, whereas an expired FOK was accepted, evaluated and expired on its own terms.
LIMIT_MAKER and the case where the field is moot
There is a fourth order type worth separating from the three time-in-force values, because it is easy to conflate them. LIMIT_MAKER is a limit order that is rejected if it would immediately match and trade as a taker — a post-only order.
Its guarantee is stronger than any time in force. A LIMIT_MAKER order that would cross is not filled, not partially filled and not expired; it is refused. That is why it is the type used when the maker rate is the entire point of the trade, and why an order that fails as LIMIT_MAKER should be repaired by moving the price rather than by changing the time in force.
The orderTypes array in exchangeInfo is the authoritative list of what a pair accepts. For BTCUSDT on 2026-10-18 it read: LIMIT, LIMIT_MAKER, MARKET, STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT. Note that LIMIT_MAKER is listed as its own type, not as a flag on LIMIT.
Choosing, concretely
The decision collapses to three questions, in this order.
- Is a partial fill acceptable? If not, the answer is FOK. If yes, continue.
- Is it acceptable to leave the remainder on the book? If not, the answer is IOC. If yes, continue.
- Is it acceptable to pay a taker fee? If not, the answer is
LIMIT_MAKERand you accept that the order may be refused. If yes, the answer is GTC.
The order of the questions matters because each one narrows the set. Most trading problems that look like execution problems are actually a mismatch between the answer the trader wanted and the value that was sent: an IOC sent when the intent was a patient bid, a GTC sent when the intent was “all of it or nothing”, a LIMIT_MAKER sent when the fact that it would cross was the actual signal.
Time in force also interacts with the exit structures covered in the order list guide: the legs of an OCO or OTO carry their own time in force, and STOP_LOSS_LIMIT requires one. For how size and price constraints reject an order before time in force is even consulted, see why an exchange rejects your order. The trading fee calculator prices the round trip once you know which side of the maker split you are on, and the Binance profile collects the venue-level facts.
Risk note. The definitions, status names and order-type requirements in this article are taken from Binance’s Spot API documentation as read on 2026-10-18, and the filter values are a snapshot of the BTCUSDT exchangeInfo response from the same day. Implementations and limits change. Time in force controls how an order ends, not whether it was a good order: a correctly typed FOK can complete a bad trade, and a correctly typed GTC can sit unexecuted through the entire move it was meant to catch. Nothing here is investment advice.
Sources
How this was researched. Written from primary documentation and the exchange or protocol's own published material, with sources listed at the end of the article.
Primary sources for the factual claims on this page. A date appears only where a human has actually read the source; where it is missing, the check is still outstanding.
- Binance Spot API — Time in force (timeInForce)(read 2026-10-18)
- Binance Spot API — Order status and order types(read 2026-10-18)
- Binance Spot API — exchangeInfo (BTCUSDT orderTypes and filters)(read 2026-10-18)
- Binance Spot API — New order (order type requirements)(read 2026-10-18)
Frequently asked questions
What is the default time in force if I leave it out?
Do not leave it out. The Spot API documents timeInForce as required for LIMIT and LIMIT_MAKER orders, and fill-in-the-blank defaults differ between client libraries, so a request that omits the field either fails validation or receives a value you did not choose. Send it explicitly, every time, even when you are sending GTC.
Why did my IOC order show a partial fill and then EXPIRED?
Because that is exactly what IOC means. Binance's enum documentation states that EXPIRED covers a LIMIT IOC order or a market order that partially filled. The filled part is a trade; the unfilled remainder was expired by the venue rather than cancelled by you, which is why the status is not CANCELED.
Is EXPIRED the same as CANCELED?
No, and the difference matters when you reconcile. CANCELED is documented as an order cancelled by the user. EXPIRED is documented as an order cancelled according to its own type's rules, or by the exchange during maintenance or liquidation. A script that treats both as 'finished successfully' will silently drop the distinction between a decision you made and one the venue made for you.
Does FOK protect me from slippage?
It protects you from a partial fill, not from a bad price. FOK with a limit price will not cross beyond that price, but if the whole quantity is not available at or better than it within the same instant, nothing fills at all. That is a guarantee about completeness, and it is silent about whether the price you set was a sensible one.
Can I use FOK or IOC on a market order?
Binance's order documentation attaches timeInForce to LIMIT and LIMIT_MAKER style orders. A MARKET order is executed immediately by definition, so there is nothing left to keep resting and no meaningful choice of expiry. The documented EXPIRED case for market orders is the partial fill, not an IOC setting.
Where to go next
Independent research. Each card shows the platform’s invite code, and its Create Account button is a referral link that may earn us a commission at no extra cost to you. Whether an account can be opened is decided by the platform at sign-up.
Binance

One of the largest global exchanges by traded volume, with a very broad product range.
20% Trading Fee Rebate
Use invite code con888 when signing up to enjoy trading fee benefits.
Download from the exchange's official download service. Verify the source and follow the on-screen installation instructions.
Do not install an APK from an unknown source, or one that has been modified or cannot be checked.
OKX

A large global exchange offering spot, derivatives and a self-custody wallet.
20% Trading Fee Rebate
Enter invite code con888 when signing up to check available trading fee benefits.
Download from the exchange's official download service. Verify the source and follow the on-screen installation instructions.
Do not install an APK from an unknown source, or one that has been modified or cannot be checked.