OfferPrice Functional Capabilities

OfferPrice Request

The IATA NDC 2017.2 OfferPriceRQ provides the ability to quote (price) for flights for the selected itinerary. The user needs to provide ResponseID, OfferID, OfferItemID, and PassengerRefs in the OfferPriceRQ to get a price quote for the selected flights in the OfferPriceRS.

attention

The OfferPriceRQ is a mandatory step before creating an Order using OrderCreateRQ.

NDC 2017.2 OfferPriceRQ supports the below modifiers:

OfferPriceRQ Input and Details

Corporate Contract Number (CCN)
It is not required to pass this in the request. This is processed internally and applied during itinerary pricing.

Normal Tariff Passenger (NTP)
It is not required to pass this in the request. This is processed internally and applied during itinerary pricing.

FQTV
Supported in NDC2017.2 OfferPriceRQ. /OfferPriceRQ/DataLists/PassengerList/Passenger/LoyaltyProgramAccount

Language Code
Provide the language code in /OfferPriceRQ/Parameters/Languages/LanguageCode. If the language code is not provided in the request, then English is the default language.

Country Code
Provide the country code in /OfferPriceRQ/PointOfSale/Location/CountryCode.

Currency Code
Provide the currency code in /OfferPriceRQ/Parameters/CurrCodes/FiledInCurrency/CurrCode.

Number Of Passengers
A maximum of 9 passengers is supported and the request needs at least 1 ADT passenger. The number of infants cannot be greater than adult passengers.

Passenger Type Code (PTC)
ADT, CHD, YTH, and INF are supported.

Offer and OfferItem
The requested Offer and OfferItem should be from earlier AirShopping and/or SeatAvailability and/or ServiceList response.

Some important elements or attributes in the NDC 2017.2 OfferPriceRQ

  • /OfferPriceRQ/Query/Offer/@ResponseID (retrieved from the previous response; for example: AirShoppingRS ShoppingResponseID/ResponseID)
  • /OfferPriceRQ/Query/Offer/OfferID (retrieved from the previous response; for example: AirShoppingRS)
  • /OfferPriceRQ/Query/Offer/OfferID/@Owner
  • /OfferPriceRQ/Query/Offer/OfferItem/@OfferItemID (retrieved from the previous response; for example: AirShoppingRS)
  • /OfferPriceRQ/Query/Offer/OfferItem/PassengerRefs
  • /OfferPriceRQ/DataLists/PassengerList/Passenger

OfferPriceRQ has various use cases with/without Seat and Ancillaries (e.g., meal, lounge, etc.):

1. OfferPriceRQ without Seat and Ancillaries

  • The OfferID , OfferItemID , and PassengerRefs should be used in the OfferPriceRQ ( PassengerRefs is mandatory as per the IATA schema)
  • The user should take OfferID and OfferItemID from the earlier AirShoppingRS
Copy
Copied
<Query>
	<!--OUTBOUND FLIGHT OFFER-->
	<Offer OfferID="R1QG1VYDKP-OfferID-1" Owner="YY" ResponseID="YY-2985803686064207509">
		<OfferItem OfferItemID="HZPY0W2D92-OfferItemID-1">
			<PassengerRefs>Pax01 Pax02</PassengerRefs>
		</OfferItem>
		<OfferItem OfferItemID="P9L5CC2T6Z-OfferItemID-2">
			<PassengerRefs>Pax03</PassengerRefs>
		</OfferItem>
	</Offer>

     From SeatAavailabilityRS

  • Each ALaCarteOfferItem (for each specific seat like 12C, 15A) is created in the response for all passengers
    /SeatAvailabilityRS/ALaCarteOffer/ALaCarteOfferItem
  • The ALaCarteOfferItem is created for each flight segment (not for each bound) and for each type of seat
    For example: ASPM, ASPW, ASPA (each of these types should create a different ALaCarteOfferItem to display the price details)

     From ServiceListRS

  • Each ALaCarteOfferItem is created in the response for all passengers
    /ServiceListRS/ALaCarteOffer/ALaCarteOfferItem
  • The ALaCarteOfferItem is created for each Flight segment (not for each bound) and each type of specific service
    Example: ASPM, ASPW, ASPA, MEAL, MLLW (each of these types should create a different ALaCarteOfferItem to display the price details)

2. OfferPriceRQ with Seat and Ancillaries

  • Flights Only - Select OfferID , OfferItemID from AirShoppingRS and provide in the /OfferPriceRQ/Query/Offer [1]
  • Seat and Ancillaries from ServiceListRS - Select /ALaCarteOffer/OfferID and /ALaCarteOfferItem/OfferItemID from the ServiceListRS and provide in the /OfferPriceRQ/Query/Offer [2]
  • Seat from SeatAvailabilityRS - Select /ALaCarteOffer/OfferID and /ALaCarteOfferItem/OfferItemID from the SeatAvailabilityRS and provide in the /OfferPriceRQ/Query/Offer [3]
attention

Multiple offers should be included to accommodate multiple offers from the earlier responses (AirShoppingRS, SeatAvailabilityRS, and ServiceListRS) as required.

Copy
Copied
<Query>
	<!--OUTBOUND FLIGHT OFFER-->
	<Offer OfferID="R1QG1VYDKP-OfferID-1" Owner="YY" ResponseID="YY-2985803686064207509">
		<OfferItem OfferItemID="HZPY0W2D92-OfferItemID-1">
			<PassengerRefs>Pax01 Pax02</PassengerRefs>
			<!--Two ADT passengers-->
		</OfferItem>
		<OfferItem OfferItemID="P9L5CC2T6Z-OfferItemID-2">
			<PassengerRefs>Pax03</PassengerRefs>
			<!--One CHD passenger-->
		</OfferItem>
	</Offer>
	<!--OUTBOUND SEAT OFFER. Each passenger is assigned a Seat.-->
	<Offer OfferID="SARS-R1QG1VYDKP-OfferID-1" Owner="YY" ResponseID="SARS-YY-2985803686064207509">
		<OfferItem OfferItemID="SARS-HZPY0W2D92-OfferItemID-1">
			<PassengerRefs>Pax01</PassengerRefs>
			<!--ADT passenger-->
		</OfferItem>
		<OfferItem OfferItemID="SARS-P9L5CC2T6Z-OfferItemID-2">
			<PassengerRefs>Pax02</PassengerRefs>
			<!--ADT passenger-->
		</OfferItem>
		<OfferItem OfferItemID="SARS-P9L5CC2T6Z-OfferItemID-3">
			<PassengerRefs>Pax03</PassengerRefs>
			<!--CHD passenger-->
		</OfferItem>
	</Offer>
	<!--INBOUND FLIGHT OFFER-->
	<Offer OfferID="J7IR8KXGT4-OfferID-23" Owner="YY" ResponseID="YY-2985803686064207509">
		<OfferItem OfferItemID="RISJQRR3QP-OfferItemID-45">
			<PassengerRefs>Pax01 Pax02</PassengerRefs>
		</OfferItem>
		<OfferItem OfferItemID="H3Q6S4Y6PE-OfferItemID-46">
			<PassengerRefs>Pax03</PassengerRefs>
		</OfferItem>
	</Offer>
	<!--OUTBOUND SERVICELIST-->
	<!--SERVICELIST Response return per segment and AlaCarteOfferItem with all passengers refrence.For connected segments, there are multiple ALaCarteOfferItems-->
	<Offer OfferID="SERVICELIST-R1QG1VYDKP-OfferID-1" Owner="YY" ResponseID="SERVICELIST YY-2985803686064207509">
		<!--FOR MEAL-->
		<OfferItem OfferItemID="SLRS-MEAL-HZPY0W2D92-OfferItemID-1">
			<PassengerRefs>Pax01 Pax02 Pax03</PassengerRefs>
		</OfferItem>
		<!--FOR LOUNGE-->
		<OfferItem OfferItemID="SLRS-LOUNGE-HZPY0W2D92-OfferItemID-2">
			<PassengerRefs>Pax01 Pax02 Pax03</PassengerRefs>
		</OfferItem>
	</Offer>
</Query>
<DataLists>
	<PassengerList>
		<Passenger PassengerID="Pax01">
			<PTC>ADT</PTC>
		</Passenger>
		<Passenger PassengerID="Pax02">
			<PTC>ADT</PTC>
		</Passenger>
		<Passenger PassengerID="Pax03">
			<PTC>CHD</PTC>
		</Passenger>
	</PassengerList>
</DataLists>
attention

Baggage information is returned in the AirShoppingRS and ServiceListRS. The user cannot request to quote a baggage price in the OfferPriceRQ.

  • /AirShoppingRS/DataLists/TermsList/Term/Descriptions/Description
  • /ServiceListRS/DataLists/BaggageAllowanceList/BaggageAllowance

OfferPrice Response

The OfferPriceRS service includes a detailed fare and tax breakdown per passenger type for the requested Offer based on availability.

The ResponseID, OfferID, OfferItemID, and ALaCarteOffer (for seat and ancillaries) are created in the OfferPriceRQ. These details are required for the follow-up transactions. The PricedOffer section displays the fare and tax breakdown excluding seat and ancillary price breakup. One or more OfferItem(s) are included in a PricedOffer and each OfferItem is unique with detailed fare and tax breakdown per PTC.

  • /OfferPriceRS/PricedOffer
  • /OfferPriceRS/PricedOffer/OfferItem/@OfferItemID
  • /OfferPriceRS/ShoppingResponseID/ResponseID

The OfferItemID is created per PTC type. There will be a single OfferItem for the same type of PTC (e.g., 2 ADTs).

ALaCarteOfferItem displays the fare and tax breakdown for seat and ancillary if the user selected in the OfferPriceRQ.

  • /OfferPriceRS/OtherOffers/ALaCarteOffer
  • /OfferPriceRS/OtherOffers/ALaCarteOffer/ALaCarteOfferItem
  • /OfferPriceRS/OtherOffers/ALaCarteOffer/ALaCarteOfferItem/@OfferItemID

The fare family details display in the PriceClass section. /OfferPriceRS/DataLists/PriceClassList/PriceClass

The seat and ancillaries’ descriptions display in the ServiceDefinition section. /OfferPriceRS/DataLists/ServiceDefinitionList/ServiceDefinition

The SeatCharacteristicCode displays in the SeatDefinition section. /OfferPriceRS/DataLists/SeatDefinitionList/SeatDefinition

OfferPriceRS with PricedOffer and OtherOffers:

  • /OfferPriceRS/PricedOffer/TotalPrice/DetailCurrencyPrice/Details/Detail [1] /SubTotal
  • /OfferPriceRS/PricedOffer/TotalPrice/DetailCurrencyPrice/Details/Detail [1] /Application = "ItinTotalFare"
  • /OfferPriceRS/PricedOffer/TotalPrice/DetailCurrencyPrice/Details/Detail [2] /SubTotal
  • /OfferPriceRS/PricedOffer/TotalPrice/DetailCurrencyPrice/Details/Detail [2] /Application = "AncillaryTotalFare"
Copy
Copied
<OfferPriceRS Version="2017.2">
	<Document>...</Document>
	<Success/>
	<ShoppingResponseID>...</ShoppingResponseID>
	<PricedOffer OfferID="XORHEW8ODT-OfferID-1" Owner="YY"> <!--Air Fare Breakdown-->
		<TotalPrice>
			<DetailCurrencyPrice>
				<Total Code="USD">4061.04</Total>
				<Details>
					<Detail>
						<SubTotal Code="USD">3754.18</SubTotal>
						<Application>ItinTotalFare</Application> <!--Total Itinerary Fare-->
					</Detail>
						<SubTotal Code="USD">306.86</SubTotal>
						<Application>AncillaryTotalFare</Application> <!--Total Ancillary Fare-->
				</Details>
			</DetailCurrencyPrice>
		</TotalPrice>
		<OfferItem OfferItemID="TRRX3J3KUT-OfferItemID-1"></OfferItem>
		<OfferItem OfferItemID="IWTCZZBHTV-OfferItemID-2"></OfferItem>
	</PricedOffer>
	<OtherOffers> <!--Seat and Ancillaries Price Breakdown-->
		<AlaCarteOffer OfferID="P0ZJEUB5QI-SRVC-OfferID-1" Owner="YY">
			<AlaCarteOfferItem OfferItemID="SEK3UFZYU2-SRVC-OfferID-1">...</AlaCarteOfferItem>
			<AlaCarteOfferItem OfferItemID="VDHWLBP7G6-SRVC-OfferID-2">...</AlaCarteOfferItem>
			<AlaCarteOfferItem OfferItemID="R7AR5B08WY-SRVC-OfferID-3">...</AlaCarteOfferItem>
			<AlaCarteOfferItem OfferItemID="OTWFBQI1KX-SRVC-OfferID-4">...</AlaCarteOfferItem>
			<AlaCarteOfferItem OfferItemID="CMHVRDCV0L-SRVC-OfferID-5">...</AlaCarteOfferItem>
			<AlaCarteOfferItem OfferItemID="AOO1LR42N7-SRVC-OfferID-6">...</AlaCarteOfferItem>
		</AlaCarteOffer>
	</OtherOffers>

OfferPriceRS with PricedOffer and ALaCarteOfferItem

Copy
Copied
<OfferPriceRS Version="2017.2">
	<Document>...</Document>
	<Success/>
	<ShoppingResponseID>...</ShoppingResponseID>
	<PricedOffer OfferID="OQ7IU45SD1-OfferID-1" Owner="YY">...</PricedOffer> <!--Air Fare Breakdown-->
	<OtherOffers>
		<AlaCarteOffer OfferID="KIYWZPQUI0-SRVC-OfferID-1" Owner="YY">
			<AlaCarteOfferItem OfferItemID="GQMKY1DA2O-SRVC-OfferItemID-1">
				<Eligibility>
					<PassengerRefs>FSFQT4TALL-PaxID-1</PassengerRefs>
					<SegmentRefs>R9H8XIHAFO-SEG-1</PassengerRefs>
				</Eligibility>
				<UnitPriceDetail>
					<TotalAmount>
						<DetailCurrencyPrice> <!--Seat Price Breakdown-->
							<Total Code="USD">65.51</Total>
						</DetailCurrencyPrice>
					</TotalAmount>
					<BaseAmount>58.0</BaseAmount>
					<Taxes>...</Taxes>
				</UnitPriceDetail>
				<Service ServiceID="WVNZQUBSGT-ServiceID-1">
					<ServiceDefinitionRed>RQSHGRFEWM-ServiceDefinition-1</ServiceDefinitionRed>
				</Service>
			</AlaCarteOfferItem>
			<AlaCarteOfferItem OfferItemID="ZWXNNGMWSS-SRVC-OfferItemID-2">
				<Eligibility>
					<PassengerRefs>FSFQT4TALL-PaxID-1</PassengerRefs>
					<SegmentRefs>R9H8XIHAFO-SEG-1</PassengerRefs>
				</Eligibility>
				<UnitPriceDetail>
					<TotalAmount>
						<DetailCurrencyPrice> <!--Ancillaries Price Breakdown-->
							<Total Code="USD">8.24</Total>
						</DetailCurrencyPrice>
					</TotalAmount>
					<BaseAmount>7.29</BaseAmount>
					<Taxes>...</Taxes>
				</UnitPriceDetail>
				<Service ServiceID="XES3YW43EI-ServiceID-2">
					<ServiceDefinitionRed>TIKH1EZ5DU-SerciceDefinition-2</ServiceDefinitionRed>
				</Service>
			</AlaCarteOfferItem>
		</AlaCarteOffer>
	</OtherOffers>
	<DataLists>...</DataLists>
	<Metadata>...</Metadata>
</OfferPriceRS>