AI-generated Key Takeaways
- 
          The TaxFeeInfomessage is used to define and manage property-level taxes and fees for hotels via an overlay mechanism.
- 
          The core of the message involves <Property>elements each containing<Taxes>and<Fees>containers with identical structures for individual<Tax>and<Fee>definitions.
- 
          Taxes and fees can be applied based on various criteria including room types, rate plans, booking/check-in/check-out/stay dates, type of calculation (percent, amount), basis (room, person), period (stay, night), length of stay, and user countries. 
- 
          Advanced tax and fee structures like tiered pricing based on nightly rates ( <Brackets>) or guest age (<AgeBrackets>) are supported.
- 
          The TaxFeeInfoResponsemessage indicates whether the processing of the tax and fee information was successful or if there were any issues.
Requests
Syntax
The TaxFeeInfo message uses the following syntax:
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="timestamp"
            id="message_ID"
            partner="partner_key">
  <Property action="[overlay]">
    <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|cumulative_percent]</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>
        <AgeBrackets>
          <AdultCharge amount="tax_amount"/>
          <ChildAgeBrackets>
            <ChildAgeBracket max_age="max_age" amount="tax_amount"/>
          </ChildAgeBrackets>
        </AgeBrackets>
        <UserCountries type="[include|exclude]">
          <Country code="country_code1"/>
          <Country code="country_code2"/>
        </UserCountries>
        <!--"exclusive" parameter is optional -->
        <Rank exclusive="[true|false]">integer</Rank>
      </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|cumulative_percent]</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>
        <AgeBrackets>
          <AdultCharge amount="tax_amount"/>
          <ChildAgeBrackets>
            <ChildAgeBracket max_age="max_age" amount="tax_amount"/>
          </ChildAgeBrackets>
        </AgeBrackets>
        <UserCountries type="[include|exclude]">
          <Country code="country_code1"/>
          <Country code="country_code2"/>
        </UserCountries>
        <!--"exclusive" parameter is optional -->
        <Rank exclusive="[true|false]">integer</Rank>
      </Fee>
    </Fees>
  </Property>
</TaxFeeInfo>
Elements and 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  | 
| TaxFeeInfo / Property | 1..n | Property | A container for defining taxes and fees for a single property. | 
| TaxFeeInfo / Property / @action | 0..1 | string | Specifies how the update is applied. Only overlayis
        supported, and the default isoverlay. Any previousTaxesandFeesfor this property will be
        cleared before this update is applied. | 
| 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 theInvTypeCodeattribute inOTA_HotelRateAmountNotifRQmessages.) | 
| 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 the
        Transaction (Property Data) message's <PackageData>and
        theRatePlanCodevalue that is set under the<StatusApplicationControl>attribute 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 enddate. Ifstartisn'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 startdate. Ifendisn'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: 
 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 enddate. Ifstartisn'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 startdate. Ifendisn'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: 
 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 enddate. Ifstartisn'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 startdate. Ifendisn'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: 
 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: 
 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 enddate. Ifstartisn'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 startdate. Ifendisn'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: 
 Any character combination is valid. | 
| TaxFeeInfo / Property / Taxes / Tax / Type | 1 | enum | Valid values are: 
 
 | 
| TaxFeeInfo / Property / Taxes / Tax / Basis | 1 | enum | Valid values are: 
 | 
| TaxFeeInfo / Property / Taxes / Tax / Period | 1 | enum | Valid values are: 
 | 
| TaxFeeInfo / Property / Taxes / Tax / Currency | 0..1 | string | The three-letter currency code for the tax (for example: USD). Note: If  | 
| TaxFeeInfo / Property / Taxes / Tax / Amount | 0..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  | 
| TaxFeeInfo / Property / Taxes / Tax / ApplicableNights / @max | 0..1 | integer | <ApplicableNights max="N">indicates that nights
        after the first N nights should be excluded. | 
| TaxFeeInfo / Property / Taxes / Tax / ApplicableNights / @excluded | 0..1 | integer | <ApplicableNights excluded="N">indicates that the
        first N nights should be excluded. | 
| 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. For example: Indian GST slab taxes.This element is valid only when  | 
| 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_atvalue. | 
| 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  A tax bracket is active when the nightly rate is greater than or equal
        to the bracket's  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 / Taxes / Tax / AgeBrackets | 0..1 | AgeBrackets | Allows specifying a set of taxes based on the occupants' ages. This element is valid only when  | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / AdultCharge | 0..1 | AdultCharge | Container for specifying taxes for adults. | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / AdultCharge / @amount | 1 | float | The flat amount of tax applied for adults. | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets | 0..1 | ChildAgeBrackets | Container for holding one or more <ChildAgeBracket>elements. | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets / ChildAgeBracket | 1..n | ChildAgeBracket | Defines an age range for children and the corresponding tax amount. | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @max_age | 1 | integer | Defines the upper bound on a child's age. The lower bound is
        specified in the preceding bracket's  
 | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @amount | 1 | float | The flat amount of tax applied to children in this age range. | 
| TaxFeeInfo / Property / Taxes / Tax / UserCountries | 0..1 | UserCountries | Container for listing the user countries for which the tax is either included or excluded. If present, the tax will only be included or excluded for users from the specified countries. | 
| TaxFeeInfo / Property / Taxes / Tax / UserCountries / @type | 0..1 | enum | The type of UserCountries specification. Valid values are  If the UserCountries  Whereas if the UserCountries  If the UserCountries  | 
| TaxFeeInfo / Property / Taxes / Tax / UserCountries / Country | 1..n | Country | Defines one country in the list of UserCountries. | 
| TaxFeeInfo / Property / Taxes / Tax / UserCountries / Country / @code | 1 | string | A CLDR country code,
        such as DEorFR. Note that, for some
        countries, the CLDR country code isn't the same as the 2-letter ISO
        country code. Also, CLDR region codes are not supported. | 
| TaxFeeInfo / Property / Taxes / Tax / Rank | 1 | integer | A rank that specifies the order of application for a tax or fee.
        For example, a value of 2 means that the tax is applied second.
        This element should always be specified if  <Rank>2</Rank> Duplicate rank values are allowed among taxes and fees but this can result in undefined behavior where taxes and fees are applied in an arbitrary and cumulative manner. Alternatively, use the  If the  <Rank exclusive="true">1</Rank> Taxes are applied first before fees; therefore, if
          a tax and fee have the same rank and the fee has  To include all taxes and fees of the same rank avoid setting
           Taxes and fees without ranks are applied prior to all ranked entries. 
 | 
| 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  | 
Examples
There is a limit of 300 taxes and fees per property. Refer to the "Delete taxes" example to remove taxes and fees from a property.
Basic message
A basic TaxFeeInfo message:
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2024-05-18T16:20:00-04:00"
            id="12345678"
            partner="partner_key">
  <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="2024-06-16T16:20:00-04:00"
            id="12345678"
            partner="partner_key">
  <Property action="overlay"/>
    <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="2024-05-18T16:20:00-04:00"
            id="12345678"
            partner="partner_key">
  <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>
Age based taxes
Taxes applied based on the ages of the occupants:
- $20 tax for adult occupants.
- $10 tax for children between the ages of 11 and 17.
- $5 tax for children between the ages of 0 and 10.
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2024-05-18T16:20:00-04:00"
            id="12345678"
            partner="partner_key">
  <Property>
    <ID>Property_1</ID>
    <Taxes>
      <Tax>
        <Type>amount</Type>
        <Basis>person</Basis>
        <Period>night</Period>
        <AgeBrackets>
          <AdultCharge amount="20"/>
          <ChildAgeBrackets>
            <ChildAgeBracket max_age="10" amount="5"/>
            <ChildAgeBracket max_age="17" amount="10"/>
          </ChildAgeBrackets>
        </AgeBrackets>
      </Tax>
    </Taxes>
  </Property>
</TaxFeeInfo>
Overlapping stay dates ranges
When multiple stay date ranges are defined that are overlapping with each other, then the given stay date only needs to satisfy one of those ranges and not all of them. The stay date ranges must be specified in a single start and end range.
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2025-03-12T10:59:49+01:00"
            id="12345678"
            partner="partner_key">
  <Property action="overlay">
    <ID>987654</ID>
      <Taxes>
        <Tax>
          <Type>amount</Type>
          <Basis>person</Basis>
          <Period>night</Period>
          <RoomTypes>
            <RoomType id="RoomID_1"/>
            <RoomType id="RoomID_2"/>
          </RoomTypes>
          <StayDates application="any">
            <DateRange start="2025-06-16"/>
          </StayDates>
          <Currency>USD</Currency>
          <Amount>50</Amount>
        </Tax>
      </Taxes>
      <Fees>
        <Fee>
          <Type>amount</Type>
          <Basis>room</Basis>
          <Period>stay</Period>
          <StayDates application="any">
            <DateRange start="2025-03-12" end="2025-03-18"/>
          </StayDates>
          <Currency>USD</Currency>
          <Amount>200</Amount>
        </Fee>
        <Fee>
          <Type>amount</Type>
          <Basis>room</Basis>
          <Period>stay</Period>
          <StayDates application="any">
            <DateRange start="2025-03-19"/>
          </StayDates>
          <Currency>USD</Currency>
          <Amount>300</Amount>
      </Fee>
    </Fees>
  </Property>
</TaxFeeInfo>
Multiple taxes and fees with rank exclusive
The following is an example with multiple taxes and fees with
exclusive="true" and different ranks. Consider the following taxes and
fees that should be applied to the rate:
- A 5% occupancy tax with rank 1 exclusive="true".
- A 10 USD room service tax with rank 1.
- A 50 USD cleaning fee with rank 2 exclusive="true".
- A 2% amenities fee with rank 3.
The chronological order in which the taxes and fees are applied based on the
<Rank> are:
- The occupancy tax with exclusive="true"and rank 1 is applied first.
- The room service tax with rank 1 won't be applied because the previous occupancy tax is exclusive.
- The cleaning fee with exclusive="true"and rank 2 is applied next.
- The amenities fee with rank 3 is applied after the cleaning fee with rank 2.
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2024-02-29T12:00:00Z"
            id="tax-fee-id"
            partner="partner_key">
  <Property action="overlay">
    <ID>765432</ID>
    <Taxes>
      <Tax>
        <Type>percent</Type>
        <Amount>5</Amount>
        <Period>stay</Period>
        <Basis>room</Basis>
        <Rank exclusive="true">1</Rank>
      </Tax>
      <Tax>
        <Type>amount</Type>
        <Amount>10</Amount>
        <Period>night</Period>
        <Basis>room</Basis>
        <Currency>USD</Currency>
        <Rank>1</Rank>
      </Tax>
    </Taxes>
    <Fees>
      <Fee>
        <Type>amount</Type>
        <Amount>50</Amount>
        <Period>night</Period>
        <Basis>room</Basis>
        <Currency>USD</Currency>
        <Rank exclusive="true">2</Rank>
      </Fee>
      <Fee>
        <Type>percent</Type>
        <Amount>2</Amount>
        <Period>stay</Period>
        <Basis>room</Basis>
        <Rank>3</Rank>
      </Fee>
    </Fees>
  </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_key">
  <!-- Either Success or Issues will be populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code" status="issue_type">issue_description</Issue>
  </Issues>
</TaxFeeInfoResponse>
Elements and 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  | 
| TaxFeeInfoResponse / Issues | 0..1 | Issues | A container for one or more issues encountered while processing the TaxFeeInfomessage.Either  | 
| 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  | 
Examples
Success
The following is a response to a successfully processed TaxFeeInfo
 message.
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfoResponse timestamp="2024-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <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="2024-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</TaxFeeInfoResponse>