Skip to main content
Every trade on Polymarket follows a specific lifecycle. Orders are created offchain, matched by an operator, and settled onchain through smart contracts. This hybrid approach combines the speed of centralized matching with the security of blockchain settlement.

How Orders Work

All orders on Polymarket are limit orders. A limit order specifies the price you’re willing to pay (or accept) and the quantity you want to trade.
“Market orders” are simply limit orders with a price set to execute immediately against the best available resting orders.
Orders are EIP712-signed messages. When you place an order, you sign a structured message with your private key. This signature authorizes the Exchange contract to execute the trade on your behalf—without ever taking custody of your funds.

Order Types

TypeBehaviorUse Case
GTCGood Till Cancelled — rests on book until filled or cancelledStandard limit orders
GTDGood Till Date — auto-expires at specified timeTime-limited orders
FOKFill Or Kill — fill entirely or cancel immediatelyAll-or-nothing execution
FAKFill And Kill — fill what’s available, cancel the restPartial fills acceptable

Post-Only Orders

Post-only orders will only rest on the book. If a post-only order would match immediately (cross the spread), it’s rejected instead of executed. This guarantees you’re always the maker, never the taker.
1

Create and Sign

Your client creates an order object containing:
  • Token ID (which outcome you’re trading)
  • Side (buy or sell)
  • Price and size
  • Expiration time
  • Nonce (for replay protection)
You sign this order with your private key, creating an EIP712 signature.
2

Submit to CLOB

The signed order is submitted to the Central Limit Order Book (CLOB) operator. The operator validates:
  • Signature is valid
  • You have sufficient balance
  • You have set the required allowances
  • Price meets minimum tick size requirements
3

Match or Rest

If the order is marketable (your buy price ≥ lowest ask, or your sell price ≤ highest bid), it matches immediately against resting orders.If the order is not marketable, it rests on the book waiting for a counterparty. It remains open until:
  • Another order matches against it
  • You cancel it
  • It expires (GTD orders only)
4

Settlement

When orders match, the operator submits the trade to the blockchain. The Exchange contract:
  • Verifies both signatures
  • Transfers tokens from seller to buyer
  • Transfers USDC.e from buyer to seller
Settlement is atomic—either the entire trade succeeds or nothing happens.
5

Confirmation

The trade achieves finality on Polygon. Your token balances update and the trade appears in your history.

Order Statuses

When you place an order, it receives one of these statuses:
StatusDescription
liveOrder is resting on the book
matchedOrder matched immediately
delayedMarketable order subject to a 3-second matching delay (sports markets)
unmatchedMarketable order placed on the book after the delay expired without a match

Trade Statuses

After matching, trades progress through these statuses:
StatusTerminalDescription
MATCHEDNoTrade matched, sent to executor for onchain submission
MINEDNoTransaction mined into the blockchain
CONFIRMEDYesTrade achieved finality, successful
RETRYINGNoTransaction failed, being retried
FAILEDYesTrade failed permanently

Maker vs Taker

RoleDescriptionWhen
MakerAdds liquidity to the bookYour order rests and is later matched
TakerRemoves liquidity from the bookYour order matches immediately against resting orders
Price improvement always benefits the taker. If you place a buy order at $0.55 and it matches against a resting sell at $0.52, you pay $0.52.

Cancellation

You can cancel orders at any time before they’re matched:
  • Via API — Cancel through the CLOB API (instant)
  • Onchain — Cancel directly on the Exchange contract (fallback if API is unavailable)
Partial fills cannot be cancelled—only the unfilled portion of an order can be cancelled.

Requirements

Before placing orders, ensure:
RequirementDescription
BalanceSufficient USDC.e (for buys) or tokens (for sells)
AllowanceApprove the Exchange contract to spend your assets
API CredentialsValid API key for authenticated endpoints
Order size is limited by your available balance minus any amounts reserved by existing open orders.maxOrderSize=balance(openOrderSizefilledAmount)\text{maxOrderSize} = \text{balance} - \sum(\text{openOrderSize} - \text{filledAmount})

Next Steps