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

# Combos

# Combos

A combo joins outcomes from different markets into one position. This page shows how to
build a combo, get a quote for it, accept the quote and exit the combo later. Back to the
[guide index](index.md). Terms are explained in the [glossary](glossary.md#combos).

## In short

* A **combo** has 2 or more outcomes, called **legs**, from different markets. It pays \$1 a
  share only if every leg wins.
* A combo has no price on the screen. You ask Polymarket’s market makers for a **quote**.
  Then you have a few seconds to **Accept** it.
* You can get a quote in **Safe**. A quote costs nothing. **Accept** is the one step that
  trades, and it needs **Armed**.
* Combos are not available until the account’s Session Key has the combos scope. Until
  then, the **Combo** button is grey with the tooltip
  `Combos unavailable · Session Key lacks the combo scope`.

## The basics

### Buy a combo

1. Click **Combo** in the header of the **Live** board, the **Watchlist** or a market. Or
   press `L`.
2. Look at the prices. The **Buy** and **Sell** prices change to one leg button for each
   outcome. The button shows the best ask of that outcome.
3. Click an outcome to use it as a leg. The button fills with colour and shows a tick.
4. Click outcomes in other markets to add more legs. Click a filled button again to remove
   its leg.
5. Look at the slip on the right. It shows your legs and the stake.
6. Check the stake. It is the most that the combo can cost, fees included.
7. Click **Get quote**, or press `Q`.
8. Read the quote: **Price**, **Shares**, **Cost with fees** and the seconds left.
9. If the switch reads **Safe**, click **Armed**.
10. Click **Accept** before the time ends. With the slip in focus, you can also press
    `Ctrl ↵`.

WARNING: **Accept** trades at once. It spends up to **Cost with fees**.

When the combo fills, the slip shows a line such as `Filled · Buy 201.6 sh at 12.4¢ ·
$25.00`. The combo is then in **Portfolio**, on the **Combos** tab.

<img src="https://mintcdn.com/dimsum-labs/XietQvgM6uXNXdeN/guides/user/images/combo-slip.png?fit=max&auto=format&n=XietQvgM6uXNXdeN&q=85&s=d75d5c2f996176589cfe77236693d694" alt="Combo mode: the board’s prices became leg buttons, and the slip on the right holds a live quote. A ladder and the bottom dock are open too" width="1440" height="852" data-path="guides/user/images/combo-slip.png" />

To get your **Buy** and **Sell** prices back, click **Combo** or press `L` again. The ladder,
**Portfolio** and **Orders** work as usual while combo mode is on.

On a phone, **Combo** is the first item in the row of filters on the **Live** board. The
legs collect in a combo bar at the bottom of the screen. Tap the bar to open the slip.

### Decline a quote

1. Click **Decline**. Or, with the slip in focus, press `Esc`.
2. The slip shows `Declined`. The button reads **Get quote** again.

The app sends nothing to Polymarket. A quote that nobody accepts expires.

## More options

### Change the legs and the stake

| Do this | Result |
| - | - |
| Click a second outcome of a market that has a leg already | The new outcome replaces that leg. A combo has one leg for each market. For a game with home, draw and away, the whole game counts as one market |
| Click the X on a leg in the slip | Removes that leg |
| In the slip, press `↑` or `↓`, then `Delete` | Removes the leg at the cursor |
| On the board, the **Watchlist** or a market, with combo mode on, press `Space` | Uses the outcome at the row cursor as a leg, or removes it |
| Click **Clear** | Removes all legs. The toast `Legs cleared` has **Undo** for 5 seconds |
| Pick a stake in the slip | Changes the stake. The slip uses the same stake presets as the top bar |

Each leg shows its best ask now. A leg is grey when its book is stale. The slip does not
show a combined price. The quote is the only price of a combo.

Your legs stay in the slip when you reload the page. They clear when you click **Clear**,
close the browser tab or sign out. Combo mode is off after a reload.

### Why a leg button is grey

Hover the button to see the reason. On a phone, tap the button. The reason shows in the
combo bar for 3 seconds.

| Tooltip | Meaning |
| - | - |
| `Combo being accepted` | An Accept is on its way. You cannot change the legs |
| `Market closed` | The market is closed or resolved |
| `Not yet available for combos` | Polymarket plans to offer this market in combos, but does not yet |
| `Not available for combos` | Polymarket does not offer this market in combos |
| `10 legs at most (risk limit)` | The slip has as many legs as your **Max combo legs** limit allows |

### Read the quote

| Figure | Meaning |
| - | - |
| **Price** | The cost of one combo share, without the fee, to 0.1¢ |
| **Shares** | The combo shares you get. Each pays \$1 if every leg wins |
| **Cost with fees** | What Accept spends, fee included. It is never more than your stake |

The seconds left show beside the quote. Polymarket sets the time.

* **Accept** ignores clicks for the first half second. Thus a double click on
  **Get quote** cannot accept a quote that you did not see.
* When less than 1 second is left, **Accept** is grey with the tooltip `Under 1s left`.
* When the time ends, the slip shows `Expired` and the button reads **Get new quote**.

A change to the legs or the stake declines a quote that is on the screen. The slip then
shows `Declined · legs changed` or `Declined · stake changed`. **Cancel all** also declines
a quote on the screen. It cannot stop an Accept that the app sent already.

### Slip statuses

| You see | Meaning |
| - | - |
| **Get quote** is grey, with the tooltip `Needs at least 2 legs` | Add one more leg |
| **Getting quote** on the button | The quote request is on its way |
| Figures, the seconds left, **Accept** | A quote you can accept |
| `Accepting` | The app sent the Accept. You cannot change the legs or the stake |
| `Checking…`, then `Checking combo · no response after 10s` | Polymarket did not answer the Accept yet. The app asks Polymarket what happened. It never sends the Accept again |
| `Filled · Buy … sh at …¢ · $…` | The combo filled. It is in **Portfolio**, on the **Combos** tab |
| `Failed · not settled on chain` | Polymarket accepted the trade, but it did not settle. No shares changed hands |
| `Expired` | The time ended. The app sent nothing |
| `Declined` | You declined the quote. The app sent nothing |
| `No quote · …` | No market maker gave a quote. See [Why a quote or Accept was refused](#why-a-quote-or-accept-was-refused) |
| `Rejected · …` | A check, Polymarket or a market maker refused. See [Why a quote or Accept was refused](#why-a-quote-or-accept-was-refused) |

Other tooltips on a grey **Get quote**: `Checking combo`, `Trading off`,
`Trading state unknown`, `Stake presets not loaded`. When you ask for too many quotes, the
tooltip shows when you can ask again, such as `12 quotes a minute · next in 8s`.

The app sends a notification when a combo fills (`Combo filled`). It sends one when a combo
is refused after Accept (`Combo rejected`) or does not settle (`Combo failed`). These
notifications come to you also when the slip is closed. To choose where they go, see
[Choose where notifications go](alerts-and-notifications.md#choose-where-notifications-go).

### Exit a combo

1. Open **Portfolio** and click the **Combos** tab.
2. Find the combo. Each row shows **Legs**, **Size (sh)**, **Avg (¢)**, **Cost (\$)**,
   **Status** and **Open legs**, such as `2/2`.
3. Click **Exit** on the row. Or select the row and press `E`. This works in **Safe**.
4. Read the slip. It opens as **Exit combo**, with **Price**, **Shares** and
   **Receive after fees**.
5. If the switch reads **Safe**, click **Armed**.
6. Click **Accept** before the time ends.

WARNING: **Accept** sells the combo at once, for the amount in **Receive after fees**.

**Exit** asks the market makers to buy the whole combo back. **Exit** is grey in these
cases:

| Tooltip | Meaning |
| - | - |
| `A leg's market is closed` | A leg’s market is closed but not resolved yet |
| `Combo being accepted` | An Accept is on its way |

The **Status** of a combo is `Open` until every leg resolves. Then it is `Won`, `Lost` or
`Partial`. `Partial` means that the combo resolved with a partial payout. To list resolved
combos, turn on **Show resolved**. A won combo has the link **Claim on polymarket.com**.
The app does not claim for you.

### Why a quote or Accept was refused

The app never sends a refused quote request or Accept again by itself.

**No quote:**

| You see | Meaning |
| - | - |
| `No quote · no market maker quoted` | No market maker gave a price. Other legs or a smaller stake can get a quote |
| `No quote · size too large for the market makers` | The stake is too large for the market makers |
| `No quote · no answer to the quote request` | The answer did not arrive. The app does not send the request again. Get a new quote |

**Refused by the app’s checks.** The app sent nothing to Polymarket. A limit message shows
the limit and your figure. If the figures are not available, it shows the text in the last
column.

| You see | Meaning | Without figures |
| - | - | - |
| `Rejected · max combo legs 10 (12 legs)` | More legs than your limit | `over the max combo legs` |
| `Rejected · max combo $5,000.00 (combo $6,000.00)` | The stake or the cost with fees is more than your limit | `over the max combo notional` |
| `Rejected · max combo exposure $25,000.00 (exposure $26,000.00)` | Your open combos and this one together are more than your limit | `over the max combo exposure` |
| `Rejected · max daily $1,000,000.00 (today $1,001,000.00)` | A combo buy counts towards your daily limit | `over the max daily notional` |
| `Rejected · max orders per minute 60` | An Accept counts as an order | `over the max orders per minute` |

| You see | Meaning |
| - | - |
| `Rejected · combos unavailable` | The Session Key does not have the combos scope |
| `Rejected · a leg is not available for combos` | Polymarket does not offer a leg’s market in combos |
| `Rejected · market closed` | A leg’s market is closed |
| `Rejected · legs contradict each other` | Two legs are from the same market or game |
| `Rejected · invalid order` | Fewer than 2 legs, or the same leg two times |
| `Rejected · no position to sell` | The exit is for more shares than you hold |
| `Rejected · combo positions unavailable` | The app cannot check your combo positions. See [Good to know](#good-to-know) |
| `Rejected · quote expired` | The Accept came when the time ended or after it |
| `Rejected · quote already accepted` | The app sent an Accept for this quote already |
| `Rejected · Safe`, `Rejected · geoblocked` and the other trading checks | The same as for an order. See [Reject messages](order-rules.md#reject-messages) |

When a message ends with `retry after 8s` or similar, wait that time before you try again.

**Refused by Polymarket or a market maker:**

| You see | Meaning |
| - | - |
| `Rejected · market maker declined` | The market maker refused after Accept |
| `Rejected · quote does not match the request` | The quote did not match your legs, side or size. The app did not show it |
| `Rejected · never reached the venue` | The app checked an Accept, and Polymarket has no record of it |
| `Rejected · not enough cash or allowance` | Not enough cash, or an approval for combos is missing on polymarket.com |
| `Rejected · rate limited (429)` | Too many requests. Wait the time shown |
| `Rejected · trading disabled on the venue` | Polymarket refused the quote request because its trading is off |
| `Rejected · refused by the venue` | Any other refusal from Polymarket |

## Good to know

* **Limits.** A combo has its own [risk limits](settings.md#change-a-risk-limit):

  | Limit | Default |
  | - | - |
  | **Max combo notional**: the largest stake for one combo, fees included | \$5,000 |
  | **Max combo exposure**: the total cost of your open combos | \$25,000 |
  | **Max combo legs**: the most legs in one combo | 10 |

  A combo buy also counts towards **Max daily notional**, and each Accept counts towards
  **Max orders per minute**. **Max order notional** and **Max position notional** do not
  apply to combos. But your stake presets cannot be more than **Max order notional**, so
  the combo stake cannot be more either.
* **Quotes per minute.** You can ask for 12 quotes a minute at most. You cannot change this
  limit.
* **Combo positions unavailable.** The app reads your combo positions from Polymarket every
  minute. If it cannot read them, or the last read is more than 2 minutes old, it refuses
  combo buys and exits. It cannot then check your combo exposure or the shares you hold.
  The slip shows `Rejected · combo positions unavailable`.
* **Value.** A combo has no book, so the app values it at what it cost. Open combos count
  in the top bar’s **Exposure** at that cost. They are not in **Value (liq)**,
  **Unrealised P\&L** or **Cost basis** on **Portfolio**.
* **Setup.** To buy a combo, your account needs an approval for Polymarket’s combos
  exchange. To sell one, it needs a second approval. You set both on polymarket.com. If
  one is missing, the slip shows `Rejected · not enough cash or allowance`. The person who
  set up your account can check this with the
  [Session Key setup runbook](../../runbooks/session-key-setup.md#8-combos-scope).
* **One at a time.** Do not get and accept a new quote while the app checks an Accept. The
  first Accept can still fill.


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