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

# Order Types

> Intention supports market, limit, stop, and take-profit orders with GTC/IOC/FOK time-in-force and post-only, reduce-only execution flags.

Intention offers a full set of professional order types. They fall into three families: basic orders (market and limit), conditional orders (stops and take-profits), and advanced algorithms (Scale and TWAP, covered on their own pages).

## Basic orders

### Market order

A market order fills immediately against the best available prices on the opposite side of the book.

Intention does not send a "pure" market order to matching. Every market order is first converted to a protective limit order bounded by the user's slippage tolerance, the contract's price band, and a safety price that prevents the account from reaching bankruptcy. This conversion is described in [Market-to-limit](/trading/market-to-limit).

### Limit order

A limit order specifies a price. It fills only at that price or better:

* A buy fills when the best ask is at or below the limit price.
* A sell fills when the best bid is at or above the limit price.

Unfilled limit orders rest on the book and earn price-time priority.

## Time in force

Every limit order carries one time-in-force flag:

<CardGroup cols={3}>
  <Card title="GTC">
    Good-til-cancelled. Rests on the book until filled or cancelled, up to a platform-wide maximum age.
  </Card>

  <Card title="IOC">
    Immediate-or-cancel. Fills whatever it can immediately, cancels the rest.
  </Card>

  <Card title="FOK">
    Fill-or-kill. Either fills completely and immediately, or is cancelled entirely.
  </Card>
</CardGroup>

## Execution flags

Basic orders can also carry two independent execution flags:

* **Post-only.** Guarantees the order enters the book as a maker. If the order would cross and fill immediately, it is rejected instead. Post-only orders skip the two-block non-matching queue — they are processed in the non-matching phase of the block (see [Transaction sequencing](/trading/tx-sequencing)).
* **Reduce-only.** Guarantees the order can only reduce an existing position. Reduce-only has its own dedicated page because the rules are subtle — see [Reduce-only](/trading/reduce-only).

Flags compose: you can submit a post-only reduce-only GTC limit, for example.

## Conditional orders

Conditional orders remain inactive until the market crosses a user-defined trigger price. When triggered, they submit either a market or limit order on the user's behalf.

### Stop-market and stop-loss

Triggers on adverse price movement to limit loss. On trigger, the system submits a market order (stop-market) or a limit order (stop-limit) in the configured direction.

### Take-profit (market / limit)

Mirror of a stop: triggers on favorable price movement to lock in profit. Submits market or limit on trigger.

<Tip>
  For an end-to-end workflow attached to a specific position, see [TP/SL](/trading/tp-sl), which covers position-level take-profit/stop-loss including OCO semantics.
</Tip>

### Trigger price source

Conditional orders can trigger on either the last traded price or the [mark price](/trading/mark-price). Mark price is safer for stops because it is harder to manipulate. Intention also enforces a `triggerProtect` rule per contract: if last price deviates from mark price by more than the configured threshold, last-price triggers fall back to mark price until the deviation recovers.

### Trigger timing

Conditional orders evaluate at each block boundary using the previous block's results. Last-price triggers use the block's low and high (not just the close) so gap-through scenarios still trigger. Mark-price triggers use the latest mark. Triggered orders enter matching immediately in the current block — they bypass the two-block wait that applies to new order placements.

## Advanced algorithms

Two algorithmic wrappers are built in:

* **[TWAP](/trading/twap)** — splits a large order into time-sliced children.
* **[Scale orders](/trading/scale-orders)** — lays multiple limits across a user-defined price ladder.

Both can be combined with reduce-only.
