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_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
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 / @action
0..1
string
Specifies how the update is applied. Only overlay is supported, and the default is overlay . Any previous Taxes and Fees for 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 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 the Transaction (Property Data) message's <PackageData> and the RatePlanCode value 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
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
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
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
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
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
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 alldates 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
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
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
  • cumulative_percent: A percent of the total rate, taxes, and fees accumulated prior to the calculation of this tax or fee. If this value is specified, <Rank> must also be specified.
  • <Brackets> and <AgeBrackets> may not be specified with cumulative_percent as a type.

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).

Note:If <Currency> isn't specified but the <Amount> is specified then the <Currency> value defaults to base rate currency.

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 amountand <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
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 <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 / Taxes / Tax / AgeBrackets
0..1
AgeBrackets
Allows specifying a set of taxes based on the occupants' ages.

This element is valid only when <Brackets> and <Amount> are not specified, <Basis> is set to person and <Type> is set to amount .

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 max_age field + 1. The upper and lower bounds are both inclusive. The lower bound for the first bracket is 0.

max_age must be in the range 0 to 17 (inclusive).

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 include and exclude .

If the UserCountries type is set as include , the tax will only apply to users from the listed countries.

Whereas if the UserCountries type is exclude , the tax will only apply to users outside the listed countries.

If the UserCountries type is unset, we will treat it as include and the tax will only apply to users from the listed countries.

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 DE or FR . 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 <Type> is set to cumulative_percent . In general, this ordering is applied across both taxes and fees.

<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 "exclusive" parameter within the <Rank> to indicate that all taxes and fees of the same rank are applied to the rate. The default value is false and all taxes and fees with the same rank are applied to the rate in an arbitrary manner. "exclusive" is optional.

If the exclusive parameter is set to true , only the first tax listed within the <Tax> or the first fee listed within the <Fee> are applied to the rate.

<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 "exclusive" set to true , the tax still applies first. The best practice is for taxes and fees to be listed in the order in which they should be applied.

To include all taxes and fees of the same rank avoid setting exclusive to true .

Taxes and fees without ranks are applied prior to all ranked entries.

<Rank> must be in the range 1 to 99 (inclusive).

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

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:

  1. The occupancy tax with exclusive="true" and rank 1 is applied first.
  2. The room service tax with rank 1 won't be applied because the previous occupancy tax is exclusive.
  3. The cleaning fee with exclusive="true" and rank 2 is applied next.
  4. 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 <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="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> 
Design a Mobile Site
View Site in Mobile | Classic
Share by: