TaxFeeInfo

Requests

Syntax

The TaxFeeInfo message uses the following syntax:
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="timestamp"
            id="message_ID"
            partner="partner_account_name">
  <Property>
    <ID>HotelID</ID>
    <Taxes>
      <Tax>
        <RoomTypes>
          <RoomType id="RoomID_1"/>
          <RoomType id="RoomID_2"/>
        </RoomTypes>
        <RatePlans>
          <RatePlan id="PackageID_1"/>
          <RatePlan id="PackageID_2"/>
        </RatePlans>
        <BookingDates>
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </BookingDates>
        <CheckinDates>
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </CheckinDates>
        <CheckoutDates>
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </CheckoutDates>
        <StayDates application="[all|any|overlap]">
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </StayDates>
        <Type>[percent|amount]</Type>
        <Basis>[room|person]</Basis>
        <Period>[stay|night]</Period>
        <Currency>currency_code</Currency>
        <Amount>tax_amount</Amount>
        <ApplicableNights max="integer" excluded="integer"/>
        <LengthOfStay min="integer" max="integer"/>
        <!-- Use either <Amount> or <Brackets> -->
        <Brackets base_amount="tax_amount"/>
          <Bracket starts_at="nightly_rate" amount="tax_amount"/>
        </Brackets>
      </Tax>
    </Taxes>
    <Fees>
      <Fee>
        <RoomTypes>
          <RoomType id="RoomID_1"/>
          <RoomType id="RoomID_2"/>
        </RoomTypes>
        <RatePlans>
          <RatePlan id="PackageID_1"/>
          <RatePlan id="PackageID_2"/>
        </RatePlans>
        <BookingDates>
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </BookingDates>
        <CheckinDates>
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </CheckinDates>
        <CheckoutDates>
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </CheckoutDates>
        <StayDates application="[all|any|overlap]">
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </StayDates>
        <Type>[percent|amount]</Type>
        <Basis>[room|person]</Basis>
        <Period>[stay|night]</Period>
        <Currency>currency_code</Currency>
        <Amount>fee_amount</Amount>
        <ApplicableNights max="integer" excluded="integer"/>
        <LengthOfStay min="integer" max="integer"/>
        <!-- Use either <Amount> or <Brackets> -->
        <Brackets base_amount="tax_amount"/>
          <Bracket starts_at="nightly_rate" amount="tax_amount"/>
        </Brackets>
      </Fee>
    </Fees>
  </Property>
</TaxFeeInfo>

Elements & Attributes

The TaxFeeInfo message has the following elements and attributes:
Element / @Attribute Occurrences Type Description
TaxFeeInfo 1 Complex element The root element for a message defining taxes and fees for a single property.
TaxFeeInfo / @timestamp 1 DateTime The creation date and time of this message.
TaxFeeInfo / @id 1 String A unique identifier for this request message. This value is returned in the response message. Allowed characters are a-z, A-Z, 0-9, _ (underscore), and - (dash).
TaxFeeInfo / @partner 1 String The partner account for this message. This string value is the "Partner key" value listed on the Account settings page in Hotel Center.

Note: If you have a backend that provides feeds for multiple accounts, this value needs to match the ID attribute value specified in the <RequestorID> element of your <OTA_HotelRateAmountNotifRQ> and <OTA_HotelAvailNotifRQ> messages for the same account.

TaxFeeInfo / Property 1..n Property A container for defining taxes and fees for a single property.
TaxFeeInfo / Property / ID 1 String The unique identifier for the property. This value must match the Hotel ID specified using <id> in the <listing> element in the Hotel List Feed. The Hotel ID is also listed in Hotel Center.
TaxFeeInfo / Property / Taxes 0..1 Taxes Container for one or more <Tax> elements.
TaxFeeInfo / Property / Taxes / Tax 1..n Tax An individual tax that applies to the property.
TaxFeeInfo / Property / Taxes / Tax / RoomTypes 0..1 RoomTypes Container for a list of room types to which the tax applies. The tax is applied to each <RoomType> specified. If <RoomTypes> isn't specified, the tax applies to all rooms.
TaxFeeInfo / Property / Taxes / Tax / RoomTypes / RoomType 1..n RoomType Specifies a room type. A room type is defined in a <RoomData> element in a Transaction (Property Data) message, and as identified using its RoomID. (Its <RoomID> value is also referenced by the InvTypeCode attribute in OTA_HotelRateAmountNotifRQ messages.)
TaxFeeInfo / Property / Taxes / Tax / RoomTypes / RoomType / @id 1 String The unique identifier for the inventory (room type). This value maps to <RoomID> in a Transaction (Property Data) message. The maximum number of characters allowed is 50.
TaxFeeInfo / Property / Taxes / Tax / RatePlans 0..1 RatePlans Container for a list of rate plans to which the tax applies. If <RatePlans> isn't specified, the tax applies to all rate plans.
TaxFeeInfo / Property / Taxes / Tax / RatePlans / RatePlan 1..n RatePlan Specifies a rate plan. A rate plan is defined by a combination of package, rates, and availability, as defined in Transaction (Property Data), OTA_HotelRateAmountNotifRQ, and OTA_HotelAvailNotifRQ messages, and as identified by the PackageID.
TaxFeeInfo / Property / Taxes / Tax / RatePlans / RatePlan / @id 1 String The unique identifier for the rate plan. This value maps to the PackageID value in <PackageData> in a Transaction (Property Data) message, and in the RatePlanCode attribute in <StatusApplicationControl> in both <OTA_HotelRateAmountNotifRQ> and <OTA_HotelAvailNotifRQ> messages. The maximum number of characters allowed is 50.
TaxFeeInfo / Property / Taxes / Tax / BookingDates 0..1 BookingDates A container for one or more date ranges that define when booking must occur in order for the tax to be applied.
TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange 1..99 DateRange A date range specifying when booking must occur for the tax to be applied.
TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange / @start 0..1 Date The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.
TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange / @end 0..1 Date The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited in terms of an end date.
TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange / @days_of_week 0..1 String

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

Valid characters are:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

TaxFeeInfo / Property / Taxes / Tax / CheckinDates 0..1 CheckinDates A container for one or more date ranges that define when check-in must occur for the tax to be applied.
TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange 1..20 DateRange A date range specifying when check-in must occur for the tax to be applied.
TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange / @start 0..1 Date The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.
TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange / @end 0..1 Date The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited in terms of an end date.
TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange / @days_of_week 0..1 String

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

Valid characters are:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

TaxFeeInfo / Property / Taxes / Tax / CheckoutDates 0..1 CheckoutDates A container for one or more date ranges that define when check-out must occur for the tax to be applied.
TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange 1..20 DateRange A date range specifying when check-out must occur for the tax to be applied.
TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange / @start 0..1 Date The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.
TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange / @end 0..1 Date The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited in terms of an end date.
TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange / @days_of_week 0..1 String

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

Valid characters are:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

TaxFeeInfo / Property / Taxes / Tax / StayDates 0..1 StayDates

A container for one or more date ranges that determine whether the tax is applied, such as to accommodate seasonal discounts.

TaxFeeInfo / Property / Taxes / Tax / StayDates / @application 1 Enum

Describes how the tax should be applied.

Valid values are:

  • all: Applies the tax to each night in the itinerary if all dates in the itinerary overlap with the stay dates.
  • any: Applies the tax to all nights in the itinerary if any date in the itinerary overlaps with a date in the stay dates range.
  • overlap: Applies the tax only to those nights in the itinerary that overlap with a date in the stay dates range.

    Note: overlap is valid only when <Period>is set to night.

This attribute must always be specified.

TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange 1..99 DateRange A date range specifying dates when the tax is to be applied.
TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange / @start 0..1 Date The starting date (based on the property's time zone), inclusive, of the date range. This date must be before, or the same as, the end date. If start isn't specified, the date range is effectively unlimited in terms of a start date.
TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange / @end 0..1 Date The ending date (based on the property's time zone), inclusive, of the date range. This date must be the same as, or after, the start date. If end isn't specified, the date range is effectively unlimited in terms of an end date.
TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange / @days_of_week 0..1 String

The days of the week that are allowed in the date range. If not specified, all days are allowed in the date range. Each character in the string specifies a day. For example, "MTWHF" specifies that weekdays are allowed in the date range.

Valid characters are:

  • M for Monday
  • T for Tuesday
  • W for Wednesday
  • H for Thursday
  • F for Friday
  • S for Saturday
  • U for Sunday

Any character combination is valid.

TaxFeeInfo / Property / Taxes / Tax / Type 1 Enum

Valid values are:

  • percent: A percent of the total rate
  • amount: A flat amount to add to the final rate
TaxFeeInfo / Property / Taxes / Tax / Basis 1 Enum

Valid values are:

  • room: The <Amount> is applied to the room.
  • person: The <Amount> is applied per person. This value only applies if <Type> is set to amount.
TaxFeeInfo / Property / Taxes / Tax / Period 1 Enum

Valid values are:

  • stay: The <Amount> is added to the total rate of the stay.
  • night: The <Amount> is added per night of the stay.
TaxFeeInfo / Property / Taxes / Tax / Currency 0..1 String The three-letter currency code for the tax (for example: USD).
TaxFeeInfo / Property / Taxes / Tax / Amount 1 Float The value of the percent or amount of the tax.
TaxFeeInfo / Property / Taxes / Tax / ApplicableNights 0..1 ApplicableNights This value only applies if <Type> is set to amount and <Period> is set to night.

Constrains the number of nights for which a tax can be applied.

Specify either max or excluded but not both.

TaxFeeInfo / Property / Taxes / Tax / ApplicableNights / @max 0..1 Int The maximum number of nights for which this tax can be applied.

For example, if the tax should be applied for a maximum of 3 nights, set max to 3.

If max is greater than or equal to the length of stay, the tax is applied on each night of the itinerary.

TaxFeeInfo / Property / Taxes / Tax / ApplicableNights / @excluded 0..1 Int This tax can be applied for (LOS - excluded) nights, where LOS is the length of stay.

For example, if the tax should not be applied on the check-in date, set excluded to 1.

If excluded is greater than or equal to the length of stay, no tax is applied.

TaxFeeInfo / Property / Taxes / Tax / LengthOfStay 0..1 LengthOfStay Defines length of stay limits within which this tax can be applied. The tax is not applied when length of stay is outside of the min and max limits.
TaxFeeInfo / Property / Taxes / Tax / LengthOfStay / @min 0..1 Integer The minimum nights allowed in the stay for the tax to be applied. If this isn't specified, there is no minimum.
TaxFeeInfo / Property / Taxes / Tax / LengthOfStay / @max 0..1 Integer The maximum nights allowed in the stay for the tax to be applied. If this isn't specified, there is no maximum.
TaxFeeInfo / Property / Taxes / Tax / Brackets 0..1 Brackets Container for one or more <Bracket> elements. Defines a set of contiguous and non-overlapping tax brackets, e.g. Indian GST slab taxes.

This element is valid only when <Period> is set to night and <Amount> is not specified.

TaxFeeInfo / Property / Taxes / Tax / Brackets / @base_amount 0..1 Float The value of the percent or amount of tax, applied to nightly rates below the first bracket's starts_at value.
TaxFeeInfo / Property / Taxes / Tax / Brackets / Bracket 1..n Bracket Defines a tax bracket based on nightly rates.
TaxFeeInfo / Property / Taxes / Tax / Brackets / Bracket / @starts_at 1 Float

Defines the lower bound of a tax bracket. The upper bound is specified in the subsequent bracket's starts_at field. There is no upper bound for the last bracket.

A tax bracket is active when the nightly rate is greater than or equal to the bracket's starts_at value, and strictly less than the subsequent bracket's starts_at value.

This value must be strictly greater than 0.

TaxFeeInfo / Property / Taxes / Tax / Brackets / Bracket / @amount 1 Float The value of the percent or amount of tax applied to this tax bracket.
TaxFeeInfo / Property / Fees 0..1 Fees Container for one or more <Fee> elements.
TaxFeeInfo / Property / Fees / Fee 1..n Fee

An individual fee that applies to the property.

All child elements of <Tax> are also supported for <Fee> with the same syntax.

Examples

Basic message

A basic TaxFeeInfo message:

<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2020-05-18T16:20:00-04:00"
            id="12345678"
            partner="partner_account_name">
  <Property>
    <ID>Property_1</ID>
    <Taxes>
      <Tax>
        <Type>percent</Type>
        <Basis>room</Basis>
        <Period>stay</Period>
        <Amount>10.00</Amount>
      </Tax>
    </Taxes>
    <Fees>
      <Fee>
        <Type>amount</Type>
        <Basis>person</Basis>
        <Period>night</Period>
        <Currency>USD</Currency>
        <Amount>5.00</Amount>
      </Fee>
    </Fees>
  </Property>
</TaxFeeInfo>

Delete taxes

Delete all property-level taxes and fees for the specified hotel:

<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2020-05-18T16:20:00-04:00"
            id="12345678"
            partner="partner_account_name">
  <Property>
    <ID>Property_1</ID>
  </Property>
</TaxFeeInfo>

Slab tax

Indian GST slab tax, applied based on nightly rates. The tax brackets are:

  • No tax if the nightly rate is less than or equal to 1000.
  • 12% tax if the nightly rate is greater than 1000 and less than or equal to 7500.
  • 18% tax if the nightly rate is greater than 7500.
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2020-05-18T16:20:00-04:00"
            id="12345678"
            partner="partner_account_name">
  <Property>
    <ID>Property_1</ID>
    <Taxes>
      <Tax>
        <Type>percent</Type>
        <Basis>room</Basis>
        <Period>night</Period>
        <Brackets base_amount="0">
          <Bracket starts_at="1000.01" amount="12"/>
          <Bracket starts_at="7500.01" amount="18"/>
        </Brackets>
      </Tax>
    </Taxes>
  </Property>
</TaxFeeInfo>

Responses

Syntax

The TaxFeeInfoResponse message uses the following syntax:
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfoResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_account_name">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type">issue_description</Issue>
  </Issues>
</TaxFeeInfoResponse>

Elements & Attributes

The TaxFeeInfoResponse message has the following elements and attributes:
Element / @Attribute Occurrences Type Description
TaxFeeInfoResponse 1 Complex element The root element indicating the success or issues for a received TaxFeeInfo request message.
TaxFeeInfoResponse / @timestamp 1 DateTime The creation date and time of this message.
TaxFeeInfoResponse / @id 1 String The unique identifier from the associated TaxFeeInfo message.
TaxFeeInfoResponse / @partner 1 String The partner account for this message.
TaxFeeInfoResponse / Success 0..1 Success Indicates that the TaxFeeInfo message was processed successfully without warnings, errors, or failures.

Either <Success> or <Issues> is present in each message.

TaxFeeInfoResponse / Issues 0..1 Issues A container for one or more issues encountered while processing the TaxFeeInfo message.

Either <Success> or <Issues> is present in each message.

TaxFeeInfoResponse / Issues / Issue 1..n Issue The description of a warning, error, or failure encountered while processing the TaxFeeInfo message. Details on these issues can be found in Feed Status Error Messages.
TaxFeeInfoResponse / Issues / Issue / @code 1 Integer The identifier for the issue.
TaxFeeInfoResponse / Issues / Issue / @status 1 Enum

The type of issue encountered.

Valid values are warning, error, and failure.

Examples

Success

The following is a response to a successfully processed TaxFeeInfo message.

<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfoResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_account_name">
  <Success/>
</TaxFeeInfoResponse>

Issues

The following is a response to a TaxFeeInfo message not processed due to errors.

<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfoResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_account_name">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</TaxFeeInfoResponse>