Informacje podatkowe

Żą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 / @Atrybut 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 ID określoną w elemencie <RequestorID> wiadomości <OTA_HotelRateAmountNotifRQ> i <OTA_HotelAvailNotifRQ> dla tego samego konta.

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 to overlay. Wszelkie wcześniejsze TaxesFees dotyczą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 <RoomType> określonego. 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 pomieszczenia. 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 atrybucie InvTypeCode w wiadomościach OTA_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ą planów taryfowych, do których ma zastosowanie podatek. Jeśli nie podasz wartości <RatePlans>, podatek będzie obowiązywać we wszystkich pakietach 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 identyfikowanych 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 polach <PackageData> i RatePlanCode oraz 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 zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie 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) na podstawie strefy czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie 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:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w przypadku czwartku
  • F w piątek
  • S w sobotę
  • U w niedzielę

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 zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie 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) na podstawie strefy czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie 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:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w przypadku czwartku
  • F w piątek
  • S w sobotę
  • U w niedzielę

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 zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie 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) na podstawie strefy czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie 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:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w przypadku czwartku
  • F w piątek
  • S w sobotę
  • U w niedzielę

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:

  • all: podatek jest naliczany za każdą noc w planie podróży, jeśli wszystkie daty w planie podróży pokrywają się z datami pobytu.
  • any: stosuje podatek do wszystkich nocy w harmonogramie, jeśli jakakolwiek data w harmonogramie pokrywa się z datą w zakresie dat pobytu.
  • overlap: podatek jest naliczany tylko za te noce w planie podróży, które pokrywają się z datami pobytu.

    Uwaga: wartość overlap jest prawidłowa tylko wtedy, gdy <Period> ma wartość night.

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 zakresu dat (włącznie) w strefie czasowej usługi. Ta data musi być wcześniejsza niż data end lub taka sama jak ona. Jeśli zasada start nie 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) na podstawie strefy czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, zakres dat będzie w zasadzie 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:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w przypadku czwartku
  • F w piątek
  • S w sobotę
  • U w niedzielę

Dowolna kombinacja znaków jest prawidłowa.

TaxFeeInfo / Property / Taxes / Tax / Type 1 enum

Prawidłowe wartości to:

  • percent: Procent całkowitej stawki
  • amount: stała kwota do dodania do stawki końcowej;
  • cumulative_percent: Procent łącznej stawki, podatków i opłat naliczonych przed obliczeniem tego podatku lub opłaty. Jeśli ta wartość jest określona, musisz też podać wartość <Rank>.
  • Nie można określić wartości <Brackets><AgeBrackets>, jeśli typem jest cumulative_percent.

TaxFeeInfo / Property / Taxes / Tax / Basis 1 enum

Prawidłowe wartości to:

  • room: Do pokoju zastosowano <Amount>.
  • person: <Amount> jest naliczana od osoby. Ta wartość jest stosowana tylko wtedy, gdy <Type> ma wartość amount.
TaxFeeInfo / Property / Taxes / Tax / Period 1 enum

Prawidłowe wartości to:

  • stay: Kwota <Amount> jest dodawana do łącznej ceny pobytu.
  • night: <Amount> jest doliczana za każdą noc pobytu.
TaxFeeInfo / Property / Taxes / Tax / Currency 0..1 string Trzyliterowy kod waluty podatku (np. PLN).

Uwaga: jeśli nie określono parametru <Currency>, ale określono parametr <Amount>, wartość parametru <Currency> jest domyślnie ustawiana na walutę stawki podstawowej.

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ść max lub excluded, ale nie obie jednocześnie.

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 należy wykluczyć pierwsze N nocy.
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 wartości minimalnej.
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: indyjskie stawki podatku GST.

Ten element jest prawidłowy tylko wtedy, gdy element <Period> ma wartość night, a element <Amount> nie jest określony.

TaxFeeInfo / Property / Taxes / Tax / Brackets / @base_amount 0..1 float Wartość procentowa lub kwota podatku stosowana do stawek za nocleg poniżej wartości starts_at pierwszego 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 starts_at kolejnego przedziału. Ostatni przedział nie ma górnego limitu.

Przedział podatkowy jest aktywny, gdy cena za noc jest większa lub równa wartości starts_at przedziału i ściśle mniejsza niż wartość starts_at kolejnego przedziału.

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 <Brackets> i <Amount> nie są określone, element <Basis> ma wartość person, a element <Type> ma wartość amount.

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 max_age poprzedniego przedziału + 1. Obie granice są włączone. Dolna granica pierwszego przedziału to 0.

max_age musi mieścić się w zakresie od 0 do 17 (włącznie).

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

Jeśli parametr UserCountries type ma wartość include, podatek będzie naliczany tylko w przypadku użytkowników z wymienionych krajów.

Jeśli natomiast UserCountries type ma wartość exclude, podatek będzie obowiązywać tylko w przypadku użytkowników spoza wymienionych krajów.

Jeśli parametr UserCountries type nie jest ustawiony, potraktujemy go jako include, a podatek będzie obowiązywać tylko w przypadku użytkowników z wymienionych krajów.

TaxFeeInfo / Property / Taxes / Tax / UserCountries / Country 1..n Country Określa jeden kraj na liście UserCountries.
TaxFeeInfo / Property / Taxes / Tax / UserCountries / Country / @code 1 string Kod kraju CLDR, np. DE lub FR. 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 nie są też 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 <Type> ma wartość cumulative_percent. Zazwyczaj kolejność ta jest stosowana zarówno w przypadku podatków, jak i opłat.

<Rank>2</Rank>

Zduplikowane wartości rankingu są dozwolone w przypadku podatków i opłat, ale może to prowadzić do niezdefiniowanego zachowania, w którym podatki i opłaty są stosowane w sposób arbitralny i kumulatywny.

Możesz też użyć parametru "exclusive" w ramach elementu <Rank>, aby wskazać, że wszystkie podatki i opłaty o tym samym priorytecie są stosowane do stawki. Wartość domyślna to false, a wszystkie podatki i opłaty o tym samym priorytecie są stosowane do stawki w dowolny sposób. Element "exclusive" jest opcjonalny.

Jeśli parametr exclusive ma wartość true, do stawki stosowany jest tylko pierwszy podatek wymieniony w elemencie <Tax> lub pierwsza opłata wymieniona w elemencie <Fee>.

<Rank exclusive="true">1</Rank>

Najpierw naliczane są podatki, a potem opłaty. Jeśli więc podatek i opłata mają ten sam priorytet, a opłata ma ustawioną wartość "exclusive" na true, najpierw zostanie naliczony podatek. Najlepszym rozwiązaniem jest podawanie podatków i opłat w kolejności, w jakiej powinny być naliczane.

Aby uwzględnić wszystkie podatki i opłaty o tym samym priorytecie, unikaj ustawiania wartości exclusive na true.

Podatki i opłaty bez rang są stosowane przed wszystkimi pozycjami z rangami.

<Rank> musi mieścić się w zakresie od 1 do 99 (włącznie).

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 <Tax> są też obsługiwane w przypadku elementu <Fee> z tą samą składnią.

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 od przedziału

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:

  • Podatek w wysokości 20 USD za osobę dorosłą.
  • Podatek w wysokości 10 USD w przypadku dzieci w wieku od 11 do 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

Poniżej znajdziesz 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 zł 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>:

  1. Najpierw stosowany jest podatek od zakwaterowania z wartością exclusive="true" i rangą 1.
  2. Podatek od obsługi pokoi o randze 1 nie zostanie zastosowany, ponieważ poprzedni podatek od zakwaterowania jest wyłączny.
  3. Następnie stosowana jest opłata za sprzątanie w wysokości exclusive="true" i o randze 2.
  4. 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 / @Atrybut 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ść <Success> lub <Issues>.

TaxFeeInfoResponse / Issues 0..1 Issues Kontener na co najmniej 1 problem napotkany podczas przetwarzania wiadomości TaxFeeInfo.

W każdej wiadomości występuje element <Success> lub <Issues>.

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 warning, error i failure .

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

Poniżej znajduje się 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>