# Travel Bundles API: Flights, Hotels, Activities | OnArrival

> Combine flights, hotels and activities in one trip, with connected booking records, payments and recovery when only part of the trip confirms.

Source: https://www.onarrival.com/bundles

---

# Book flights, hotels and activities as one trip.

Flights, hotels and activities in one checkout. Each part keeps its own booking reference and payment state, and if one supplier cannot confirm, the recovery steps are already there.

[Request a key](https://www.onarrival.com/signup) [Read the docs](https://docs.onarrival.com/)

travel products in one checkout

5-in-1

order history for confirmations and recovery

1

booking reference per trip

1

In short

## Bundles, in four steps.

Sell a whole trip in one checkout, while each supplier’s booking, payment and recovery plan stays visible.

1. Build Combine flights, hotels, activities, buses and cover into one trip.
2. Pay once One checkout and one trip reference for the traveller.
3. Confirm Each supplier confirms separately, and the order tracks every one.
4. Recover If a part fails or a flight changes, the order shows what needs attention.

Inventory

## Five products. One trip.

Combine products that each have their own stock and booking rules. Every supplier confirmation stays linked to the shared order.

FLIGHTS

### Get there

517+ airlines as one offer object: the long-haul leg that anchors the trip.

one reference

HOTELS

### Stay there

Compare matched hotel rates and link the stay to the trip. If the flight changes, check the hotel’s availability and change terms before moving dates.

linked booking records

EXPERIENCES

### Do something

Add tours, tickets and transfers that fit the trip, with each operator’s availability and confirmation terms.

Activities matched to the trip

BUSES

### Get around

2,800+ operators for the local and intercity legs no flight covers, like the sleeper to Porto after the flight to Lisbon.

Linked ground transport

FINTECH

### Pay & protect

Collect payment and track supplier payouts against the trip. Locked exchange rates and protection apply where included in the accepted offer.

locked FX

How it works

## A trip, in one call.

Send the trip’s parts and payment details through the bundle flow. The order tracks each confirmation and payment. If a supplier cannot confirm, recovery depends on the holds, cancellation terms and payment actions available for the affected parts.

[Read the reference](https://docs.onarrival.com/)

Illustrative bundle and prices

trip · OA-9F3K2L

01

Flight

BOM → DXB

$612

02

Hotel

3 nights

$540

03

Transfer

airport ↔ hotel

$48

04

Activity

safari × 2

$188

05

Insurance

CFAR + med

$74

Commit

All five components booked under one reference.

Recovery

Check each component and recover under its supplier terms.

Composition

## One checkout. Every booking tracked.

Set package prices, collect payment and track each supplier confirmation. Keep changes and cancellations connected to the whole trip.

01

### Bundle pricing engine

Set margins by product, apply promotions and build package prices. Supplier contracts and local rules decide when individual prices can be hidden.

Price

02

### One charge, multiple payouts

Link the customer’s payment to each supplier payment. Track pending, completed and refunded amounts separately, using the payment methods and exchange terms agreed for the trip.

Pay

03

### One booking reference

A single OA reference covers every part of the trip. Customer support sees the whole trip, not seven supplier tabs, and so does your customer.

Service

04

### Disruption cascade

When a flight changes, find the affected stays, transfers and activities. Present the available changes together, and check supplier terms and traveller approval before committing them.

Service

05

### Itinerary documents

Branded, print-ready trip documents and wallet passes for each bundle, updated automatically when any part changes.

Deliver

@media (prefers-reduced-motion: no-preference){ .oa-illo-in .pic-warn-fill{opacity:0; animation:picWarn 2.8s 0.25s ease-in-out both;} .oa-illo-in .pic-warn-text{animation:picWarnText 2.8s 0.25s ease-in-out both;} .oa-illo-in .pic-dep{transform-box:fill-box; animation:picRipple 1.5s ease-in-out both;} .pic-dep-1{animation-delay:0.95s} .pic-dep-2{animation-delay:1.20s} .pic-dep-3{animation-delay:1.45s} .pic-dep-4{animation-delay:1.70s} .oa-illo-in .pic-link{stroke-dasharray:3 3; animation:picWave 2.4s 0.4s ease-out both;} .oa-illo-in .pic-badge{transform-box:fill-box; transform-origin:center; opacity:0; animation:picBadge .55s 2.05s cubic-bezier(.2,1.4,.4,1) both;} .oa-illo-in .pic-wave{transform-box:fill-box; opacity:0; animation:picPulse 1.4s 0.35s ease-out both;} } @keyframes picWarn{0%{opacity:0}8%{opacity:.42}40%{opacity:.42}54%{opacity:.18}100%{opacity:.18}} @keyframes picWarnText{0%,7%{fill:var(--ink-3)}10%,100%{fill:var(--warn,#C2433A)}} @keyframes picRipple{ 0%,18%{transform:translateX(0); } 24%{transform:translateX(7px)} 34%{transform:translateX(0)} 100%{transform:translateX(0)} } @keyframes picWave{0%,12%{stroke-dashoffset:24; stroke:var(--rule-2)}20%{stroke:var(--warn,#C2433A)}40%{stroke:var(--accent)}60%{stroke-dashoffset:0; stroke:var(--rule-2)}100%{stroke-dashoffset:0; stroke:var(--rule-2)}} /* opacity-only: pic-badge is positioned by a transform attribute. */ @keyframes picBadge{from{opacity:0}to{opacity:1}} @keyframes picPulse{0%{opacity:0; transform:scaleX(.2)}6%{opacity:.9; transform:scaleX(1)}30%{opacity:0; transform:scaleX(1)}100%{opacity:0}} DISRUPTION CASCADE · OA-9F3K2LFlightBOM → DXB · cancelled✕Hotelcheck-in extended +1 night↻Transferre-timed to new arrival↻Activityre-dated · same operator↻Coverdates updated · per policy↻PROPOSED ASone coherent change

Capabilities

## Bundles API capabilities

Supply

- Any combination of products
- Cross-supplier orchestration
- Coordinated component booking
- Partial-failure recovery
- Multi-traveller per leg

Price

- Bundle pricing engine
- Margin layering by product
- Promo codes + voucher support
- Tax + fee normaliser
- Loyalty earn rules

Pay

- Single charge, multi settle
- Split payments (group trips)
- Pay-deposit, pay-balance flows
- Group-organiser collect
- Refund netting

Service

- One booking reference per bundle
- Itinerary doc generation
- Re-shop on disruption
- Per-component cancellation
- Customer support handoff

The handover

A complete trip needs more than a shared checkout. Each component needs a confirmation, a payment record and a plan if the booking fails.

Products per bundle5-in-1

Booking reference per trip1

History across components1

Who it's for

## Who uses Bundles?

Fintech

### Banks & super-apps

Sell complete trips inside your app, with one checkout, linked booking references and supplier support workflows.

EXAMPLE WORKFLOWPackage a flight, stay and activity.

AI agents

### Agentic booking

An AI agent proposes the trip. The booking service checks permissions and coordinates supplier confirmations through the bundle flow.

EXAMPLE WORKFLOWLet an agent propose a trip for approval.

OTA

### Established sellers

Coordinate supplier bookings, payment states and recovery through one bundle integration, with package pricing rules.

EXAMPLE WORKFLOWTrack each supplier confirmation together.

Questions

## Bundles: common questions

Something we haven’t covered? [Talk to the team](https://www.onarrival.com/company#contact). We can help you work through your integration.

**What happens if one component fails at booking time?**

The order tracks which parts confirmed and which need recovery. A hold can be released where supported. A confirmed part may need cancelling or refunding under its supplier’s terms. If a request times out, check its status before retrying, because the supplier may already have made the booking.

**Can travellers cancel just one part of a bundle?**

Yes. Each part cancels under its own penalty schedule, and the bundle re-prices if a package discount depended on the cancelled part. The customer sees the net effect before confirming.

**How does disruption handling work across components?**

A disruption on any part triggers a check across the trip. We propose one coherent set of changes (new flight, re-timed transfer, re-dated activity) that the traveller accepts or declines as a whole.

**Does bundling actually make the trip cheaper?**

Often. Package pricing rules (opaque pricing) let wholesale hotel rates sit inside a package below the public rate, legally. Your margin rules decide how much of that you keep or pass on.

**Is there really one reference across suppliers?**

One OA reference for the trip, linked internally to every supplier confirmation. Your support tools, the customer’s itinerary and our APIs all use the OA reference; supplier references stay available when needed.

Pairs well with

## Build the rest of the trip.

[Product Flights Search, book and manage flights through one API.](https://www.onarrival.com/flights) [Product Hotels Hotel booking with property and room mapping built in.](https://www.onarrival.com/hotels) [Product Experiences Search and book tours, activities and attraction tickets.](https://www.onarrival.com/experiences)

## Related reading

[All field notes →](https://www.onarrival.com/blog)

[Technical architecture · 11 min Why a travel cart needs more than one checkout call Flights, hotels and activities can expire or fail independently during checkout. A travel cart needs price checks, booking recovery and a payment plan for partial success. **Manan Vaghasiya**](https://www.onarrival.com/blog/the-travel-cart-problem) [Product engineering · 11 min The travel order lifecycle: from search to refund settlement A travel order records the offer, confirmation, booking changes and related payments. Keeping that history together makes partial cancellations and delayed refunds easier to handle. **Manan Vaghasiya**](https://www.onarrival.com/blog/travel-order-lifecycle)

Start building

Try Bundles with sandbox access.

[Request a key](https://www.onarrival.com/signup) [Read the docs](https://docs.onarrival.com/)
