For the complete documentation index, see llms.txt. This page is also available as Markdown.

By Hour

The Rental by Hour type calculates rental cost based on the number of hours between the pickup time and the dropoff time. It supports a base hourly rate, volume discounts per number of hours, and seasonal special pricing.

Use this type when your product is rented for a few hours at a time and the price per hour is the primary variable. For full-day rentals use Rental by Day. For combined day + hour pricing use Rental by Mixed.

How it differs from Rental by Day

Aspect
By Day
By Hour

Base price field

Regular price / Day

Regular price / Hour

Daily pricing plan

✓ Per-weekday prices

— Not available

GD duration unit

Day(s)

Hour(s)

ST price column

Price/Day (rt_price[])

Price/Hour (rt_price_hour[])

DST duration unit

Day(s)

Hour(s)

Booking conditions

Min/max days, preparation days

Min/max hours, preparation minutes, same-day only

Services applicable

/Day or /Order

/Hour or /Order

1: Quick Start

1

Add General fields

Read in overview

4

Shared Fields

The following fields are shared across multiple rental types.

5

Common Fields

The following fields are shared across all rental types.

6

Customize Fields in Product Editing

You can add/remove fields in product editing.

7

Publish

Set a WooCommerce Regular Price for display purposes, then click Publish. The actual booking price is always calculated by BRW settings.

2: Choose Rental Type

  • Step 1: Add new product

  • Step 2: Setup

    • Product data: Rental

    • Rental Type: Hour

3: Pricing Settings

Rental by Hour has three pricing layers. They stack in priority order — higher layers override lower ones when their conditions are met.

3.1: Regular price / Hour

The base price charged per hour of rental. This is the fallback price used whenever no Global Discount or Special Time rule applies.

Field
Description

Regular price / Hour regul_price_hour

Price per hour (WooCommerce price field). Displayed on the product page as $X / Hour.

Unlike Rental by Day, there is no "Daily pricing plan" for the Hour type. Use Special Time (ST) if you need different rates for specific date/time windows.

3.2: Global discount (GD)

Set volume discounts based on the number of hours booked. When a booking's duration falls within a GD row's range, the Price/Hour in that row replaces the regular price.

Column
Description

Price/Hour global_discount_price[]

The discounted price per hour applied when the duration matches the From–To range.

From (number) global_discount_duration_val_min[]

Minimum number of hours (inclusive) for this discount to apply.

To (number) global_discount_duration_val_max[]

Maximum number of hours (inclusive). Use a large number (e.g. 9999) for open-ended upper limits.

Duration global_discount_duration_type[]

Fixed to Hour(s) for the Hour rental type. Rows are matched against the booking's total hours.

lightbulb-exclamation

Click Add GD to add a row. Rows are drag-sortable. If multiple rows match, the plugin uses the first matching row (by sort order).

3.3: Special time (ST)

Define date/time windows with a different hourly rate — useful for peak seasons, holidays, or off-peak promotions. Each ST row can optionally contain its own volume discount table (DST).

ST columns:

Column
Description

Price/Hour rt_price_hour[]

The hourly rate applied when the booking falls inside this ST window. Replaces the regular price and GD.

Start Date rt_startdate[]

Start of the special pricing window — datetime picker (date + time).

End Date rt_enddate[]

End of the special pricing window — datetime picker (date + time).

Discount in special time (DST)

Optional nested volume discount table active only within this ST window. See below.

DST sub-table columns (per ST row):

Column
Description

Price/Hour rt_discount[i][price][]

Discounted price per hour within this ST window for the given hour range.

From (number) rt_discount[i][min][]

Minimum hours for this DST row to activate.

To (number) rt_discount[i][max][]

Maximum hours for this DST row to activate.

Duration rt_discount[i][duration_type][]

Fixed to Hour(s).

thumbtack-angle

Note: When a booking is inside an ST window, GD is ignored. DST acts as the discount table within the ST window. Click Add ST to add an ST row, then Add PST within each row to add DST entries.

3.4: 🏆Pricing Priority

When multiple pricing layers apply to a booking, the plugin uses the highest-priority rule that matches and ignores lower ones.

> > >

Rule
Condition
What it sets

Special Time (ST)

Booking window overlaps an ST date/time range

Replaces regular price with ST Price/Hour. GD is skipped.

DST (within ST)

Booking is in an ST window AND total hours match a DST row

Replaces ST price with DST Price/Hour.

Global Discount (GD)

Total booking hours fall within a GD row's From–To range (and no ST applies)

Replaces regular price with GD Price/Hour.

Regular price / Hour

No ST or GD matches

Base hourly rate applies.

square-check

4: Shared Fields

The following fields are shared across multiple rental types and are documented on the Shared Fields page to avoid repetition. Click any card to go directly to that section.

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.

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

Last updated