> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kuru.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Order Types

> Choose whether an order waits, trades immediately, or only provides liquidity.

An order's price sets what you are willing to pay or accept. Its execution settings determine what happens when it reaches the market and whether an unfilled amount can stay open.

## Limit orders

A limit order buys at your specified price or lower, or sells at your specified price or higher. It can execute immediately when suitable liquidity is available.

A good-till-canceled (GTC) order leaves its executable unfilled remainder on the book until it fills or is canceled.

**Example:** You want to buy 1 WETH for no more than 2,500 USDC each. If only 0.4 WETH is available within that limit, that amount can fill and the remaining 0.6 can rest at your limit price.

## Immediate-or-cancel

An immediate-or-cancel (IOC) order fills as much as it can immediately within its price limit. Any unfilled remainder is discarded.

Use it when you want available liquidity now and do not want an open order left behind.

## Fill-or-kill

A fill-or-kill (FOK) order requires its executable quantity to fill immediately. Otherwise, the batch reverts. A tiny remainder that cannot be settled after a real fill counts as complete under the engine's dust rules.

Use it when a partial executable fill would not meet your objective.

## Post-only

Post-only ensures that an order only adds resting liquidity. If it would immediately trade against the live book, Kuru skips that order instead of placing it. It does not convert it into a taker order.

**Example:** The lowest sell price is 2,500 USDC. A post-only buy at 2,500 would cross, so it is skipped. A buy below the available sell prices can rest, subject to the other order checks.

Post-only is used with GTC. A successful submission does not by itself prove that the order was placed.

## Trading against available liquidity

You can submit an immediately executable limit order with a price bound, or use an exact-input swap with a minimum acceptable output. Kuru's native order interface has no separate market-order enum.

An exact-input swap is a separate trading flow. Read [Self-Trade Prevention](/matching-engine/self-trade-prevention) before using it from an account that also has resting orders.

| Your objective | Setting to consider |
| - | - |
| Wait for your chosen price | GTC limit order |
| Take available liquidity without leaving an order | IOC |
| Require the executable quantity to fill now | FOK |
| Only add liquidity | Post-only GTC |

Market makers can also use [Reduce After Block](/matching-engine/reduce-after-block) to limit how much of a stale quote remains executable.

## Conditional orders — coming soon

> [!WARNING]
>
> Automated trigger functionality—including take-profit/stop-loss (TP/SL) and other condition-based orders—is **not implemented** as a live trading feature. It is work in progress. Do not rely on a stored trigger to monitor a condition or place an order.

Conditional execution is **not available as a supported automated trading flow yet**. Where enabled, Relay can [store a signed FOK trigger](/api/relay/reference/create-fok-swap-trigger), but this does not register a monitor or keeper. Do not assume a trigger will execute merely because its condition becomes true: execution needs an operating keeper, valid authorization, sufficient funds, and a market that can accept the action.

## TWAP orders — coming soon

> [!WARNING]
>
> Automated TWAP execution is **not implemented**. Creating a TWAP instruction only stores it; no service schedules or submits its slices. This functionality is work in progress.

Time-weighted average price (TWAP) execution is also **work in progress**. Where enabled, Relay can [store a signed TWAP instruction](/api/relay/reference/create-twap), but it does not run any slices. [Finalization](/api/relay/reference/finalize-twap) only records expiry/skipped/finished state. The deployed contracts do not, by themselves, provide a live scheduling or keeper service. Until automated execution launches, use currently supported order types for live trading.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.