---
title: Additional Services
description: Step-by-step setup for the Yatra Pro Additional Services module — create global or per-trip upsells (airport transfer, insurance, gear rental) with quantity controls and per-person, per-booking, or per-day pricing.
prev:
text: Google Calendar
link: /modules/google-calendar
next:
text: Trip Consent
link: /modules/trip-consent
---
# Additional Services PRO

Sell **optional add-ons** alongside your trips — airport transfers, travel insurance, gear rental, photography packages, single-supplement upgrades. Each service appears as a tick-box on the booking flow with the customer's currency and total updating live. Services can be attached to specific trips or offered globally.
## What you'll need
| Thing | Where to get it |
| --- | --- |
| Yatra Pro license | Yatra → License |
| Additional Services module enabled | Yatra → Modules → Additional Services |
| At least one published trip | Services attach to existing trips (or all of them). |
## Step 1 — Enable the module
1. Open Yatra → Modules.
2. Find **Additional Services** → toggle on.
3. A new menu item appears: Yatra → Additional Services (under the Trips group in the sidebar).
## Step 2 — Create a service
Open Yatra → Additional Services → + Add Service.

### Basics
| Field | Notes |
| --- | --- |
| **Name** | Customer-facing label (e.g. *"Airport Transfer"*, *"Travel Insurance"*). |
| **Description** | Shown under the name in the booking flow. Plain text, ~1–2 sentences. |
| **Image** | Optional. WordPress media picker. Appears as a thumbnail next to the service. |
| **Sort order** | Lower numbers appear first. Default `0`. |
| **Status** | `Published` / `Draft` / `Trash`. |
### Pricing
Two enums combine to define how the service is charged:
**Price Type:**
| Value | What it does |
| --- | --- |
| `fixed` | Flat amount in your site currency. *"$30 for the transfer"*. |
| `percentage` | Percentage of the trip base price. *"+5% for insurance"*. |
**Price Per:**
| Value | What it does |
| --- | --- |
| `person` | Multiplied by the number of travelers. *"$15 per traveler for the lunch"*. |
| `booking` | Charged once per booking, regardless of group size. *"$50 booking fee"*. |
| `day` | Multiplied by the trip duration in days. *"$10 per day for the bike rental"*. |
Combine them: a `fixed` × `person` service multiplies the fixed amount by travelers; a `percentage` × `booking` charges the percentage once.
### Quantity controls
| Field | Notes |
| --- | --- |
| **Allow quantity** | When on, the customer can pick a quantity (e.g. *2 airport transfers*). |
| **Min quantity** | Default 1. Useful when the service has a minimum order. |
| **Max quantity** | Per-booking cap. |
### Attach to trips
Two options:
1. **Specific trips** — searchable multi-select picker. The service only appears on these trips.
2. **All trips** — global toggle. Service appears on every trip's checkout.
## Step 3 — Verify the service appears at checkout
1. Open a trip you attached the service to in a private browser window.
2. Click **Book Now** → reach the *Add-ons* / *Extras* step.
3. The service appears as a tick-box (or stepper, when *Allow quantity* is on) with the calculated price.
4. Tick / pick a quantity → the price summary updates with the line item.
5. Complete checkout → the booking detail page (admin side) shows the service in the **Payment Summary** breakdown under *Additional Services*.

## The admin list
Default columns:
- **Service** (image + name).
- **Price** (formatted with type/per indicator, e.g. *"$30 per booking"* or *"+5% per person"*).
- **Used by** — number of trips this service is attached to.
- **Status** badge.
- **Sort order**.
Status filter pills: All / Published / Draft / Trash.
Bulk actions: Mark as Published / Draft / Trash / Delete permanently.
## Worked examples
| You want… | Price type | Price per | Allow quantity |
| --- | --- | --- | :-: |
| Flat $50 booking fee | `fixed` | `booking` | off |
| $30 airport transfer per person | `fixed` | `person` | off |
| Travel insurance @ 5% of trip price | `percentage` | `booking` | off |
| $10/day camera rental, customer picks how many days | `fixed` | `day` | on (max 14) |
| Multiple airport transfers (one each way, customer picks 1 / 2) | `fixed` | `booking` | on (max 2) |
## On the booking detail page
The booking's **Payment Summary** sidebar lists every added service as its own line:
```
Trip Base Price ............... $499.00
Airport Transfer × 2 .......... $60.00
Insurance (5%) ................ $24.95
Subtotal ...................... $583.95
```
Cancelling a booking restores the seats; refunding an additional service line happens via the gateway (Yatra doesn't selectively refund a single line item — it refunds the whole booking).
## Troubleshooting
**Service doesn't appear at checkout** — confirm the service status is *Published*, and that it's either attached to this specific trip OR set to *All trips*. *Draft* services are hidden from the public flow.
**Wrong line-item total** — re-check the *Price type* + *Price per* combo. A `percentage` × `person` service multiplies the percentage by traveler count, not by the trip price alone.
**Customer sees a quantity stepper they shouldn't** — toggle *Allow quantity* off and re-save.
**Service appears on wrong trips** — clear *Specific trips* and add only the trips you want, OR toggle *All trips* off.
## Useful links
- [Bookings → Payment Summary](/booking-settings#_1-booking-overview) — where service line items appear on the booking detail.
- [Hooks & filters](/hooks-filters) — `yatra_additional_services_calculate_price`, `yatra_additional_services_render_label`.
## Where to read more
- [All modules](/modules#additional-services) — module catalog.