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

# The Rental Booking Flow

> What customers experience renting a product, and how bookings become confirmed rentals.

## Overview

The Rental Engine lets customers rent a product for a chosen date range instead of buying it outright. Behind the scenes, every rental moves through two clear stages:

<CardGroup cols={2}>
  <Card title="Booking" icon="hourglass-half">
    A pre-payment **hold**. The units are reserved for the selected dates, but
    no money has changed hands yet.
  </Card>

  <Card title="Rental" icon="circle-check">
    A confirmed, **paid** rental. Once a booking's order is paid, the booking
    converts into a rental.
  </Card>
</CardGroup>

A **Booking** is the temporary reservation; a **Rental** is what it becomes once it's paid for. Understanding that hold-then-confirm lifecycle is the key to everything on this page.

***

## What the customer sees

When you've added the rental calendar to a rentable product's page (see [adding the calendar block](#adding-the-calendar-to-your-storefront)), the customer rents in a few simple steps.

<Steps>
  <Step title="Pick a date range">
    On the product page, the customer chooses **Start date** and **End date** in
    the rental calendar — or taps a preset duration such as **3 days**,
    **1 week**, or **2 weeks**. The calendar only offers dates that are actually
    available: it respects the product's rental capacity and any blackout dates
    you've set, marking everything else as **Unavailable** (for example
    **Fully booked**, **Closed**, or **Public holiday**).
  </Step>

  <Step title="Add to cart — a Booking holds the units">
    When the customer adds the rental to their cart, a **Booking** is created
    and the units for those dates are **held**. The hold keeps those units off
    the table so no one else can grab the same dates while the customer checks
    out.
  </Step>

  <Step title="Complete checkout">
    The customer pays through the normal Shopify checkout. The hold gives them a
    window to finish — by default **30 minutes** (you can change this; see the
    note below).
  </Step>

  <Step title="The Booking becomes a Rental">
    When the order is paid, the Booking converts automatically into a confirmed
    **Rental**. The reservation is now locked in and the customer is on their
    way.
  </Step>
</Steps>

<Note>
  **Cart timeout.** A storefront hold lasts **30 minutes by default**. If the
  customer doesn't complete checkout in time, the hold is released and the dates
  return to availability for everyone else. You can override this timeout for
  your store if you need a longer or shorter window.
</Note>

<Note>
  **More than one rental in a cart.** A customer can have several rental lines in
  the same cart. Each rental line is its own independent Booking with its own
  availability check, so they don't interfere with one another. If a single line
  runs into a conflict, only that line is affected — see
  [Rental cancellations & refunds](/docs/mintlify/rental-cancellations-refunds)
  for how conflicts are handled.
</Note>

***

## Bookings vs Rentals

The lifecycle is the same whether a rental starts on the storefront or is created by you in the admin — only the timing of the hold and how it's confirmed differ.

| Stage       | What it means                                       | Inventory               |
| ----------- | --------------------------------------------------- | ----------------------- |
| **Booking** | A pre-payment hold reserving units for a date range | Units are **held**      |
| **Rental**  | A confirmed, paid rental                            | Units are **committed** |

**How a Booking becomes a Rental**

* **Storefront orders** convert automatically the moment the order is paid.
* **Holds expire.** A storefront hold that isn't paid within the cart timeout is released, and the dates become available again.
* **You can confirm manually.** For bookings that don't flow through a Shopify checkout, you confirm them yourself with **Mark as confirmed** (see below).

<Info>
  The shorthand: a **Booking** is a *promise* on some dates; a **Rental** is a
  *paid commitment* to them. Nothing is permanently committed until the booking
  converts.
</Info>

***

## Create a booking as an admin

Some rentals never go through the online checkout — phone orders, in-person arrangements, or anything you arrange manually. For those, you can create the booking yourself.

### Where to go

Go to **Shopify Admin** → **Circuly Rental & Subscriptions** → **Rentals** → **Bookings**, then click **New booking**.

The form explains its own behaviour at the top:

> Creates a held booking that reserves inventory for the range. The hold auto-expires unless you mark it as confirmed on the booking page — use that for phone or manual orders that don't go through checkout.

### Fill in the booking

<Steps>
  <Step title="Choose the Rental asset">
    Select the product being rented from the **Rental asset** dropdown.
  </Step>

  <Step title="Choose a Pricing template">
    Pick a **Pricing template**. This drives the timings and locks in the
    pricing for the rental.
  </Step>

  <Step title="Set the dates and quantity">
    Enter a **Start date** and **End date** for the rental, and the **Quantity**
    of units. The form checks availability for the range as you fill it in, so
    you'll know straight away whether the dates can be held.
  </Step>

  <Step title="Create the booking">
    Save the booking. Inventory is **held immediately** for the chosen range.
  </Step>
</Steps>

### What's different about an admin booking

<CardGroup cols={3}>
  <Card title="Holds immediately" icon="lock">
    Unlike a storefront cart, an admin booking holds inventory the moment you
    create it.
  </Card>

  <Card title="Starts as Pending" icon="clock">
    The booking opens in the **Pending** state rather than converting on its
    own.
  </Card>

  <Card title="No auto-expiry" icon="infinity">
    There's no cart timeout — the hold stays put. **You own its lifecycle.**
  </Card>
</CardGroup>

### Confirming an admin booking

A **Pending** admin booking has two ways forward:

* **It converts automatically when its order is paid** — for example, if you turn it into a Shopify order that the customer pays.
* **You confirm it manually.** On the booking's page, use **Mark as confirmed** to promote the held booking straight to a confirmed rental. From that point it no longer auto-expires and you own its lifecycle.

<Warning>
  Because an admin booking has **no auto-expiry**, it will keep holding
  inventory until you either confirm it or cancel it. If a phone order falls
  through, cancel the booking so the dates free up — see
  [Rental cancellations & refunds](/docs/mintlify/rental-cancellations-refunds).
</Warning>

***

## Adding the calendar to your storefront

Customers can only book if the rental calendar is on the product page. It's added through the Shopify Theme Editor as part of the storefront purchase selector — no coding required.

<Card title="Theme extension setup" icon="arrow-right" href="/docs/mintlify/theme-extension">
  Add the purchase selector (with the rental calendar) to your product pages
  through the Theme Editor.
</Card>

## Related

<CardGroup cols={2}>
  <Card title="Rental cancellations & refunds" icon="rotate-left" href="/docs/mintlify/rental-cancellations-refunds">
    Releasing holds, handling line conflicts, and refunding confirmed rentals.
  </Card>

  <Card title="Theme extension setup" icon="puzzle-piece" href="/docs/mintlify/theme-extension">
    Adding the storefront blocks, including the rental calendar.
  </Card>
</CardGroup>
