> For the complete documentation index, see [llms.txt](https://docs.overtime.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.overtime.io/overtime-casino/games/table-games/baccarat.md).

# Baccarat

### How it works

The Overtime Baccarat contract implements the classic third-card rules of Punto Banco baccarat. When you place a bet:

1. You stake on **Player**, **Banker** or **Tie**
2. The contract requests a random word from Chainlink VRF
3. From that random word, the contract deals the initial four cards (Player + Banker, two each)
4. The third-card draw rules are applied deterministically based on the totals
5. The hand totals are computed, the winner is determined, and your payout is transferred

The hand is dealt and resolved in the same VRF callback — there's no stateful turn-by-turn UX as in blackjack, because in Punto Banco the player makes no decisions after placing the bet.

***

### Bet types and payouts

| Bet                                      | Win condition                  | Total payout                                                  |
| ---------------------------------------- | ------------------------------ | ------------------------------------------------------------- |
| **Player**                               | Player hand wins               | **2.00×** (1:1 + stake)                                       |
| **Banker**                               | Banker hand wins               | **1.95×** default (configurable, capped 1.00×–2.00× on-chain) |
| **Tie**                                  | Player and Banker totals equal | **9.00×** (8:1 + stake)                                       |
| Player or Banker bet, when result is Tie | /                              | Stake refunded (push)                                         |

The Banker payout being slightly under 2× reflects the standard 5% commission found at any traditional baccarat table — except in Overtime's case the multiplier is a public state variable. Any change emits a `BankerPayoutMultiplierChanged` event. Every bettor who comes after sees the new number before they place their stake.

The contract structurally enforces that the Banker payout cannot be set outside the `[1.00×, 2.00×]` range. **It is not possible to deploy a configuration that under-pays Banker bets to a degrading degree.**

***

### Limits

| Parameter                | Value                                          |
| ------------------------ | ---------------------------------------------- |
| Minimum bet              | 3 USD                                          |
| Banker payout multiplier | 1.95× default, configurable in \[1.00×, 2.00×] |
| Maximum profit per bet   | Set per deployment (`maxProfitUsd`)            |
| Cancel timeout           | 30 seconds minimum                             |

Supported collaterals: **USDC**, **WETH**, **$OVER**.

***

### Punto Banco rules in plain text

After the initial four cards:

1. If either Player or Banker has a **natural 8 or 9**, the hand stands. No third cards.
2. Otherwise, **Player rule**: Player draws if total is 0–5, stands on 6–7.
3. **Banker rule** (depends on whether Player drew, and on Player's third card):
   * If Player stood: Banker draws on 0–5, stands on 6–7.
   * If Player drew: Banker's draw rule depends on Banker's current total and the value of Player's third card, per the standard Punto Banco draw chart.
4. Final hand totals are computed (modulo 10), and the higher total wins. Equal totals = Tie.

The full rule logic is implemented in the contract and can be inspected directly. Card values follow the standard convention: 2–9 are face value, 10 / J / Q / K count as 0, Ace counts as 1.

***

### User guide

#### 1. Open the Baccarat table

Select **Baccarat** from the casino lobby.

> *\[Screenshot — Baccarat lobby tile]*

#### 2. Place your stake

Choose your collateral, enter your stake, and click on the **PLAYER**, **BANKER** or **TIE** betting area.

> *\[Screenshot — bet placement on Player/Banker/Tie]*

#### 3. Confirm the bet

Sign the transaction. The bet enters `PENDING` while waiting for Chainlink VRF to fulfill.

> *\[Screenshot — pending bet]*

#### 4. Cards are dealt and resolved

When the random word arrives, the entire hand plays out at once: initial four cards, third-card draws (if applicable), final totals, and the winner. The cards and result are revealed in your bet UI.

> *\[Screenshot — hand reveal with Player and Banker totals]*

#### 5. Payout

If you won, your payout is transferred in the same transaction that resolved the hand. If your Player or Banker bet pushed because of a Tie, your stake is refunded. The full result is in your bet history and on-chain.

> *\[Screenshot — resolved hand with payout]*

***

### Why this matters

Baccarat is one of the simpler casino games — but it's also one of the most heavily abused by predatory operators, especially around variable Banker commissions and "house rule" surprises. Overtime makes that impossible:

* **The Banker payout multiplier is a public number.** You can read it from the contract before you bet.
* **The cap is welded in.** The owner cannot drop it below 1.00× or push it above 2.00×.
* **The third-card rules are code, not house policy.** They cannot be adjusted between hands.
* **The cards do not exist until Chainlink generates the random word.** No pre-shuffled shoe. No operator-chosen sequence.

***

### Free bets

Baccarat supports `placeBetWithFreeBet` for users with an Overtime free-bet balance. The mechanics are identical, and resolution flows through the existing free-bets infrastructure.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.overtime.io/overtime-casino/games/table-games/baccarat.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
