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 / @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 ID określonego 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 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 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ą 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> 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 (według strefy czasowej usługi) zakresu dat. 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 z tym dniem) w strefie czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, 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:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w czwartek
  • F w przypadku piątku
  • S w sobotę
  • U w przypadku niedzieli

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 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 z tym dniem) w strefie czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, 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:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w czwartek
  • F w przypadku piątku
  • S w sobotę
  • U w przypadku niedzieli

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 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 z tym dniem) w strefie czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, 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:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w czwartek
  • F w przypadku piątku
  • S w sobotę
  • U w przypadku niedzieli

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 harmonogramie, jeśli wszystkie daty w harmonogramie pokrywają się z datami pobytu.
  • any: podatek jest stosowany do wszystkich nocy w planie podróży, jeśli jakakolwiek data w planie podróży 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: pole overlap jest prawidłowe tylko wtedy, gdy pole <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 (według strefy czasowej usługi) zakresu dat. 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 z tym dniem) w strefie czasowej usługi. Musi to być data start lub późniejsza. Jeśli nie podasz wartości end, 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:

  • M w przypadku poniedziałku
  • T – wtorek
  • W na środę
  • H w czwartek
  • F w przypadku piątku
  • S w sobotę
  • U w przypadku niedzieli

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 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 <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 cen za noc 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 od wartości 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><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 jest 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 Definiuje 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 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 <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 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 "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>

Podatki są naliczane przed opłatami. Jeśli więc podatek i opłata mają ten sam priorytet, a opłata ma wartość "exclusive" ustawioną na true, podatek nadal jest naliczany jako pierwszy. 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 rankingu są stosowane przed wszystkimi pozycjami z rankingiem.

<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ą również 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 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>:

  1. Najpierw stosowany jest podatek od zakwaterowania z 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 / @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ść <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 właściwość <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

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>