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

# Combos

> Combine 2 to 10 outcomes into one position with a single price

## What a combo is

A **combo** is a single position built from 2 to 10 **legs**. Each leg is one outcome on one market — for example, "Manchester City to win: YES" or "Over 2.5 total goals: YES". Bayse Markets prices the whole slip as one position with one `price` and one `multiplier`.

A combo wins only if **every** leg wins. If any leg loses, the whole combo loses.

> [!NOTE]
>
> Combos are not the same as `combined` events. A `combined` event is an event `type` whose markets are mutually exclusive — only one of them can resolve YES. A combo is a position you build across markets, usually from several different events. See [Event types](https://docs.bayse.markets/concepts/events-markets-outcomes.md#event-types).

## Price, multiplier, and payout

| Field | Meaning |
| - | - |
| `price` | Cost of one combo share, from 0 to 1. A winning share settles at 1.00. |
| `multiplier` | Payout per unit you stake. Approximately `1 / price`. |
| `shares` | Number of combo shares you hold: `amount / price` in USD. |
| `potentialPayout` | What you receive if every leg wins: each share settles at 1.00, so this is roughly `amount × multiplier`. |

For example, a $10 combo at a `price` of `0.18` has a `multiplier` of about `5.56`. If every leg wins, you receive $55.56.

In NGN, a combo share costs `price × 100` and settles at ₦100.00, the same as a regular share (see [Multi-currency](https://docs.bayse.markets/concepts/multi-currency.md)). This means `shares` and `potentialPayout` differ by a factor of 100 in NGN. A ₦5,000 combo at a `price` of `0.20` holds 250 shares and pays ₦25,000.

### Payout cap

A combo can pay at most **1000×** your stake.

* A slip that prices slightly above 1000× is quoted at exactly 1000×.
* A slip that prices well above 1000× is refused with `400`. Remove a leg or pick outcomes with a higher chance.

The quote also returns a `maxStake`. A placement whose stake or payout exceeds the allowed limit is refused with `400`.

## Building a combo

**1. Find combo-eligible markets**

Call [List events](https://docs.bayse.markets/api-reference/pm/list-events.md) with `comboEligible=true`. The filter composes with every other filter. For example, `sportGameSlug=bm-game-20260524-mci-avl&comboEligible=true` lists the combinable markets for one fixture.

Each event returns two flags:

* `comboEligible` — the event's markets can be used as combo legs.
* `combosOnly` — the event can only be traded inside a combo. Regular orders on its markets are not accepted.

**2. Request a quote**

Send your selections (`marketId` + `outcomeId` per leg) to [Get combo quote](https://docs.bayse.markets/api-reference/pm/get-combo-quote.md). The response contains a `quoteId`, the combo `price`, `multiplier`, `maxStake`, and the per-leg `chance`.

**3. Place the combo**

Send the `quoteId`, the same selections, and your stake to [Place combo](https://docs.bayse.markets/api-reference/pm/place-combo.md). Set `maxPrice` to protect yourself against the price moving between the quote and the placement.

**4. Track it**

Poll [Get combo](https://docs.bayse.markets/api-reference/pm/get-combo.md) or subscribe to the [combos WebSocket channel](https://docs.bayse.markets/websocket/combos.md) for live state changes.

### Leg rules

* A combo needs between 2 and 10 legs.
* Each market can appear only once.
* Two legs cannot come from the same `grouped` or `combined` event — for example, two lines of one Total Goals event.
* Legs that conflict are refused with `400`. This covers outcomes that cannot both happen (for example, two different winners of the same game) and legs on the same fixture that are too closely correlated to price together.
* Every leg's market must be open.

### Re-pricing and idempotency

Placement re-prices the combo server-side. If the new price is above your `maxPrice`, the placement is refused with `409` and nothing is debited. Request a new quote and try again.

The `quoteId` is the idempotency key for a placement. Retrying with the same `quoteId` cannot place a second combo — it returns `409` with `This combo has already been placed. Request a new quote to place another.`

If a placement times out or its response is lost, retry with the same `quoteId`. Do not request a new quote first: the original may have gone through, and a new `quoteId` would place a second combo. A `409` saying the combo has already been placed means it did — find it with [List combos](https://docs.bayse.markets/api-reference/pm/list-combos.md), which returns your newest combos first. Request a new quote only when you mean to place another combo.

## Lifecycle

```mermaid theme={null}
graph LR
    A[Place combo] --> B[PENDING]
    B -->|every leg wins| C[WON]
    B -->|any leg loses| D[LOST]
    B -->|fewer than 2 legs left after voids| E[VOIDED]
    B -->|you cash out| F[CASHED_OUT]
```

| `status` | Meaning |
| - | - |
| `PENDING` | Placed and not yet settled. |
| `WON` | Every remaining leg won. |
| `LOST` | At least one leg lost. |
| `VOIDED` | The combo was cancelled and your stake is returned. |
| `CASHED_OUT` | You exited early at the cashout value. |

`uiStatus` gives a coarser, display-friendly view:

| `uiStatus` | Meaning |
| - | - |
| `PENDING` | No leg's game has started yet. |
| `ACTIVE` | At least one leg's game has started. |
| `COMPLETED` | The combo is settled or cashed out. |

### Settlement

A combo stays `PENDING` until it settles. It loses as soon as one leg loses, once voids can no longer reduce it below 2 legs. Otherwise it wins when every remaining leg has won.

### Voided legs

A leg is voided when its market resolves 50-50 or is cancelled.

* Voided legs drop out of the combo. The surviving legs settle at the probabilities they were quoted at when you placed the combo. Bayse Markets recomputes the `multiplier`, so `potentialPayout` falls.
* If voids leave fewer than 2 legs, the whole combo is `VOIDED` and your stake is returned — whichever way the remaining leg went.
* If every leg is voided, the combo is `VOIDED` and your stake is returned.

Each selection reports its own `status` (`PENDING`, `WON`, `LOST`, `VOIDED`) and a display-friendly `displayStatus` (`NOT_STARTED`, `IN_PLAY`, `WON`, `LOST`, `VOIDED`).

### Settlement and payout are separate

The combo's `status` changes first (`WON`, `LOST`, or `VOIDED`). The wallet credit follows shortly after. Use `paidOut` and `amountPaidOut` on the combo to see when the money has landed in your wallet.

## Cashout

You can exit a combo early at its current value. Cashout is available only when all of the following are true:

* The combo is `PENDING`.
* No leg's game has started.
* Every leg's market is open.
* The cashout value is positive.

`cashoutAvailable` on the combo tells you cashout is currently offered. The [cashout quote](https://docs.bayse.markets/api-reference/pm/get-combo-cashout-quote.md) is authoritative — it returns the exact `amount` you would receive, or a `reason` when cashout is unavailable.

[Cash out combo](https://docs.bayse.markets/api-reference/pm/cashout-combo.md) re-prices at execution, so the amount you receive can differ from the last cashout quote. The proceeds are credited to your wallet and the combo moves to `CASHED_OUT`.

## Sharing a combo

Every combo has an 8-character `code`. Anyone with read authentication can open a combo by its code with [Get combo](https://docs.bayse.markets/api-reference/pm/get-combo.md). When you open a combo you did not place, `isOwner` is `false`, every money field (`amount`, `potentialPayout`, `shares`, `amountPaidOut`, `cashoutAmount`) is zero, and `cashoutAvailable` is `false`.


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