Guides · Concepts

Shopping vs Orders

The single most important conceptual split in NDC. Get this wrong and the rest of the system makes no sense.

Shopping
Stateless · Produces offers

Nothing is reserved. Two simultaneous searches can return the same seat. Offers expire in seconds to minutes.

Orders
Stateful · Produces bookings

Persists at the airline. Inventory is held, ticketing is triggered, changes are audited.

Shopping

A request asks for available flights and returns a list of offers. Each offer is a price-and-itinerary package the airline is willing to sell, right now, for a bounded time. Nothing is reserved on the airline side.

Each offer carries

  • OfferID — opaque token unique to the airline.
  • ExpiresAt — usually 1–30 minutes from issue. After expiry the offer cannot be turned into an order.
  • Slices + segments — the itinerary.
  • Price — total + base fare + taxes, in a specific currency.
  • References to fare rules — refundability, change fees.
  • Sometimes: an OfferItem per branded option (Basic / Standard / Flex) or per ancillary.

Why offers expire

  1. Inventory — a seat at a given fare class only makes sense if the airline still has that inventory open by the time you book.
  2. Currency — mid-day FX movements would otherwise invalidate the price.
  3. L2B economics — long offer lifetimes encourage re-shopping, inflating the look-to-book ratio.
Shopping operations
AirShoppingRQ · FlightPriceRQ · OfferPriceRQ · ServiceListRQ · SeatAvailabilityRQ

Orders

An order is the persistent record at the airline that a passenger intends to fly. It is created from one or more priced offers, passenger data and — optionally — payment, which in Norba's model is the agency's own card and never the traveller's. See the Payment Flow guide for the three movements of money.

Order lifecycle

StateMeaning
pendingTransitional: the carrier returned the order before any order item existed. A held-but-unpaid reservation is not reported here — it comes back as confirmed.
confirmedThe carrier holds a reservation (PNR) for the order. It says nothing about payment: an order created without payment sits here as an unpaid hold until the ticketing deadline in expires_at, after which the carrier may cancel it. Payment state is in payments[].status.
ticketede-Ticket number issued. Passenger can check in. Only here does a ticket exist.
cancelledOrder has been cancelled. A refund event may follow.
refundedThe carrier has returned the money to the payment method submitted on the booking — your agency's own card, not the traveller's. You then refund your traveller through your own payment provider.
Order operations
OrderCreateRQ · OrderRetrieveRQ · OrderChangeRQ · OrderCancelRQ · OrderReshopRQ · OrderHistoryRQ

The bridge: OfferPrice

OfferPrice is the bridge between shopping and ordering. Take the cheap AirShopping OfferID, send it to the airline, and get a priced offer that survives long enough to book against (5–15 min). Some airlines guarantee price-lock; others may reject the order if the price moved.

AirShopping
→ OfferPrice
→ OrderCreate
→ Order confirmed
Shopping vs Orders: The Two API Lifecycles | Norba Docs