Rates

 

SiteConnect will send through updates for Rates using OTA_HotelRateAmountNotifRQ.

The booking channel processes the updates and responds with OTA_HotelRateAmountNotifRS as a receipt of success or failure.

Cancellation Policy, Hotel Policies, Service/Additional Fees and Taxes are not supported by SiteConnect Inventory and Rate API. These policies and fees/taxes should be configured internally within each channel/OTA admin extranet.


OTA_HotelRateAmountNotifRQ

An OTA_HotelRateAmountNotifRQ message will be pushed to a connected channel's web service after the value changes in SiteMinder.
The message can be used to update the rates for one or more room types for a single hotel. Specifically:

Basic SiteConnect Rate PUSH

  • Room rates

Additional (Optional) SiteConnect Rate PUSH Features

  • Included Occupancy

  • Extra Adult Rate

  • Extra Child Rate

  • Single Guest Discount

  • Inclusions

  • Currency

  • Occupancy Based Pricing (OBP)

  • Included Occupancy - value to be specified for a base room rate.

  • Single Guest Discount - rate to be specified relative to a higher occupancies base room rate amount.

  • Extra Adult/Child Rate - charges to be specified relative to the base room rate (with or without base occupancies defined).

  • Inclusions - It’s a description that refers to what has been included as part of a room rate, i.e., Wi-Fi connection, breakfast, etc.

  • Currency - specify the currency being sent from SiteConnect. Once it’s enabled, @CurrencyCode will be applied to all rate messages.

  • Occupancy Based Pricing (OBP) - If a channel has been certified for Occupancy Based Pricing, then all rates for that channel will be sent with OBP structure.

All the above-mentioned features are optional and should be discussed with the Partner Integrations team during your development phase if needed to satisfy any business logic/requirements.

Each OTA_HotelRateAmountNotifRQ message contains a single RateAmountMessages element which indicates the hotel to update using the RateAmountMessages/@HotelCode attribute. The RateAmountMessages/RateAmountMessage elements will contain the updates to process over a date range. There can be several RateAmountMessage updates per request, however, each request will be limited to one hotel and one room.


Basic Structure of the Message

<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2024-04-01T09:30:47+08:00" Version="1.0" EchoToken="abc123"> <RateAmountMessages HotelCode="HOTEL"> <RateAmountMessage> <StatusApplicationControl Start="2024-04-01" End="2024-04-01" InvTypeCode="A1K" RatePlanCode="BAR"/> <!-- Content omitted --> </RateAmountMessage> <RateAmountMessage> <StatusApplicationControl Start="2024-04-02" End="2024-04-02" InvTypeCode="A1K" RatePlanCode="BAR"/> <!-- Content omitted --> </RateAmountMessage> <RateAmountMessage> <StatusApplicationControl Start="2024-04-04" End="2024-04-04" InvTypeCode="A1K" RatePlanCode="BAR"/> <!-- Content omitted --> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>

Setting Rates Examples

SiteConnect will send through rate updates using the BaseByGuestAmt element. The value of @AmountAfterTax attribute will be a positive decimal value.

Setting Rate

This is the default rate XML you will receive if no additional rate features are used for your integration to SiteConnect.

<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2024-04-01T09:30:47+08:00" Version="1.0" EchoToken="abc123"> <RateAmountMessages HotelCode="HOTEL"> <RateAmountMessage> <StatusApplicationControl InvTypeCode="A1K" RatePlanCode="BAR" Start="2024-04-01" End="2024-04-01"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="123.00"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>

Setting Rate with Inclusions

<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2024-04-01T09:30:47+08:00" Version="1.0" EchoToken="abc123"> <RateAmountMessages HotelCode="HOTEL"> <RateAmountMessage> <StatusApplicationControl InvTypeCode="A1K" RatePlanCode="BAR" Start="2024-04-01" End="2024-04-01"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="123.00"/> </BaseByGuestAmts> <RateDescription> <Text>Buffet Breakfast and ticket to Museum</Text> </RateDescription> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>


Setting Rate with Additional Guest Amounts

Setting Rate with Included Occupancy

Setting Rate with Single Guest Discount without Included Occupancy

Setting Rate with Included Occupancy and Single Guest Discount


Setting Rate with Occupancy Based Pricing

See Occupancy Based Pricing Explanations for more details.


Setting Rate with Occupancy Based Pricing and Additional Guest Amounts


Rate Update Test Examples


OTA_HotelRateAmountNotifRQ Specification

Element

Attribute

Number

Type 

Description

Element

Attribute

Number

Type 

Description

OTA_HotelRateAmountNotifRQ

 

1

 

Root node

 

@TimeStamp

1

DateTime

Time of the transaction in xml schema dateTime format.

Format like yyyy-MM-dd'T'HH:mm:ssZZ (without fraction of a second)
i.e '2022-08-01T09:30:47+02:00'

See TimeStamp.

 

@Version

1

Decimal

Always "1.0"

 

@EchoToken

1

String

Globally unique identifier for the request, this will be reflected as an EchoToken in the response. See EchoTokens.

OTA_HotelRateAmountNotifRQ /
RateAmountMessages

 

1

 

Contains the rate messages for a given hotel.

   

@HotelCode

1

String

The code for the property whose availability is being updated. See HotelCode.

RateAmountMessages / RateAmountMessage

 

1..n

 

Contain details of a rate update for a time span.

RateAmountMessage / StatusApplicationControl

 

1

 

Contains date and room identification information.
This element must appear once in each RateAmountMessage element.
The StatusApplicationControl element is used to specify the room type, rate code and dates for which the update applies. The dates affected by the update are controlled by the mandatory @Start and @End attributes.

 

@InvTypeCode

1

String

Identifies the room.

 

@RatePlanCode

0..1

String

Identifies the rate.

 

@Start

1

Date

The start date for which the rate update is being set. This date is inclusive.

 

@End

1

Date

The end date for which the rate update is being set. This date is inclusive.

RateAmountMessage / Rates

 

1

 

 

Rates / Rate

 

1

 

 

Rate / BaseByGuestAmts

 

1

 

Base charge for a given number of guests.

BaseByGuestAmts / BaseByGuestAmt

 

1..n

 

Contains information about the rates.

 

@AmountAfterTax

1

Decimal

Rate Amount after tax. Positive decimal value.

 

@NumberOfGuests

0..1

Integer

Number of guests in room.

Mandatory when Occupancy Based Pricing is enabled.

 

@AgeQualifyingCode

0..1

Integer

SiteMinder supports the following values:
10 = Adult

Mandatory when Occupancy Based Pricing is enabled.

 

@CurrencyCode

0..1

String

The currency of the rate. This is an optional attribute can be enabled if requested.
This feature is configured at the channel level. Once it’s enabled, the @CurrencyCode will applies to all rate messages

Rate / AdditionalGuestAmounts

 

0..1

 

Additional charges for extra guests for a given age qualifying code.

AdditionalGuestAmounts /
AdditionalGuestAmount

 

1..2

 

Mandatory if AdditionalGuestAmounts is present

 

@AgeQualifyingCode

1

Integer

SiteMinder supports the following values:
10 = Adult
8   = Child

Note: If Occupancy Based Pricing is enabled, the AdditionalGuestAmount for AgeQualifyingCode=’10’ is no longer included in the XML

 

@Amount

1

Decimal

Extra charge amount.

 

@CurrencyCode

0..1

String

The currency of the extra guest amount. This is an optional attribute can be enabled if requested.
This feature is configured at the channel level. Once it’s enabled, the @CurrencyCode will applies to all rate messages.

Rate / RateDescription

 

0..1

 

Description of what the rate includes.

RateDescription / Text

 

1

String

The inclusion text. Max Length is 255 characters.


OTA_HotelRateAmountNotifRS

Success Response

Failure Response


OTA_HotelRateAmountNotifRS Specification

Element

Attribute

Number

Type

Description

Element

Attribute

Number

Type

Description

OTA_HotelRateAmountNotifRS

 

1

 

Root element

 

@EchoToken

1

String

Return the EchoToken from the request message. See EchoTokens.

 

@Version

1

Decimal

Always "1.0"

 

@TimeStamp

1

DateTime

Time of the transaction in xml schema dateTime format.

Format like yyyy-MM-dd'T'HH:mm:ssZZ (without fraction of a second)
i.e '2022-08-01T09:30:47+02:00'

See TimeStamp.

OTA_HotelRateAmountNotifRS / Success

 

0..1

 

Must be present ONLY if it was a successful response.
The Errors node must not be present if the Success node is present.

OTA_HotelRateAmountNotifRS / Errors

 

0..1

 

Contains a list of errors if the request failed to process.

Errors / Error

 

1..n

 

Mandatory if Errors present.

 

@Type

1

String

Mandatory if Errors present.
Any type from the OTA Error Warning Types (EWT) table can be used. In particular, the following types are recommended:

1: Unknown
12: Processing exception

The use of the following types under their respective conditions is mandatory:

4: Authentication (If username and password are not authenticated)
The text must be “Invalid Username and/or Password” in English language.

6: Authorisation (If authenticated username is not authorised to alter hotel data)
The text must be “Hotel not found for HotelCode=XXXXXX” in English language, replacing XXXXXX with HotelCode received in the OTA_HotelAvailRQ.

 

@Code

0..1

String

Any code from the OTA Error Codes (ERR) table can be used. Using the following codes under their respective conditions is mandatory:

448: System error
392: Invalid hotel code
402: Invalid room type
783: Room or rate not found
249: Invalid rate code

For PDP only:
137: Adult occupancy mismatch
This must be returned when an Per Day Pricing Based Pricing OTA_HotelRateAmountNotifRQ is sent where the higher NumberOfGuests sent is either below or above the included occupancy of the room. The text must be “Invalid included occupancy” in English language.

For OBP only:
397: Invalid number of adults
This must be returned when an Occupancy Based Pricing OTA_HotelRateAmountNotifRQ is sent where the total NumberOfGuests sent is either below or above the maximum adult occupancy of the room. The text must be “Invalid number of adults” in English language.