Guides · Concepts

Shopping vs Orders

Shopping finds and prices offers; orders are bookings. Everything else follows from this split.

D-212
SHOPPINGORDERSPRICEPNRShopping: offersNothing is reservedEach offer expiresAfter expires_at, search againPrice, then bookThe priced offer becomes an orderOrders: bookingsHeld at the airline; pay now or laterPNR (Passenger Name Record)Changed or cancelled later
Shopping
Stateless · Produces offers

Nothing is reserved. Offers expire within minutes.

Orders
Stateful · Produces bookings

Held at the airline: booked, paid, ticketed, changed.

Shopping

A search returns offers: an itinerary and a price the airline will sell for a limited time. Nothing is held.

Each offer carries

  • baggage_included and ancillaries_included — the fare's bags and extras, with bag weight and size limits.
  • expires_at — after it, search again.
  • fare_family and fare_rules — the branded fare and its change and refund rules.
  • offer_id — what you price and book with.
  • slices[] and their segments[] — the itinerary.
  • total_amount and currency — for all passengers; passengers[] breaks it down.
Shopping endpoints
POST /v1/shopping/offers · POST /v1/offers/price · GET /v1/offers/{offerID}/seats · GET /v1/offers/{offerID}/services

Orders

An order is the booking at the airline, made from a priced offer and passengers, with or without payment. See the Payment Flow and Orders Lifecycle guides.

Order lifecycle

StateMeaning
pendingTransitional, before the airline confirms the booking.
confirmedBooked at the airline. An unpaid hold stays here until expires_at, then is cancelled.
ticketedTickets issued.
partially_cancelledSome flights cancelled; the rest stands.
disruptedThe airline changed or cancelled a flight; read the order.
cancelledClosed at the airline.
refundedRefund recorded; the airline returns it to the card that paid.
failedThe booking or its payment did not complete.
Order endpoints
POST /v1/orders · GET /v1/orders/{orderID} · POST /v1/orders/{orderID}/commit · POST /v1/orders/{orderID}/change · POST /v1/orders/{orderID}/cancel

The bridge: OfferPrice

Send the search's offer_id to POST /v1/offers/price. The airline confirms the current price and returns a new offer_id, valid until price_guaranteed_until. Book with that id; a search id or a lapsed priced offer is refused.

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