Żądania
Składnia
Wiadomość TaxFeeInfo ma tę składnię:
<?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>
Elementy i atrybuty
Wiadomość TaxFeeInfo zawiera te elementy i atrybuty:
| Element / @Attribute | Wystąpienia | Typ | Opis | 
|---|---|---|---|
| TaxFeeInfo | 1 | Complex element | Element główny wiadomości określającej podatki i opłaty dla pojedynczego obiektu. | 
| TaxFeeInfo / @timestamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. | 
| TaxFeeInfo / @id | 1 | string | Unikalny identyfikator tej wiadomości z żądaniem. Ta wartość jest zwracana w wiadomości z odpowiedzią. Dozwolone znaki to a-z,A-Z,0-9,_(podkreślenie) i-(łącznik). | 
| TaxFeeInfo / @partner | 1 | string | Konto partnera, do którego należy ta wiadomość. Ta wartość ciągu znaków to wartość „Klucz partnera” podana na 
        stronie Ustawienia konta w Hotel Center. Uwaga: jeśli masz backend, który udostępnia pliki danych dla wielu kont, ta wartość musi być zgodna z wartością atrybutu  | 
| TaxFeeInfo / Property | 1..n | Property | Kontener do określania podatków i opłat dla pojedynczej usługi. | 
| TaxFeeInfo / Property / @action | 0..1 | string | Określa sposób zastosowania aktualizacji. Obsługiwana jest tylko wartość overlay, a domyślnie jest tooverlay. Wszelkie wcześniejszeTaxesiFeesdotyczące tej usługi zostaną wyczyszczone przed zastosowaniem tej aktualizacji. | 
| TaxFeeInfo / Property / ID | 1 | string | Unikalny identyfikator usługi. Ta wartość musi być zgodna z identyfikatorem hotelu określonym za pomocą elementu <id> w elemencie <listing> w pliku danych z listą hoteli. Identyfikator hotelu jest też podany w Hotel Center. | 
| TaxFeeInfo / Property / Taxes | 0..1 | Taxes | Kontener dla co najmniej 1 elementu <Tax>. | 
| TaxFeeInfo / Property / Taxes / Tax | 1..n | Tax | Podatek indywidualny, który ma zastosowanie do usługi. | 
| TaxFeeInfo / Property / Taxes / Tax / RoomTypes | 0..1 | RoomTypes | Kontener z listą rodzajów pokoi, do których ma zastosowanie podatek.
        Podatek jest naliczany od każdego określonego <RoomType>. Jeśli<RoomTypes>nie został określony, podatek obowiązuje we wszystkich pokojach. | 
| TaxFeeInfo / Property / Taxes / Tax / RoomTypes / RoomType | 1..n | RoomType | Określa typ pokoju. Typ pokoju jest zdefiniowany w elemencie <RoomData>w wiadomości Transakcja (dane o obiekcie) i jest identyfikowany za pomocą identyfikatora RoomID. (Jego wartość<RoomID>jest też używana w atrybucieInvTypeCodew wiadomościachOTA_HotelRateAmountNotifRQ). | 
| TaxFeeInfo / Property / Taxes / Tax / RoomTypes / RoomType / @id | 1 | string | Unikalny identyfikator asortymentu (rodzaju pokoju). Ta wartość jest mapowana na <RoomID>w komunikacie Transaction (Property Data). Maksymalna dozwolona liczba znaków to 50. | 
| TaxFeeInfo / Property / Taxes / Tax / RatePlans | 0..1 | RatePlans | Kontener z listą abonamentów, do których ma zastosowanie podatek.
        Jeśli nie określono wartości <RatePlans>, podatek obowiązuje w przypadku wszystkich planów cenowych. | 
| TaxFeeInfo / Property / Taxes / Tax / RatePlans / RatePlan | 1..n | RatePlan | Określa abonament. Plan cenowy jest określany przez kombinację pakietu, stawek i dostępności zdefiniowanych w wiadomościach Transaction (Property Data), OTA_HotelRateAmountNotifRQ i OTA_HotelAvailNotifRQ oraz zidentyfikowanych przez PackageID. | 
| TaxFeeInfo / Property / Taxes / Tax / RatePlans / RatePlan / @id | 1 | string | Unikalny identyfikator planu cenowego. Ta wartość jest mapowana na wartość PackageID w komunikacie Transaction (Property Data) w elementach <PackageData>iRatePlanCodeoraz na wartość ustawioną w atrybucie<StatusApplicationControl>w komunikatach<OTA_HotelRateAmountNotifRQ>i<OTA_HotelAvailNotifRQ>.
        Maksymalna dozwolona liczba znaków to 50. | 
| TaxFeeInfo / Property / Taxes / Tax / BookingDates | 0..1 | BookingDates | Kontener zawierający co najmniej jeden zakres dat określający, kiedy musi nastąpić rezerwacja, aby można było zastosować podatek. | 
| TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange | 1..99 | DateRange | Zakres dat określający, kiedy musi nastąpić rezerwacja, aby można było zastosować podatek. | 
| TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange / @start | 0..1 | Date | Data rozpoczęcia (według strefy czasowej usługi) zakresu dat. Ta data musi być wcześniejsza niż data endlub taka sama jak ona. Jeśli zasadastartnie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia. | 
| TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange / @end | 0..1 | Date | Data zakończenia zakresu dat (włącznie z tym dniem) w strefie czasowej usługi. Musi to być data startlub późniejsza. Jeśli nie podasz wartościend, zakres dat będzie w praktyce nieograniczony pod względem daty zakończenia. | 
| TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange / @days_of_week | 0..1 | string | Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie. Prawidłowe znaki to: 
 Dowolna kombinacja znaków jest prawidłowa. | 
| TaxFeeInfo / Property / Taxes / Tax / CheckinDates | 0..1 | CheckinDates | Kontener zawierający co najmniej jeden zakres dat określający, kiedy musi nastąpić zameldowanie, aby można było zastosować podatek. | 
| TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange | 1..20 | DateRange | Zakres dat określający, kiedy musi nastąpić zameldowanie, aby można było zastosować podatek. | 
| TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange / @start | 0..1 | Date | Data rozpoczęcia (według strefy czasowej usługi) zakresu dat. Ta data musi być wcześniejsza niż data endlub taka sama jak ona. Jeśli zasadastartnie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia. | 
| TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange / @end | 0..1 | Date | Data zakończenia zakresu dat (włącznie z tym dniem) w strefie czasowej usługi. Musi to być data startlub późniejsza. Jeśli nie podasz wartościend, zakres dat będzie w praktyce nieograniczony pod względem daty zakończenia. | 
| TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange / @days_of_week | 0..1 | string | Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie. Prawidłowe znaki to: 
 Dowolna kombinacja znaków jest prawidłowa. | 
| TaxFeeInfo / Property / Taxes / Tax / CheckoutDates | 0..1 | CheckoutDates | Kontener zawierający co najmniej jeden zakres dat określający, kiedy musi nastąpić wymeldowanie, aby zastosować podatek. | 
| TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange | 1..20 | DateRange | Zakres dat określający, kiedy musi nastąpić wymeldowanie, aby można było zastosować podatek. | 
| TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange / @start | 0..1 | Date | Data rozpoczęcia (według strefy czasowej usługi) zakresu dat. Ta data musi być wcześniejsza niż data endlub taka sama jak ona. Jeśli zasadastartnie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia. | 
| TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange / @end | 0..1 | Date | Data zakończenia zakresu dat (włącznie z tym dniem) w strefie czasowej usługi. Musi to być data startlub późniejsza. Jeśli nie podasz wartościend, zakres dat będzie w praktyce nieograniczony pod względem daty zakończenia. | 
| TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange / @days_of_week | 0..1 | string | Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie. Prawidłowe znaki to: 
 Dowolna kombinacja znaków jest prawidłowa. | 
| TaxFeeInfo / Property / Taxes / Tax / StayDates | 0..1 | StayDates | Kontener zawierający co najmniej 1 zakres dat, który określa, czy podatek jest stosowany, np. w celu uwzględnienia rabatów sezonowych. | 
| TaxFeeInfo / Property / Taxes / Tax / StayDates / @application | 1 | enum | Opisuje, jak należy naliczać podatek. Prawidłowe wartości to: 
 Ten atrybut musi być zawsze określony. | 
| TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange | 1..99 | DateRange | Zakres dat, w którym ma być stosowany podatek. | 
| TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange / @start | 0..1 | Date | Data rozpoczęcia (według strefy czasowej usługi) zakresu dat. Ta data musi być wcześniejsza niż data endlub taka sama jak ona. Jeśli zasadastartnie jest określona, zakres dat jest w zasadzie nieograniczony pod względem daty rozpoczęcia. | 
| TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange / @end | 0..1 | Date | Data zakończenia zakresu dat (włącznie z tym dniem) w strefie czasowej usługi. Musi to być data startlub późniejsza. Jeśli nie podasz wartościend, zakres dat będzie w praktyce nieograniczony pod względem daty zakończenia. | 
| TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange / @days_of_week | 0..1 | string | Dni tygodnia dozwolone w zakresie dat. Jeśli nie określisz dni, wszystkie dni w zakresie dat będą dozwolone. Każdy znak w ciągu określa dzień. Na przykład „MTWHF” oznacza, że w zakresie dat dozwolone są dni powszednie. Prawidłowe znaki to: 
 Dowolna kombinacja znaków jest prawidłowa. | 
| TaxFeeInfo / Property / Taxes / Tax / Type | 1 | enum | Prawidłowe wartości to: 
 Nie można określić wartości  | 
| TaxFeeInfo / Property / Taxes / Tax / Basis | 1 | enum | Prawidłowe wartości to: 
 | 
| TaxFeeInfo / Property / Taxes / Tax / Period | 1 | enum | Prawidłowe wartości to: 
 | 
| TaxFeeInfo / Property / Taxes / Tax / Currency | 0..1 | string | Trzyliterowy kod waluty podatku (np. PLN). Uwaga: jeśli nie określono parametru  | 
| TaxFeeInfo / Property / Taxes / Tax / Amount | 0..1 | float | Wartość procentowa lub kwota podatku. | 
| TaxFeeInfo / Property / Taxes / Tax / ApplicableNights | 0..1 | ApplicableNights | Ta wartość ma zastosowanie tylko wtedy, gdy element <Type>ma wartość amount, a element<Period>ma wartość night.Ogranicza liczbę nocy, w przypadku których można zastosować podatek. Określ wartość  | 
| TaxFeeInfo / Property / Taxes / Tax / ApplicableNights / @max | 0..1 | integer | <ApplicableNights max="N">oznacza, że noce po pierwszych N nocach powinny zostać wykluczone. | 
| TaxFeeInfo / Property / Taxes / Tax / ApplicableNights / @excluded | 0..1 | integer | <ApplicableNights excluded="N">oznacza, że pierwsze N nocy powinno zostać wykluczone. | 
| TaxFeeInfo / Property / Taxes / Tax / LengthOfStay | 0..1 | LengthOfStay | Określa limity długości pobytu, w ramach których można zastosować ten podatek. Podatek nie jest naliczany, gdy długość pobytu wykracza poza minimalny i maksymalny limit. | 
| TaxFeeInfo / Property / Taxes / Tax / LengthOfStay / @min | 0..1 | integer | Minimalna liczba nocy, podczas których obowiązuje podatek. Jeśli nie określisz tego parametru, nie będzie minimalnej wartości. | 
| TaxFeeInfo / Property / Taxes / Tax / LengthOfStay / @max | 0..1 | integer | Maksymalna liczba noclegów, w przypadku których można zastosować podatek. Jeśli nie podasz żadnej opcji, nie będzie limitu. | 
| TaxFeeInfo / Property / Taxes / Tax / Brackets | 0..1 | Brackets | Kontener dla co najmniej 1 elementu <Bracket>.
        Definiuje zestaw sąsiadujących i niepokrywających się przedziałów podatkowych. Na przykład: stawki podatku GST w Indiach.Ten element jest prawidłowy tylko wtedy, gdy element  | 
| TaxFeeInfo / Property / Taxes / Tax / Brackets / @base_amount | 0..1 | float | Wartość procentowa lub kwota podatku stosowana do cen za noc poniżej wartości starts_atpierwszego przedziału. | 
| TaxFeeInfo / Property / Taxes / Tax / Brackets / Bracket | 1..n | Bracket | Określa przedział podatkowy na podstawie cen za noc. | 
| TaxFeeInfo / Property / Taxes / Tax / Brackets / Bracket / @starts_at | 1 | float | Określa dolną granicę przedziału podatkowego. Górna granica jest określona w polu  Przedział podatkowy jest aktywny, gdy cena za noc jest większa lub równa wartości  Ta wartość musi być większa od 0. | 
| TaxFeeInfo / Property / Taxes / Tax / Brackets / Bracket / @amount | 1 | float | Wartość procentowa lub kwota podatku zastosowana w tym przedziale podatkowym. | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets | 0..1 | AgeBrackets | Umożliwia określenie zestawu podatków na podstawie wieku osób zajmujących pokój. Ten element jest prawidłowy tylko wtedy, gdy elementy  | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / AdultCharge | 0..1 | AdultCharge | Kontener do określania podatków dla osób dorosłych. | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / AdultCharge / @amount | 1 | float | Stała kwota podatku naliczana w przypadku osób dorosłych. | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets | 0..1 | ChildAgeBrackets | Kontener zawierający co najmniej 1 element <ChildAgeBracket>. | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets / ChildAgeBracket | 1..n | ChildAgeBracket | Określa przedział wiekowy dzieci i odpowiednią kwotę podatku. | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @max_age | 1 | integer | Określa górną granicę wieku dziecka. Dolna granica jest określona w polu  
 | 
| TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @amount | 1 | float | Stała kwota podatku stosowana w przypadku dzieci w tym przedziale wiekowym. | 
| TaxFeeInfo / Property / Taxes / Tax / UserCountries | 0..1 | UserCountries | Kontener zawierający listę krajów użytkowników, w których przypadku podatek jest wliczony lub nie jest wliczony w cenę. Jeśli podatek jest obecny, będzie on wliczany lub wykluczany tylko w przypadku użytkowników z określonych krajów. | 
| TaxFeeInfo / Property / Taxes / Tax / UserCountries / @type | 0..1 | enum | Typ specyfikacji UserCountries. Prawidłowe wartości to  Jeśli parametr UserCountries  Jeśli natomiast UserCountries  Jeśli parametr UserCountries  | 
| TaxFeeInfo / Property / Taxes / Tax / UserCountries / Country | 1..n | Country | Definiuje jeden kraj na liście UserCountries. | 
| TaxFeeInfo / Property / Taxes / Tax / UserCountries / Country / @code | 1 | string | kod kraju CLDR, np. DElubFR; Pamiętaj, że w przypadku niektórych krajów kod kraju CLDR nie jest taki sam jak 2-literowy kod kraju ISO. Kody regionów CLDR również nie są obsługiwane. | 
| TaxFeeInfo / Property / Taxes / Tax / Rank | 1 | integer | Ranga określająca kolejność stosowania podatku lub opłaty.
        Na przykład wartość 2 oznacza, że podatek jest stosowany jako drugi.
        Ten element powinien być zawsze określony, jeśli element  <Rank>2</Rank> Zduplikowane wartości pozycji są dozwolone w przypadku podatków i opłat, ale może to prowadzić do nieokreślonego zachowania, w którym podatki i opłaty są stosowane w sposób arbitralny i kumulatywny. Możesz też użyć parametru  Jeśli parametr  <Rank exclusive="true">1</Rank> Podatki są naliczane przed opłatami. Jeśli więc podatek i opłata mają ten sam priorytet, a opłata ma wartość  Aby uwzględnić wszystkie podatki i opłaty o tym samym priorytecie, unikaj ustawiania wartości  Podatki i opłaty bez rankingu są stosowane przed wszystkimi pozycjami z rankingiem. 
 | 
| TaxFeeInfo / Property / Fees | 0..1 | Fees | Kontener dla co najmniej 1 elementu <Fee>. | 
| TaxFeeInfo / Property / Fees / Fee | 1..n | Fee | Opłata indywidualna obowiązująca w przypadku obiektu.  Wszystkie elementy podrzędne elementu  | 
Przykłady
Obowiązuje limit 300 podatków i opłat na usługę. Aby usunąć podatki i opłaty z usługi, zapoznaj się z przykładem „Usuwanie podatków”.
Podstawowa wiadomość
Podstawowa wiadomość TaxFeeInfo:
<?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>
Usuwanie podatków
Usuń wszystkie podatki i opłaty na poziomie obiektu w przypadku określonego hotelu:
<?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>
Podatek progresywny
Podatek GST w Indiach, stosowany na podstawie stawek za noc. Przedziały podatkowe to:
- Brak podatku, jeśli cena za noc jest mniejsza lub równa 1000.
- 12% podatku, jeśli cena za noc jest większa niż 1000 PLN i mniejsza lub równa 7500 PLN.
- 18% podatku, jeśli cena za noc jest wyższa niż 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>
Podatki oparte na wieku
Podatki naliczane na podstawie wieku osób zajmujących pokój:
- Podatek w wysokości 20 USD za osobę dorosłą.
- Podatek w wysokości 10 USD w przypadku dzieci w wieku 11–17 lat.
- 5 USD podatku w przypadku dzieci w wieku 0–10 lat.
<?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>
Pokrywające się zakresy dat pobytu
Jeśli zdefiniowano wiele zakresów dat pobytu, które się pokrywają, podana data pobytu musi spełniać tylko jeden z tych zakresów, a nie wszystkie. Zakresy dat pobytu muszą być określone w jednym zakresie daty rozpoczęcia i zakończenia.
<?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>
Wiele podatków i opłat z wyłącznością na dany poziom
Oto przykład z wieloma podatkami i opłatami z exclusive="true" i różnymi rangami. Weź pod uwagę te podatki i opłaty, które należy zastosować do stawki:
- 5% podatek od zakwaterowania o randze 1 exclusive="true".
- Podatek za obsługę pokoi w wysokości 10 USD o randze 1.
- Opłata za sprzątanie w wysokości 50 USD z pozycją 2 exclusive="true".
- Opłata za udogodnienia w wysokości 2% z rangą 3.
Kolejność chronologiczna, w jakiej podatki i opłaty są naliczane na podstawie <Rank>:
- Najpierw stosowany jest podatek od zakwaterowania z exclusive="true"i rangą 1.
- Podatek od obsługi pokoi o randze 1 nie zostanie zastosowany, ponieważ poprzedni podatek od zakwaterowania jest wyłączny.
- Następnie stosowana jest opłata za sprzątanie w wysokości exclusive="true"i o randze 2.
- Opłata za udogodnienia o randze 3 jest naliczana po opłacie za sprzątanie o randze 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>
Odpowiedzi
Składnia
Wiadomość TaxFeeInfoResponse ma tę składnię:
<?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>
Elementy i atrybuty
Wiadomość TaxFeeInfoResponse ma te elementy i atrybuty:
| Element / @Attribute | Wystąpienia | Typ | Opis | 
|---|---|---|---|
| TaxFeeInfoResponse | 1 | Complex element | Element główny wskazujący, czy otrzymana wiadomość z żądaniem TaxFeeInfo została przetworzona prawidłowo, czy wystąpiły problemy. | 
| TaxFeeInfoResponse / @timestamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. | 
| TaxFeeInfoResponse / @id | 1 | string | Unikalny identyfikator z powiązanej wiadomości TaxFeeInfo. | 
| TaxFeeInfoResponse / @partner | 1 | string | Konto partnera, do którego należy ta wiadomość. | 
| TaxFeeInfoResponse / Success | 0..1 | Success | Wskazuje, że komunikat TaxFeeInfo został przetworzony bez ostrzeżeń, błędów ani niepowodzeń. W każdej wiadomości występuje właściwość  | 
| TaxFeeInfoResponse / Issues | 0..1 | Issues | Kontener na co najmniej 1 problem napotkany podczas przetwarzania wiadomości TaxFeeInfo.W każdej wiadomości występuje właściwość  | 
| TaxFeeInfoResponse / Issues / Issue | 1..n | Issue | Opis ostrzeżenia, błędu lub awarii napotkanych podczas przetwarzania wiadomości TaxFeeInfo. Szczegółowe informacje o tych problemach znajdziesz w artykule Komunikaty o błędach stanu pliku danych. | 
| TaxFeeInfoResponse / Issues / Issue / @code | 1 | integer | Identyfikator problemu. | 
| TaxFeeInfoResponse / Issues / Issue / @status | 1 | enum | Rodzaj napotkanego problemu. Prawidłowe wartości to  | 
Przykłady
Sukces
Poniżej znajduje się odpowiedź na prawidłowo przetworzoną wiadomość TaxFeeInfo.
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfoResponse timestamp="2024-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</TaxFeeInfoResponse>
Problemy
Oto odpowiedź na wiadomość TaxFeeInfo, która nie została przetworzona z powodu błędów.
<?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>