Price Mismatch or other Price Change Exceptions

  1. A price change occurred at the property before the user booked or currency conversion updates no longer match the availability from the time the room rates were returned in the response. When the rate does not match the database, a price mismatch error is returned.
  2. In cases where a "live" price change has not actually occurred but a price change or mismatch message is received, check all values being sent in the booking for accuracy.  Incorrect data/values submitted in the rateKey, roomTypeCode, rateCode or total cause a price mismatch at booking time. Each of these element values must match the user selection from the room availability response.
  3. A price mismatch error can also occur when the locale and currency does not match the geo location of the customerIpAddress. In these rare cases, handle the error by resubmitting the booking by omiiting the customerIpAddress for that request. If the booking is successful, the price mismatch was caused by an inaccurate geo matching of the submitted values. Surcharge values are calculated geographically based on these items and when they are not accurately matched, can cause surcharge values to mismatch the database rate for that assignment.

XML Response Example

<ns2:HotelRoomReservationResponse xmlns:ns2 = "http://v3.hotel.wsapi.ean.com/">
   <EanWsError>
      <itineraryId>XXXXXX</itineraryId>
      <handling>RECOVERABLE</handling>
      <category>PRICE_MISMATCH</category>
      <exceptionConditionId>1673</exceptionConditionId>
      <ErrorAttributes>
         <errorAttributesMap>
            <entry>
               <key>RATE_CHANGE</key>
               <value>121.89</value>
            </entry>
            <entry>
               <key>RATE_KEY</key>
               <value>4fc6fd3b-03b4-49e2-96cf-22b1aa4ad89b</value>
            </entry>
         </errorAttributesMap>
      </ErrorAttributes>
      <presentationMessage>Final Reservation Price Check failed before booking. (Rate Requested: 120.89(USD)) (New Rate: 121.89(USD)). Please try again with new rate.</presentationMessage>
      <verboseMessage>
         Final Reservation Price Check failed before booking QuoteKey: 4fc6fd3b-03b4-49e2-96cf-22b1aa4ad89b
         RatePlan: status = Available
         roomTypeId = 19304
         ratePlanId = 200245232
         ....  [general request data removed for brevity] ...
         Final Reservation Price Check failed before booking. (Rate Requested: 120.89(USD)) (New Rate: 121.89(USD)). Please try again with new rate.
      </verboseMessage>
      <ServerInfo
         serverTime = "13:52:51.848-0500"
         timestamp = "1318963971"
         instance = "167"/>
   </EanWsError>
   <customerSessionId>0AB81CA7-9955-D913-3162-AA666D9074FD</customerSessionId>
</ns2:HotelRoomReservationResponse>

JSON Response Example

{
    "HotelRoomReservationResponse" : {
        "EanWsError" : {
            "itineraryId" : XXXXX,
            "handling" : "RECOVERABLE",
            "category" : "PRICE_MISMATCH",
            "exceptionConditionId" : 1673,
            "ErrorAttributes" : {
                "errorAttributesMap" : {
                    "entry" : [{
                        "key" : "RATE_CHANGE",
                        "value" : 151.8
                    },
                    {
                        "key" : "RATE_KEY",
                        "value" : "d18ce59c-82ba-4dbd-8f9a-5b04ec2283bd"
                    }]
                }
            },
            "presentationMessage" : "Final Reservation Price Check failed before booking.
             (Rate Requested: 141.8(USD)) (New Rate: 151.8(USD)). Please try again with new rate.",
            "verboseMessage" : "Final Reservation Price Check failed before booking
           QuoteKey: d18ce59c-82ba-4dbd-8f9a-5b04ec2283bd \nRatePlan: status =
            Available\nroomTypeId = 8282\nratePlanId = 8282\nrateRuleId = 200584001\nratePlanType =
           Expedia CollectStandard\nratePlanName = Deluxe room with two double
           ....  [general request data removed for brevity] ...
           Reservation Price Check failed before booking. (Rate Requested: 141.8(USD)) (New Rate: 151.8(USD)).
           Please try again with new rate.",
            "ServerInfo" : {
                "@serverTime" : "17:06:46.659-0500",
                "@timestamp" : "1320358006",
                "@instance" : "42"
            }
        },
        "customerSessionId" : "0ABAA856-E9C5-4913-36B2-5C0F37906376"
    }
}

Force a Price Mismatch Error for Testing

To force a Price Mismatch error response, make a significant change to the original chargeableRate value in your booking request. The exception returned will allow you to test your algorithim for detecting the pricing error attributes to resend in the new booking request.

Also note that an itinerary ID is returned on these errors, which can be sent in the subsequent booking request. By using the same itinerary ID, fewer cancelled error requests will be included in affiliate stats and all attempts by the same user for the same booking request will be on the same itinerary.

Follow instructions on the reservation request for using itinerary ID in the re-submitted booking request.

Recover from the failed booking by handling the error as described:

  • Display the new rate returned by the error to allow the customer to accept before re-attempting the booking. This will prevent any customer service issues on expected charges.
  • Use the new rate returned by the error in your next booking attempt.