> For the complete documentation index, see [llms.txt](https://ovatheme.gitbook.io/brw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ovatheme.gitbook.io/brw/create-a-product/rental-type-config/by-period-of-time.md).

# By Period of Time

<figure><img src="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FFYKvP25YQhLGceP2htyi%2FScreenshot%202026-06-19%20at%2016.54.06.png?alt=media&amp;token=f93e9011-71b9-4fbb-b066-69c43b345d74" alt=""><figcaption></figcaption></figure>

The **Rental by Period Time** type sells rentals as fixed-duration packages. Instead of letting the customer freely pick a date range, you define a list of packages (e.g. "3-Day Pass", "Weekly Rental", "4-Hour Session") each with a fixed price. The customer selects a package and a start date — the end date is calculated automatically from the package duration.

{% hint style="info" icon="lightbulb-exclamation" %}
Use this type when your pricing is package-based rather than per-unit-time: weekly bike rentals, monthly equipment subscriptions, day-pass activities, or fixed-hour studio sessions.
{% endhint %}

| Aspect                 | Rental by Day                  | Rental by Period Time                 |
| ---------------------- | ------------------------------ | ------------------------------------- |
| Customer selects       | Free date range (any duration) | A pre-defined package + start date    |
| Pricing model          | Price × number of days         | Fixed price per package               |
| Drop-off date          | Customer picks                 | Auto-calculated from package duration |
| GD / ST                | ✓                              | — Not available                       |
| Daily pricing plan     | ✓                              | — Not available                       |
| Discount mechanism     | Global Discount by days        | Per-package Discount field            |
| Locations / Round-trip | ✓                              | ✓                                     |

## 1: Quick Start

{% stepper %}
{% step %}

### Add General fields

Read in [overview](/brw/create-a-product/overview.md)
{% endstep %}

{% step %}

### [Choose Rental Type](#id-2-choose-rental-type)

{% endstep %}

{% step %}

### [Pricing Settings](#id-3-pricing-settings)

{% endstep %}

{% step %}

### [Shared Fields](#id-4-shared-fields)

The following fields are shared across multiple rental types.
{% endstep %}

{% step %}

### [Common Fields](#id-5-common-fields)

The following fields are shared across all rental types.&#x20;
{% endstep %}

{% step %}

### [Customize Fields in Product Editing](#id-6-customize-fields-in-product-editing)

You can add/remove fields in product editing.
{% endstep %}

{% step %}

### Publish

Set a WooCommerce Regular Price for display purposes, then click **Publish**. The actual booking price is always calculated by BRW settings.
{% endstep %}
{% endstepper %}

## 2: Choose Rental Type

* Step 1: Add new product
* Step 2: Setup&#x20;
  * Product data: Rental
  * Rental Type: Period of Time

<figure><img src="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FkwrvHNTSK2n8Oqc6RVAA%2FScreenshot%202026-06-22%20at%2016.05.51.png?alt=media&amp;token=d8a30042-0820-4aa2-a86d-fb619f8ea0a7" alt=""><figcaption></figcaption></figure>

## 3: Pricing Settings

### 3.1 Package Type <a class="button primary">unfixed\_time</a>

A global setting that controls whether the session start/end time is fixed or customer-selectable. Applies to all Hour-type packages in this product.

{% columns %}
{% column %}
**🔒 Fixed Hour     `no`**

* Package has a specific start and end time
* Customer cannot change the session time
* Example: "Morning Session 09:00–13:00"
* Fields: `pehour_start_time[]`, `pehour_end_time[]`
  {% endcolumn %}

{% column %}
**🕐 UnFixed Hour   `yes`**

* Package defines duration in hours
* Customer chooses their own start time
* Example: "4-Hour Session" (start anytime)
* Field: `pehour_unfixed[]` (total hours)
  {% endcolumn %}
  {% endcolumns %}

{% hint style="danger" %}
This setting only affects packages with **Type = Hour**. Day-type packages are unaffected — the customer always picks a start date and the end date is calculated by adding the package's day count.
{% endhint %}

### 3.2 Packages <a class="button primary">packages</a>

The main pricing table. Each row is one package option the customer can select. Add as many packages as needed — they are displayed as a dropdown or list in the booking form.

| Column    | Meta key            | Description                                                                                                                                               |
| --------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ID        | `petime_id[]`       | Unique identifier for this package. Use alphanumeric characters, no spaces (e.g. `weekly`, `halfday`, `pkg3d`). Used internally to reference the package. |
| Price     | `petime_price[]`    | Fixed price for this package. Shown in the booking form when the customer selects it.                                                                     |
| Type      | `package_type[]`    | Select **Hour** (`inday`) for same-day sessions, or **Day** (`other`) for multi-day packages.                                                             |
| Name      | `petime_label[]`    | Display name shown to customers (e.g. "Half Day", "Weekly Pass", "3-Day Rental"). Keep concise.                                                           |
| Discounts | `petime_discount[]` | <p>Optional discount value for this package. Reduces the package price by this amount </p><p>or percentage.</p>                                           |

**When Type = Hour** — additional fields appear:

| Field                 | Meta key              | Description                                                                                                                                       |
| --------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Total hours (UnFixed) | `pehour_unfixed[]`    | Number of hours for this session package. Used when Package Type = **UnFixed Hour**. The customer picks the start time; end = start + this value. |
| Start time (Fixed)    | `pehour_start_time[]` | Fixed session start time. Used when Package Type = **Fixed Hour**.                                                                                |
| End time (Fixed)      | `pehour_end_time[]`   | Fixed session end time. Used when Package Type = **Fixed Hour**.                                                                                  |

**When Type = Day** — additional field appears:

| Field      | Meta key        | Description                                                                              |
| ---------- | --------------- | ---------------------------------------------------------------------------------------- |
| Total days | `petime_days[]` | Number of days for this package. The drop-off date = pick-up date + this number of days. |

{% hint style="info" %}
**Example package table:**\
ID=`halfday` | Price=$25 | Type=Hour | Name="Half Day" | Hours=4\
ID=`fullday` | Price=$40 | Type=Hour | Name="Full Day" | Hours=8\
ID=`weekly` | Price=$180 | Type=Day | Name="Weekly Pass" | Days=7
{% endhint %}

{% hint style="info" %}
**Drop-off date:** Period Time type does *not* show a separate drop-off date picker in the booking form. The end date/time is calculated automatically once the customer picks a package and a start date.
{% endhint %}

## 4: Shared Fields

Period Time type supports Locations, Round-trip, and Guests. There is **no separate Drop-off date** field — it is auto-calculated from the selected package.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Locations</strong></td><td><em>Pickup/dropoff pairs + price</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FxchHT8QdF27u2zz8Bo8o%2Froute.png?alt=media&amp;token=7cc26d7b-baaa-4267-a96a-3e5a5396f008">route.png</a></td><td><a href="/brw/create-a-product/shared-fields/location/locations.md">Locations</a></td></tr><tr><td><strong>Location surcharge</strong></td><td><em>Extra fee per location</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FAFjqEBwsVLIovWgkPdu7%2Fprice.png?alt=media&amp;token=ddf6d5c6-8650-4750-9e48-883aecf688bb">price.png</a></td><td><a href="/brw/create-a-product/shared-fields/location/locations-surcharge.md">Locations surcharge</a></td></tr><tr><td><strong>Pick-up location</strong></td><td><em>Show/rename on booking form</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FE5QmNeaYbtj583QhhFVg%2Flocation.png?alt=media&amp;token=c26e399f-afa0-4e89-b43a-31c2fbb821ab">location.png</a></td><td><a href="/brw/create-a-product/shared-fields/location/pick-up-location.md">Pick-up Location</a></td></tr><tr><td><strong>Drop-off location</strong></td><td><em>Show/rename on booking form</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FIgvUaa0e4eBUJwSWctDc%2Fdrop-off.png?alt=media&amp;token=ae9a5104-072a-463d-a0f3-a1adeaaa210a">drop-off.png</a></td><td><a href="/brw/create-a-product/shared-fields/location/drop-off-location.md">Drop-off Location</a></td></tr><tr><td><strong>Round-trip</strong></td><td><em>Toggle + extra fee</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FsziJN9pVOG114t07WPnG%2Fround-trip.png?alt=media&amp;token=3d7ed259-2342-46fb-a0cc-23b3f4d7177e">round-trip.png</a></td><td><a href="/brw/create-a-product/shared-fields/location/round-trip.md">Round-trip</a></td></tr><tr><td><strong>Guests options</strong></td><td><em>show/hide guest</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2Fzp9hD4p7APLXBG7AQNDE%2Fcake.png?alt=media&amp;token=28b10c9d-3897-4dde-a5a0-bcfd35818ab3">cake.png</a></td><td><a href="/brw/create-a-product/shared-fields/guests/guest-option.md">Guest option</a></td></tr><tr><td><strong>Guests fields</strong></td><td><em>Form fields + min/max</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FSghSiWEVGFG4kkmH73j0%2Fguest-list.png?alt=media&amp;token=98f112fc-4a52-483d-9fb2-811772f32bf6">guest-list.png</a></td><td><a href="/brw/create-a-product/shared-fields/guests/guests-pricing-and-limits.md">Guests (pricing &amp; limits)</a></td></tr><tr><td><strong>Pick-up date</strong></td><td><em>Time slots, label, defautls</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FhimLDbxBkqW67IwuLHcA%2Fstart-date.png?alt=media&amp;token=5a66382b-cbb8-4841-9f92-0a9f653b2c87">start-date.png</a></td><td><a href="/brw/create-a-product/shared-fields/booking-dates/pick-up-date.md">Pick-up date</a></td></tr><tr><td><strong>Booking Conditions</strong></td><td><em>Min/max days, preparation, advance</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FSqvnedaUILFZRR7KVeKv%2Fschedule.png?alt=media&amp;token=fc50535b-0cb7-4081-ab1a-d154f1b786cd">schedule.png</a></td><td><a href="/brw/create-a-product/shared-fields/booking-conditions.md">Booking Conditions</a></td></tr></tbody></table>

## 5: Common Fields

These fields are shared across all rental types and documented on a dedicated reference page. Click any card to go directly to that section.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td><strong>Availability</strong></td><td><em>Allowed dates, disabled dates, iCal</em></td><td><a href="/brw/common-fields/availability.md">Availability</a></td><td><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FHZB58ceyMxbJawVs3DUS%2Fend-of-year.png?alt=media&amp;token=fd8451a9-c6b6-433b-9ff6-6039f9ab3722">end-of-year.png</a></td></tr><tr><td><strong>Services &#x26; Resources</strong></td><td><em>Add-on pricing with /Day or /Order</em></td><td><a href="/brw/common-fields/services-and-resources.md">Services &amp; Resources</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2Faaowe5OV6TECZOYyW1lC%2Fconfiguration.png?alt=media&amp;token=5ed2998a-3bba-42a0-b41a-38c0dc91f04b">configuration.png</a></td></tr><tr><td><strong>Deposit</strong></td><td><em>Fixed or percentage upfront payment</em></td><td><a href="/brw/common-fields/deposit-and-insurance/deposit.md">Deposit</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FoUxbTJH7SOcUJRbMqMnJ%2Fupload.png?alt=media&amp;token=5fadf598-d7e8-4c12-bc26-c19b42a1131c">upload.png</a></td></tr><tr><td><strong>Insurance</strong></td><td><em>Fixed fee added to every booking</em></td><td><a href="/brw/common-fields/deposit-and-insurance.md">Deposit &amp; Insurance</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FFNlMKp9kbkGG0u1jjN8e%2Finsurance.png?alt=media&amp;token=9aaa2b8e-a6e3-46d6-9f71-354390651a12">insurance.png</a></td></tr><tr><td><strong>Inventory &#x26; Quantity</strong></td><td><em>Stock count, named vehicles</em></td><td><a href="/brw/common-fields/inventory-and-quantity.md">Inventory &amp; Quantity</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FILbKMkGoOfwvdbjQE12f%2Fstock-rotation.png?alt=media&amp;token=169c6174-3a41-4b7b-bbb8-25482473558c">stock-rotation.png</a></td></tr><tr><td><strong>Booking Form</strong></td><td><em>Custom checkout fields</em></td><td><a href="/brw/common-fields/booking-form.md">Booking Form</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FFXS96CDy8zn0GDDQA6Di%2Fcontact-form.png?alt=media&amp;token=6f9dde63-12f0-4605-a3d0-a161ccc32c6b">contact-form.png</a></td></tr><tr><td><strong>Map / Place</strong></td><td><em>Maps pin on product page</em></td><td><a href="/brw/common-fields/display-and-layout/map-place.md">Map / Place</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2Fhpsva9YNet3BAONHVeVe%2Fmap.png?alt=media&amp;token=66b4fcb8-9002-42ef-bf68-18c83b22e9cf">map.png</a></td></tr><tr><td><strong>Display &#x26; Layout</strong></td><td><em>Price format, template, extra tab</em></td><td><a href="/brw/common-fields/display-and-layout.md">Display &amp; Layout</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FoIzHgd10O3ZJmyeLJZTN%2Fwebsite-design.png?alt=media&amp;token=4a4a1407-c804-4620-8747-dff829ad145b">website-design.png</a></td></tr><tr><td><strong>Product Content</strong></td><td><em>Specifications, features list</em></td><td><a href="/brw/common-fields/product-content.md">Product Content</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FbsaXxA9qTU90hwKE9DPr%2Fcopy-writing.png?alt=media&amp;token=93dcdd65-5a49-47b3-8d9d-e2097a64d5b2">copy-writing.png</a></td></tr></tbody></table>

## 6: Customize Fields in Product Editing

When you create a product and want to remove unnecessary fields, you can follow these steps in [Customize - Rental Type](/brw/customize-rental-type.md)
