The OTA_HotelResModifyRQ (Hotel Reservation Modify Request) is used to request changes to an existing booking. It supports lightweight updates (minor changes) as well as recalculation-triggering updates (major changes).
This feature is only supported for hotel bookings.
Already know OTA messages? Jump straight into TESTing.
OTA_HotelResModify API call Skip & Hit the Playground.
Purpose
This message is used to:
Apply minor changes (e.g., add booking comments, update a non-lead passenger name, change contact details) without recalculating prices.
Initiate major changes (e.g., room/board upgrades, date changes) that recalculate the booking and may change price and cancellation terms.
Carry partner and child references that tie the modification to the original booking.
Occupancy changes are not allowed at the moment.
Structure – Root Element
Key Attributes:
ResStatus: Quote (preview) or Commit (apply changes).
Version: OTA message version (e.g., “2008.1”).
PrimaryLangID: ISO 639 language code (optional).
xmlns: “http://www.opentravel.org/OTA/2003/05 ”.
Structure – Core Elements
POS (Point of Sale)
Identifies the requesting party and includes credentials.
< POS >
< Source >
< RequestorID ID_Context = "AxisData" Type = "22" ID = "TEST" />
</ Source >
< Source >
< RequestorID Type = "88" ID = "TEST" MessagePassword = "testpass" />
</ Source >
</ POS >
HotelResModify
Container for one modification transaction and its content. Very similar to the OTA_HotelResModifyRQ.
RoomStay
Defines the room(s) being modified and links them to guests and services.
< RoomStays >
< RoomStay RPH = "1" >
< RoomTypes >
< RoomType RoomTypeCode = "RM00CRMV00;0P000" />
</ RoomTypes >
< TimeSpan End = "2026-07-24" Start = "2026-07-17" />
< BasicPropertyInfo HotelCode = "AESPMI5L46" />
< ResGuestRPHs >
< ResGuestRPH RPH = "1" />
< ResGuestRPH RPH = "2" />
< ResGuestRPH RPH = "3" />
</ ResGuestRPHs >
< ServiceRPHs >
< ServiceRPH RPH = "1" />
</ ServiceRPHs >
</ RoomStay >
</ RoomStays >
Service
Non-room services linked to a room or guests (e.g., meal plan code at booking level).
< Services >
< Service ServiceInventoryCode = "BB" ServiceRPH = "1" />
</ Services >
ResGuest
Passenger details linked by ResGuestRPH.
< ResGuests >
< ResGuest AgeQualifyingCode = "10" ResGuestRPH = "1" >
< Profiles >
< ProfileInfo >
< Profile >
< Customer BirthDate = "1996-09-04" >
< PersonName >
< NamePrefix > Mr </ NamePrefix >
< GivenName > Bender </ GivenName >
< Surname > Bending </ Surname >
</ PersonName >
</ Customer >
</ Profile >
</ ProfileInfo >
</ Profiles >
< GuestCounts >
< GuestCount Count = "1" Age = "27" />
</ GuestCounts >
</ ResGuest >
< ResGuest AgeQualifyingCode = "10" ResGuestRPH = "2" >
< Profiles >
< ProfileInfo >
< Profile >
< Customer BirthDate = "1996-09-05" >
< PersonName >
< NamePrefix > Dr </ NamePrefix >
< GivenName > John </ GivenName >
< Surname > Zoidberg </ Surname >
</ PersonName >
</ Customer >
</ Profile >
</ ProfileInfo >
</ Profiles >
< GuestCounts >
< GuestCount Count = "1" Age = "27" />
</ GuestCounts >
</ ResGuest >
< ResGuest AgeQualifyingCode = "8" ResGuestRPH = "3" >
< Profiles >
< ProfileInfo >
< Profile >
< Customer BirthDate = "2018-09-06" >
< PersonName >
< NamePrefix > Jr </ NamePrefix >
< GivenName > Ben </ GivenName >
< Surname > Bending </ Surname >
</ PersonName >
</ Customer >
</ Profile >
</ ProfileInfo >
</ Profiles >
< GuestCounts >
< GuestCount Count = "1" Age = "6" />
</ GuestCounts >
</ ResGuest >
</ ResGuests >
ResGlobalInfo
Booking-level info such as comments and references.
< ResGlobalInfo >
< Comments >
< Comment Name = "Applicant Notice" >
< Text > late arrival - flight lands at 22:55 local time </ Text >
</ Comment >
< Comment Name = "Applicant Notice" >
< Text > Silent top floor non-smoking room please </ Text >
</ Comment >
</ Comments >
< HotelReservationIDs >
< HotelReservationID ResID_SourceContext = "Client" ResID_Type = "36" ResID_Value = "TEST_AXIS" />
< HotelReservationID Item_RPH = "1" ResID_SourceContext = "Client" ResID_Type = "37" ResID_Value = "TEST_AXIS_ac1" />
</ HotelReservationIDs >
</ ResGlobalInfo >
Process & Rules
Always start with an OTA_ReadRQ to fetch the current state before modifying.
Validate that immutable identifiers match the original booking : distributor reference, lead pax first/last name, ClientID, and HotelCode.
Use ResStatus="Quote" first to preview recalculation and upgrade offers; send ResStatus="Commit" to apply.
If the connected supplier does not support modifications , expect an error (e.g., modification not possible ) and perform cancel + rebook under the same distributor reference with a new child reference.
Minor changes (e.g., comments, non-lead pax name, contact details) do not trigger recalculation.
Major changes (e.g., room/board change, dates, optional extras) do trigger recalculation; pricing and cancel penalties may change.
Complete Example
< OTA_HotelResModifyRQ xmlns = "http://www.opentravel.org/OTA/2003/05" ResStatus = "Quote" Version = "2008.1" PrimaryLangID = "EN" >
< POS >
< Source >
< RequestorID ID_Context = "AxisData" Type = "22" ID = "TEST" />
</ Source >
< Source >
< RequestorID Type = "88" ID = "TEST" MessagePassword = "testpass" />
</ Source >
</ POS >
< HotelResModifies >
< HotelResModify >
< RoomStays >
< RoomStay RPH = "1" >
< RoomTypes >
< RoomType RoomTypeCode = "RM00CRMV00;0P000" />
</ RoomTypes >
< TimeSpan End = "2026-07-24" Start = "2026-07-17" />
< BasicPropertyInfo HotelCode = "AESPMI5L46" />
< ResGuestRPHs >
< ResGuestRPH RPH = "1" />
< ResGuestRPH RPH = "2" />
< ResGuestRPH RPH = "3" />
</ ResGuestRPHs >
< ServiceRPHs >
< ServiceRPH RPH = "1" />
</ ServiceRPHs >
</ RoomStay >
</ RoomStays >
< Services >
< Service ServiceInventoryCode = "BB" ServiceRPH = "1" />
</ Services >
< ResGuests >
< ResGuest AgeQualifyingCode = "10" ResGuestRPH = "1" >
< Profiles >
< ProfileInfo >
< Profile >
< Customer BirthDate = "1996-09-04" >
< PersonName >
< NamePrefix > Mr </ NamePrefix >
< GivenName > Bender </ GivenName >
< Surname > Bending </ Surname >
</ PersonName >
</ Customer >
</ Profile >
</ ProfileInfo >
</ Profiles >
< GuestCounts >
< GuestCount Count = "1" Age = "27" />
</ GuestCounts >
</ ResGuest >
< ResGuest AgeQualifyingCode = "10" ResGuestRPH = "2" >
< Profiles >
< ProfileInfo >
< Profile >
< Customer BirthDate = "1996-09-05" >
< PersonName >
< NamePrefix > Dr </ NamePrefix >
< GivenName > John </ GivenName >
< Surname > Zoidberg </ Surname >
</ PersonName >
</ Customer >
</ Profile >
</ ProfileInfo >
</ Profiles >
< GuestCounts >
< GuestCount Count = "1" Age = "27" />
</ GuestCounts >
</ ResGuest >
< ResGuest AgeQualifyingCode = "8" ResGuestRPH = "3" >
< Profiles >
< ProfileInfo >
< Profile >
< Customer BirthDate = "2018-09-06" >
< PersonName >
< NamePrefix > Jr </ NamePrefix >
< GivenName > Ben </ GivenName >
< Surname > Bending </ Surname >
</ PersonName >
</ Customer >
</ Profile >
</ ProfileInfo >
</ Profiles >
< GuestCounts >
< GuestCount Count = "1" Age = "6" />
</ GuestCounts >
</ ResGuest >
</ ResGuests >
< ResGlobalInfo >
< Comments >
< Comment Name = "Applicant Notice" >
< Text > late arrival - flight lands at 22:55 local time </ Text >
</ Comment >
< Comment Name = "Applicant Notice" >
< Text > Silent top floor non-smoking room please </ Text >
</ Comment >
</ Comments >
< HotelReservationIDs >
< HotelReservationID ResID_SourceContext = "Client" ResID_Type = "36" ResID_Value = "TEST_AXIS" />
< HotelReservationID Item_RPH = "1" ResID_SourceContext = "Client" ResID_Type = "37" ResID_Value = "TEST_AXIS_ac1" />
</ HotelReservationIDs >
</ ResGlobalInfo >
</ HotelResModify >
</ HotelResModifies >
</ OTA_HotelResModifyRQ >
See all 104 lines
Best Practices
Send Quote first; only Commit after user confirmation.
Keep references stable : do not change distributor/child references when not required.
Maintain consistent guest ordering and RPH linking between RoomStay, Services, and ResGuests.
Limit comments to operationally relevant notes; use Name="Applicant Notice" when adding comments.
Playground
OTA_HotelResModify API call Skip & Hit the Playground.
Use the examples to hit the TEST environment;