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 TST1ing.
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, occupancy/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.
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 = "TST1" />
</ Source >
< Source >
< RequestorID Type = "88" ID = "TST1" MessagePassword = "TST1password?" />
</ 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 = "RMSD000000;0P000" />
</ RoomTypes >
< TimeSpan End = "2026-07-24" Start = "2026-07-17" />
< BasicPropertyInfo HotelCode = "AMTSES08UI" />
< 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 = "TST1_AXIS" />
< HotelReservationID Item_RPH = "1" ResID_SourceContext = "Client" ResID_Type = "37" ResID_Value = "TST1_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 = "TST1" />
</ Source >
< Source >
< RequestorID Type = "88" ID = "TST1" MessagePassword = "TST1password?" />
</ Source >
</ POS >
< HotelResModifies >
< HotelResModify >
< RoomStays >
< RoomStay RPH = "1" >
< RoomTypes >
< RoomType RoomTypeCode = "RMSD000000;0P000" />
</ RoomTypes >
< TimeSpan End = "2026-07-24" Start = "2026-07-17" />
< BasicPropertyInfo HotelCode = "AMTSES08UI" />
< 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 = "TST1_AXIS" />
< HotelReservationID Item_RPH = "1" ResID_SourceContext = "Client" ResID_Type = "37" ResID_Value = "TST1_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 TST1 environment;