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

# Placing Orders

> Placing a signed limit order, choosing YES or NO, buying or selling, and how a fill becomes a position.

An order is your instruction to trade a market. You pick an outcome (**YES** or
**NO**), whether you are **buying** or **selling** it, a price, and a size. Most
orders are buys: you **buy the outcome you believe in**. You sell only contracts
you already hold. This page covers how orders work in practice. For the
underlying model see [Core Concepts](/concepts/core-concepts).

## What you specify

Every order has:

| Field | Meaning |
| - | - |
| **Market** | The market (event) you are trading. |
| **Side** | **`yes`** or **`no`** — which outcome the order is for. Not "buy/sell". |
| **Direction** | **`buy`** (acquire the outcome) or **`sell`** (offer contracts of it you already hold). Defaults to `buy`. |
| **Order type** | **Limit**. Every order carries your signature, which commits to a price. |
| **Volume** | Number of contracts. Must match the market's size precision. |
| **Price** | Price per contract, `0.01`–`0.99`, in **whole cents** — e.g. `0.27`, not `0.275`. |

<Note>
  On the API these map to the order fields `market`, `side` (`"yes"`/`"no"`), `direction` (`"buy"`/`"sell"`), `ord_type` (`"limit"`), `volume`, and `price`. See the [API Overview](/api-reference/introduction) for the exact request shape.
</Note>

<Warning>
  **Price and size must match the market's precision — they are rejected, not rounded.**
  A limit price carries at most the market's price precision (whole cents on a
  standard market: `0.27` is valid, `0.275` is refused), and volume at most its size
  precision. An order finer than the market allows is rejected before it is placed, so
  round to the market's precision yourself rather than relying on the server to.
</Warning>

## Limit orders

A **limit order** sets the exact price you're willing to pay and rests in the order
book until someone trades against it (or you cancel it).

```
You place: BUY 100 YES, limit, price 0.60
→ If someone is selling YES at 0.60 or less, or buying NO at 0.40 or more,
  you fill immediately.
→ Otherwise your order rests in the book at 0.60 until it's matched or cancelled.
```

* **Pros:** exact price control, no slippage; a resting order can earn a
  [maker rebate](/concepts/maker-rebates) when it's the side that gets filled.
* **Cons:** it may not fill if the price never reaches your limit.

A `post_only` limit order is **rejected if it would immediately take liquidity** —
use it when you only want to rest in the book and never cross the spread.

## Market orders are signed limits

Every order you place is signed by your own key, and the signature commits to a
specific price — that is what lets the exchange match your order without ever
holding your funds. "Spend \$10 at whatever it costs" is not something a key can
sign, so a **Market** order in the app is a *marketable limit*:

1. You name a **max spend**. The app walks the order book and works out how many
   contracts that buys at the resting prices.
2. It signs a limit at the **worst price the sweep reaches, plus a small slippage
   bound**. That price is a ceiling, never a target: the exchange fills you at the
   book price or better, and anything left of your max spend is not taken.
3. It is sent **immediate-or-cancel**: whatever the book can't fill the moment
   your order arrives is refunded straight away, never left resting at the
   ceiling. A market order either fills now (all or part) or gives your money back.
4. The signature **expires after 120 seconds**, long enough to approve it with
   your passkey. An order is never matched within 30 seconds of its signature
   expiring — the trade has to settle on-chain first — so one that arrives later
   than that is refused rather than filled.

The confirm screen states the exact ceiling and quantity before you sign. A
market **sell** is the mirror image: it signs a floor, and fills at the book
price or higher.

If you would rather name the price yourself, a limit order at or through the best
resting price does the same job: a buy at `0.62` when the best ask is `0.60` fills
at `0.60`, not `0.62`.

## The combined order book

Calibri runs **one combined book** per market, priced in YES terms. There is no
separate NO book: a NO order at price `p` sits in the book at `1.00 − p`.

Every order is one of four kinds, and each kind sits on one side of the book:

| Bid side (wants YES) | Ask side (offers YES) |
| - | - |
| **Buy YES** at `p` | **Sell YES** at `p` |
| **Sell NO** at `1.00 − p` | **Buy NO** at `1.00 − p` |

### Buying YES is selling NO

The two orders in each column are the same trade. A YES and a NO contract
together always pay out exactly `1.00`, so holding YES is the same position as
being short NO:

```
Buy YES at 0.60   →  +0.40 if YES, −0.60 if NO
Sell NO at 0.40   →  +0.40 if YES, −0.60 if NO
```

That is why a resting **Buy YES at `0.60`** shows up for someone buying NO as
**NO on offer at `0.40`**. They can take it even though you hold no NO to hand
over — see how a fill works below.

### Who can fill your order

Your order fills against anything resting on the **other** side of the book at
your price or better:

| You place | Filled by |
| - | - |
| Buy YES | someone selling YES, or someone buying NO |
| Buy NO | someone selling NO, or someone buying YES |
| Sell YES | someone buying YES, or someone selling NO |
| Sell NO | someone buying NO, or someone selling YES |

Orders on the **same** side compete with yours instead. A resting Sell NO at
`0.40` is a second bid for YES at `0.60`; it cannot fill a Buy YES.

What a fill does depends on the two orders' directions:

| Orders matched | What happens |
| - | - |
| **Buy × buy** (Buy YES + Buy NO) | A new YES/NO pair is created. Each buyer gets their side, and both payments go into the market's escrow. |
| **Buy × sell** (same outcome) | Existing contracts move from the seller to the buyer for cash. |
| **Sell × sell** (Sell YES + Sell NO) | A YES/NO pair is destroyed, and the escrow pays both sellers. |

On a new market nobody holds contracts yet, so the only way to fill a buy is a
buy of the other outcome. When the app says **"No YES sellers or NO buyers
yet"**, the ask side is empty: nobody is selling YES and nobody is buying NO. A
limit order is how you go first — it rests on the board until one of them
arrives.

## Fees

You pay a single **taker fee** only when your order **takes** liquidity (a market
order, or a limit order that crosses the spread and fills immediately). Resting
orders that get filled are **makers** and pay no fee. The fee is charged **once,
at the moment of the fill — never again at settlement**. It follows a
price-dependent bell curve rather than a flat percentage; see
[Fees](/concepts/fees) for the exact formula and how the applicable rate is shown
for each market.

## How your order reaches the market

Every order is **EIP-712 signed** by your wallet — or by your passkey — and
relayed on-chain by Calibri. **The operator pays the gas**, so signing costs you
nothing.

Signing is what authorises the order against your Safe; nothing can be placed on
your behalf without it. See [Signed orders](/non-custodial/signed-orders) for the
exact struct and [Your wallet options](/non-custodial/wallets) for what does the
signing in each setup.

## From fill to position

Once an order fills:

* A **contract** is created between your side and the matched counterparty. Your
  **position** is the set of contract legs you hold (net YES, net NO, or flat).
* To close a position before resolution, **sell** it: a Sell order offers
  contracts you hold. It locks those contracts, not cash — a sell that takes
  liquidity pays its taker fee out of the sale proceeds — and only the
  quantity not already offered on another resting sell can be sold
  (`sellable_qty` on `/account/positions`). In the app, use **Sell** on the
  holding.
* Buying the opposite side does not close the first position — it opens a
  second, separately collateralised one, locking more money rather than
  releasing any. Sell the contracts you hold instead.
* Open (unfilled) limit orders can be **cancelled** while the market is open; the
  collateral they locked is released back to you.

At resolution, winning contracts pay **1.00 USDC** per share and losing contracts
pay **0**, with no settlement fee.

## Next steps

<CardGroup cols={2}>
  <Card title="Fees" href="/concepts/fees">
    How the taker fee is computed and shown per market.
  </Card>

  <Card title="How markets are resolved" href="/concepts/resolution-sources">
    What decides the market you are trading.
  </Card>

  <Card title="Terms of use" href="/terms-of-use">
    The rules you accept by trading.
  </Card>

  <Card title="Core concepts" href="/concepts/core-concepts">
    Contracts, positions, and the market lifecycle.
  </Card>

  <Card title="Signed orders" href="/non-custodial/signed-orders">
    Build and sign an EIP-712 order.
  </Card>

  <Card title="API Overview" href="/api-reference/introduction">
    The exact order request and response shapes.
  </Card>
</CardGroup>


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