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

# How bid-based pricing works on Ornn

> Learn how Ornn's bid-based pricing model works, the lifecycle a bid moves through from down-payment to reservation, and how to withdraw a bid before it's accepted.

Ornn uses a bid-based pricing model rather than fixed spot pricing. When you want to reserve GPU capacity, you submit a bid that states how much you're willing to pay per GPU-hour. You complete a down-payment up front; the bid then enters review and, once accepted, is promoted to a confirmed reservation.

## How bidding works

You submit a bid from the reservation form for a specific deployment. The bid records the GPU count you want, the date range, and the price per GPU-hour you're offering. Before the bid can be reviewed, you complete checkout and pay the down-payment. Once the down-payment clears, the bid is **Active**. The Ornn team reviews active bids and either accepts or rejects them. Accepted bids are later promoted to confirmed reservations.

## Bid lifecycle

A bid moves through the following states. The web app shows each label by rendering the underlying status (it replaces underscores with spaces and capitalizes the first letter). The raw status values shown in the CLI and detail pages are listed for reference.

<div className="bid-lifecycle-diagram">
  <div className="bid-lifecycle-stage">
    <svg className="bid-lifecycle-connectors-svg" viewBox="0 0 1388 369" aria-hidden="true" xmlns="http://www.w3.org/2000/svg">
      <g className="bid-lifecycle-primary-arrows">
        <path className="bid-lifecycle-arrow" d="M365.454 44.5L353.454 37.5718V51.4282L365.454 44.5ZM317.454 44.5V45.7H354.654V44.5V43.3H317.454V44.5Z" />

        <path className="bid-lifecycle-arrow" d="M702.454 44.5L690.454 37.5718V51.4282L702.454 44.5ZM654.454 44.5V45.7H691.654V44.5V43.3H654.454V44.5Z" />

        <path className="bid-lifecycle-arrow" d="M1039.45 44.5L1027.45 37.5718V51.4282L1039.45 44.5ZM991.45 44.5V45.7H1028.65V44.5V43.3H991.45V44.5Z" />
      </g>

      <g className="bid-lifecycle-connectors">
        <path d="M112.954 188L119.882 176H106.026L112.954 188ZM354.954 184.982L361.882 172.982H348.026L354.954 184.982ZM521.454 134.533V135.733H522.654V134.533H521.454ZM112.954 134.533H111.754V177.2H112.954H114.154V134.533H112.954ZM354.954 134.533H353.754V174.182H354.954H356.154V134.533H354.954ZM112.954 134.533V135.733H354.954V134.533V133.333H112.954V134.533ZM112.954 134.533H114.154V104H112.954H111.754V134.533H112.954ZM354.954 134.533V135.733H521.454V134.533V133.333H354.954V134.533ZM521.454 134.533H522.654V103.5H521.454H520.254V134.533H521.454Z" />

        <path d="M577.454 187.5L584.382 175.5H570.526L577.454 187.5ZM577.454 103H576.254V176.7H577.454H578.654V103H577.454Z" />

        <path d="M1.20001 276.366V316.5H669.7V276" />
      </g>
    </svg>

    <div className="bid-lifecycle-state-box bid-lifecycle-state-deposit">Deposit pending</div>
    <div className="bid-lifecycle-state-box bid-lifecycle-state-review">Under review</div>
    <div className="bid-lifecycle-state-box bid-lifecycle-state-accepted">Bid accepted</div>
    <div className="bid-lifecycle-state-box bid-lifecycle-state-reservation">Reservation created</div>

    <div className="bid-lifecycle-exit-box bid-lifecycle-exit-withdrawn">Withdrawn</div>
    <div className="bid-lifecycle-exit-box bid-lifecycle-exit-expired">Expired</div>
    <div className="bid-lifecycle-exit-box bid-lifecycle-exit-rejected">Rejected</div>
    <div className="bid-lifecycle-exits-label">Exits</div>
  </div>
</div>

| Label                   | Meaning                                                                                                            | Underlying status     |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------ | --------------------- |
| **Pending deposit**     | Checkout creates the bid. The bid is not reviewable until you pay the down-payment invoice.                        | `pending_deposit`     |
| **Active**              | The down-payment is settled. The bid is live and visible to the Ornn team for review.                              | `active`              |
| **Accepted**            | The Ornn team approved your bid. The accepted GPU count and bid price are locked in.                               | `accepted`            |
| **Reservation created** | The accepted bid has been promoted to a confirmed reservation. From here, you manage the reservation, not the bid. | `reservation_created` |

A bid can also end in a terminal state without becoming a reservation:

| Label         | Meaning                                                    | Underlying status |
| ------------- | ---------------------------------------------------------- | ----------------- |
| **Rejected**  | The Ornn team did not accept the bid.                      | `rejected`        |
| **Withdrawn** | You withdrew the bid before it reached a terminal outcome. | `withdrawn`       |
| **Expired**   | The bid timed out before being accepted or rejected.       | `expired`         |

<Note>
  Checkout and the down-payment happen **before** a bid is reviewable, not after acceptance. Accepted bids are then promoted to reservations without a second checkout step.
</Note>

## What you submit in a bid

When you submit the reservation form, the bid captures:

* **GPU count**: how many GPUs you want to reserve.
* **Minimum GPU count**: the smallest count you would accept if the full quantity is not available. Set it equal to the requested GPU count to require the full count.
* **Start date and end date**: the term you want.
* **Bid price per GPU-hour**: your offered price, in USD.

When the bid is accepted, the accepted GPU count and an `accepted_at` timestamp are recorded. The accepted count can match your requested count or fall to your minimum.

### Field reference

For scripted use, the bid record exposes these raw fields:

| Field                    | Type     | Description                                                    |
| ------------------------ | -------- | -------------------------------------------------------------- |
| `deployment_id`          | UUID     | The deployment the bid targets.                                |
| `gpu_count`              | integer  | Requested GPU count.                                           |
| `min_gpu_count`          | integer  | Minimum acceptable GPU count. May be `null`.                   |
| `start_date`             | date     | Requested start.                                               |
| `end_date`               | date     | Requested end.                                                 |
| `bid_price_per_gpu_hour` | number   | Offered price per GPU-hour, USD.                               |
| `status`                 | string   | One of the lifecycle values above.                             |
| `accepted_at`            | datetime | When the bid was accepted. `null` if not yet accepted.         |
| `accepted_gpu_count`     | integer  | GPU count locked in at acceptance. `null` if not yet accepted. |

## Pricing your bid

The reservation form's summary rail shows a **Rate (Buy-now price)** figure: the deployment's buy-now price per GPU-hour. This price is the ceiling on your bid. You can bid up to it, but not above it.

<Tip>
  Bidding at or near the buy-now price improves your chances of acceptance, while a lower bid trades acceptance odds for a lower rate.
</Tip>

## Updating or withdrawing a bid

You can update or withdraw a bid while it is **Pending deposit** or **Active** (that is, before it's accepted, rejected, withdrawn, or expired).

* **Update**: from the bid detail page, change the GPU count, minimum GPU count, dates, or price, then save. All bid fields are submitted together.
* **Withdraw**: from the bid detail page, click **Withdraw bid** to close the bid. The CLI command for the same action is `ornn bid withdraw <bid-id>`.

<Warning>
  Once a bid is **Accepted**, **Reservation created**, **Rejected**, **Withdrawn**, or **Expired**, it can no longer be updated or withdrawn.
</Warning>

## Managing bids from the CLI

All bid actions are available through the Ornn Compute CLI:

```bash theme={null}
ornn bid create <listing-id> --gpu-count 8 --min-gpu-count 4 \
  --start-date 2026-06-01 --end-date 2026-07-01 --price 2.75
ornn bid list
ornn bid show <bid-id>
ornn bid update <bid-id> --gpu-count 8 --min-gpu-count 4 \
  --start-date 2026-06-01 --end-date 2026-07-01 --price 3.10
ornn bid withdraw <bid-id>
```

`ornn bid withdraw` is the CLI equivalent of **Withdraw bid** in the web app. See the [Ornn Compute CLI](/cli) for full syntax.

## What's next

<CardGroup cols={2}>
  <Card title="Completing checkout" img="https://mintcdn.com/ornn/fNQRwmmR9H-yzza5/images/banners/checkout.jpg?fit=max&auto=format&n=fNQRwmmR9H-yzza5&q=85&s=34b04e114a261e5e8b4c426cf19ac64f" href="/guides/checkout" width="1200" height="800" data-path="images/banners/checkout.jpg">
    Complete the down-payment so your bid moves into review.
  </Card>

  <Card title="Managing your bids" img="https://mintcdn.com/ornn/fNQRwmmR9H-yzza5/images/banners/managing-bids.jpg?fit=max&auto=format&n=fNQRwmmR9H-yzza5&q=85&s=0bcb78cbe130c643d09aad9334995569" href="/guides/managing-bids" width="1200" height="800" data-path="images/banners/managing-bids.jpg">
    Track active bids, withdraw pending offers, and see what happens after acceptance.
  </Card>
</CardGroup>
