> 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-transportation.md).

# By Transportation

<figure><img src="/files/bJcM51Fc0aur0t942LhI" alt=""><figcaption></figcaption></figure>

The **Rental by Transportation** type has no per-day or per-km base rate. Instead, pricing is defined as a **route price matrix**: each combination of Pick-up location and Drop-off location has its own fixed price and estimated travel time. The customer selects their route and the system looks up the price automatically.

{% hint style="info" icon="lightbulb-exclamation" %}
Locations used in the price matrix must first be created in **BRW Settings → Locations**. Without this setup, the location selectors in the matrix will be empty.
{% endhint %}

| Aspect                      | Rental by Day          | Rental by Transportation                   |
| --------------------------- | ---------------------- | ------------------------------------------ |
| Pricing model               | Price per day          | Fixed price per route (pick-up × drop-off) |
| Base price field            | `regular_price_day`    | Route matrix (`price_location[]`)          |
| GD / ST                     | ✓                      | — Not available                            |
| Daily pricing plan          | ✓                      | — Not available                            |
| Locations / Surcharge       | ✓ (optional extra fee) | — Replaced by route matrix                 |
| Pick-up / Drop-off location | ✓                      | ✓ (required for route selection)           |
| Drop-off date               | ✓                      | ✓                                          |
| 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: Transportation

<figure><img src="/files/FnYIqb39VgKmkApNItIZ" alt=""><figcaption></figcaption></figure>

## 3: Pricing Settings

### 3.1 Location Price Matrix <a class="button primary">price-locations</a>

Define the fixed price for each pick-up and drop-off location pair. This is the **only** pricing mechanism for the Transportation type — there is no per-day, per-hour, or per-km rate.

{% hint style="danger" %}
All locations used in this matrix must be created in **BRW Settings → Manage Locations** first. If locations are not found in settings, the dropdowns will be empty.
{% endhint %}

| Column            | Meta key             | Description                                                                                                                   |
| ----------------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| Pick-up location  | `pickup_location[]`  | Dropdown selecting the origin location from globally defined locations. The customer chooses their departure point.           |
| Drop-off location | `dropoff_location[]` | Dropdown selecting the destination location. Together with pick-up, this defines the route.                                   |
| Price             | `price_location[]`   | Fixed price for this specific pick-up → drop-off route. Shown automatically when the customer selects this route combination. |
| Time (minute)     | `location_time[]`    | Estimated travel time in minutes for this route. Displayed to the customer as informational text (e.g. "\~45 min").           |

{% hint style="info" %}
**How it works:** In the booking form, the customer selects their pick-up and drop-off locations from dropdowns. The plugin matches the selection against the matrix and displays the price. If no matching row is found, no price is shown.
{% endhint %}

{% hint style="success" %}
**Symmetry:** A route from A → B and B → A are treated as separate rows. If you want to offer both directions, add two rows: one for A→B and one for B→A (they can have different prices).
{% endhint %}

## 4: Shared Fields

Transportation type uses pick-up/drop-off locations for route selection (not for extra fees — that's replaced by the price matrix).

<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>Pick-up location</strong></td><td><em>Show/rename on booking form</em></td><td data-object-fit="contain"><a href="/files/VRQp1fDrjb1yHNfjnyAC">/files/VRQp1fDrjb1yHNfjnyAC</a></td><td><a href="/pages/ROpztnKp5QzYsxP5DWDK">/pages/ROpztnKp5QzYsxP5DWDK</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="/files/PhpU87D8QCJO1pbkBJft">/files/PhpU87D8QCJO1pbkBJft</a></td><td><a href="/pages/ltbC4MGgvMzSq92SUZto">/pages/ltbC4MGgvMzSq92SUZto</a></td></tr><tr><td><strong>Round-trip</strong></td><td><em>Toggle + extra fee</em></td><td data-object-fit="contain"><a href="/files/Cdx8hnVoPefS5C4MAJ2Q">/files/Cdx8hnVoPefS5C4MAJ2Q</a></td><td><a href="/pages/5we2hwAvj3QZ1sgzCGNu">/pages/5we2hwAvj3QZ1sgzCGNu</a></td></tr><tr><td><strong>Guests options</strong></td><td><em>show/hide guest</em></td><td data-object-fit="contain"><a href="/files/pUrvaxIOVMndrA110lNm">/files/pUrvaxIOVMndrA110lNm</a></td><td><a href="/pages/cfkdHXKLMvGjuCQYgb6X">/pages/cfkdHXKLMvGjuCQYgb6X</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="/files/LIgxm2xMIr5RpWbiiIza">/files/LIgxm2xMIr5RpWbiiIza</a></td><td><a href="/pages/0SZ4g1xj4G8OqWD7Pkl4">/pages/0SZ4g1xj4G8OqWD7Pkl4</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="/files/EfKepudwm942CZujRdPN">/files/EfKepudwm942CZujRdPN</a></td><td><a href="/pages/R9BCAAY0ZePEoQ0S2Oyd">/pages/R9BCAAY0ZePEoQ0S2Oyd</a></td></tr><tr><td><strong>Drop-off date</strong></td><td><em>Show/rename on booking form</em></td><td data-object-fit="contain"><a href="/files/sJup7bwcHJog6g4DpS6r">/files/sJup7bwcHJog6g4DpS6r</a></td><td><a href="/pages/mJPOpCi9StgB7sXpXFXA">/pages/mJPOpCi9StgB7sXpXFXA</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="/files/RP6bC5CznDEnDTAZplUU">/files/RP6bC5CznDEnDTAZplUU</a></td><td><a href="/pages/j3PSoiHi0c2ZmunW3JtQ">/pages/j3PSoiHi0c2ZmunW3JtQ</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="/pages/se2SdKU1oGq12QOILLtJ">/pages/se2SdKU1oGq12QOILLtJ</a></td><td><a href="/files/sJup7bwcHJog6g4DpS6r">/files/sJup7bwcHJog6g4DpS6r</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="/pages/wDir5HOVkeGp8zrl58u1">/pages/wDir5HOVkeGp8zrl58u1</a></td><td data-object-fit="contain"><a href="/files/foB7SCXWfrz6YIBMxKEN">/files/foB7SCXWfrz6YIBMxKEN</a></td></tr><tr><td><strong>Deposit</strong></td><td><em>Fixed or percentage upfront payment</em></td><td><a href="/pages/unYXdPY2dLE1s9Ft0ZfC">/pages/unYXdPY2dLE1s9Ft0ZfC</a></td><td data-object-fit="contain"><a href="/files/M3Dd2NBocdXTDiMua10L">/files/M3Dd2NBocdXTDiMua10L</a></td></tr><tr><td><strong>Insurance</strong></td><td><em>Fixed fee added to every booking</em></td><td><a href="/pages/LxEaPJ5y15dPC7sHj2YB">/pages/LxEaPJ5y15dPC7sHj2YB</a></td><td data-object-fit="contain"><a href="/files/3SoE1Zpurcy3jQB8XDL0">/files/3SoE1Zpurcy3jQB8XDL0</a></td></tr><tr><td><strong>Inventory &#x26; Quantity</strong></td><td><em>Stock count, named vehicles</em></td><td><a href="/pages/RISVNcmzpxhDDvDCRwuJ">/pages/RISVNcmzpxhDDvDCRwuJ</a></td><td data-object-fit="contain"><a href="/files/SibMoPJmOEVt0RnSNZdP">/files/SibMoPJmOEVt0RnSNZdP</a></td></tr><tr><td><strong>Booking Form</strong></td><td><em>Custom checkout fields</em></td><td><a href="/pages/JVKPwpDA7CcnfWhAmlSV">/pages/JVKPwpDA7CcnfWhAmlSV</a></td><td data-object-fit="contain"><a href="/files/RIYx8VUjC3GavvqtQWo0">/files/RIYx8VUjC3GavvqtQWo0</a></td></tr><tr><td><strong>Map / Place</strong></td><td><em>Maps pin on product page</em></td><td><a href="/pages/V9Fs957iBL1hyL5oKwnD">/pages/V9Fs957iBL1hyL5oKwnD</a></td><td data-object-fit="contain"><a href="/files/TrfIY2OrNMClVGIwauDK">/files/TrfIY2OrNMClVGIwauDK</a></td></tr><tr><td><strong>Display &#x26; Layout</strong></td><td><em>Price format, template, extra tab</em></td><td><a href="/pages/kCaBW7VaB4tTWpA56rBc">/pages/kCaBW7VaB4tTWpA56rBc</a></td><td data-object-fit="contain"><a href="/files/0r8vbxkjli9ZBQqmj1xV">/files/0r8vbxkjli9ZBQqmj1xV</a></td></tr><tr><td><strong>Product Content</strong></td><td><em>Specifications, features list</em></td><td><a href="/pages/jlHZjKdIAPVSXDvqNIPw">/pages/jlHZjKdIAPVSXDvqNIPw</a></td><td data-object-fit="contain"><a href="/files/P4Z9VNYwCaf9JiUfuyyS">/files/P4Z9VNYwCaf9JiUfuyyS</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)
