Дополнительный гостевой сбор

Тарифы, отправленные через <OTA_HotelRateAmountNotifRQ> , могут быть изменены с учетом взрослых и детей в дополнение к исходному количеству гостей. Сообщение ExtraGuestCharges позволяет указать, как должны рассчитываться тарифы для этих дополнительных гостей, а также для каких номеров, тарифных планов и дат пребывания должна взиматься плата.

Требования к мощности

Цены, рассчитанные на основе сообщения ExtraGuestCharges , действительны только в том случае, если все требования к мощности удовлетворены. Дополнительную информацию см. в разделе «Транзакция (данные о собственности)» .

Запросы

Синтаксис

Сообщение ExtraGuestCharges использует следующий синтаксис:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges partner="partner_account_name"
                   id="message_ID"
                   timestamp="timestamp">
  <HotelExtraGuestCharges hotel_id="HotelID" action="[overlay]">
    <ExtraGuestCharge>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <StayDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD"
                   days_of_week="MTWHFSU_or_subset"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="float"/>
        <ChildAgeBrackets>
        <!-- The following are different ways child charges can be specified.
        Use the option that matches your system. -->
          <ChildAgeBracket max_age="integer" amount="float"
                           exclude_from_capacity="[true|false]"/>
          <ChildAgeBracket max_age="integer" percentage="float"
                           exclude_from_capacity="[true|false]"
                           counts_as_base_occupant="[never|preferred|always]"/>
          <ChildAgeBracket max_age="integer" discount_amount="float"
                           exclude_from_capacity="[true|false]"
                           counts_as_base_occupant="[never|preferred|always]"/>
        </ChildAgeBrackets>
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

Элементы и атрибуты

Сообщение ExtraGuestCharges имеет следующие элементы и атрибуты:

Элемент/@Атрибут События Тип Описание
ExtraGuestCharges 1 Complex element Корневой элемент этого сообщения.
ExtraGuestCharges / @partner 1 string Партнерский аккаунт для этого сообщения. Это строковое значение представляет собой значение Partner key , указанное на странице настроек учетной записи в Hotel Center.

Примечание. Если у вас есть серверная часть, которая предоставляет каналы для нескольких учетных записей, это значение должно соответствовать значению атрибута ID , указанному в элементе <RequestorID> ваших сообщений <OTA_HotelRateAmountNotifRQ> и <OTA_HotelAvailNotifRQ> для одной и той же учетной записи.

ExtraGuestCharges / @id 1 string Уникальный идентификатор этого сообщения запроса. Это значение возвращается в ответном сообщении. Допустимые символы: az , AZ , 0-9 , _ (подчеркивание) и - (тире).
ExtraGuestCharges / @timestamp 1 DateTime Дата и время создания этого сообщения.
ExtraGuestCharges / HotelExtraGuestCharges 0..n HotelExtraGuestCharges Контейнер для сборов за один объект недвижимости.
ExtraGuestCharges / HotelExtraGuestCharges / @hotel_id 1 string Уникальный идентификатор свойства. Это значение должно соответствовать идентификатору отеля, указанному с помощью <id> в элементе <listing> в фиде списка отелей. Идентификатор отеля также указан в Hotel Center .
ExtraGuestCharges / HotelExtraGuestCharges / @action 0..1 enum Указывает, как применяется обновление. Поддерживается только overlay , по умолчанию используется наложение. Все предыдущие платежи за этот ресурс снимаются перед применением обновления.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge 0..99 ExtraGuestCharge

Единый набор сборов за недвижимость. Это может содержать ограничения на взимание сборов и расчет сборов в зависимости от возраста или категории гостей.

Каждый ExtraGuestCharge в HotelExtraGuestCharges должен применяться к уникальному набору дат и продуктов. Если два элемента ExtraGuestCharge относятся к одной и той же комбинации дата-продукт, все сообщение отклоняется.

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets 1 AgeBrackets Контейнер с возрастными категориями для расчета платы по возрасту или категории гостей.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge 0..1 AdultCharge Контейнер для платы за дополнительного взрослого.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge / @amount 0..1 float Положительное десятичное значение, указывающее фиксированную сумму, взимаемую за дополнительного взрослого. Для этого сбора используется та же валюта, что и для ночных тарифов.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets 0..1 ChildAgeBrackets Контейнер для дополнительных детских сборов. Эти возрастные категории могут охватывать только возрастной диапазон от 0 до 17 лет включительно.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket 1..99 ChildAgeBracket Сбор, взимаемый с детей определенного возраста. Они должны быть упорядочены от самого низкого max_age до самого высокого max_age . Сумма, подлежащая оплате, может быть указана с помощью amount , percentage или discount_amount . Для каждого <ChildAgeBracket> должен быть указан ровно один из этих атрибутов.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @max_age 1 integer Максимальный возраст, за который может взиматься плата, указанная в <ChildAgeBracket> . Минимальный возраст равен нулю, если перед этим не указан другой <ChildAgeBracket> . В противном случае он на один больше максимального возраста предыдущей группы.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @exclude_from_capacity 1 boolean Логическое значение, указывающее, следует ли учитывать ребенка в этой возрастной группе при расчете общей вместимости комнаты и вместимости детей. Эти мощности можно установить с помощью Transaction(Property Data) . Например, младенцы младше определенного возраста могут не учитываться при расчете дееспособности ребенка.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @amount 0..1 float Неотрицательное десятичное значение, определяющее фиксированную сумму, взимаемую за дополнительного ребенка в этой группе. Для этого сбора используется та же валюта, что и для ночных тарифов.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @percentage 0..1 float

Десятичное значение от 1 до 99, которое определяет процент от цены для взрослого, который должен взиматься за дополнительного ребенка в этой группе. Для этого сбора используется та же валюта, что и для ночных тарифов.

Подробную информацию о том, как рассчитывается цена для взрослых, см. в обсуждении в разделе counts_as_base_occupant .

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @discount_amount 0..1 float

Положительное десятичное значение, указывающее фиксированную сумму скидки от цены для взрослого за дополнительного ребенка в этой группе. Для этой оплаты используется та же валюта, что и для ночных тарифов.

Как правило, плата за ребенка в этой категории рассчитывается путем вычитания фиксированной суммы из «цены за единицу». Цена за единицу обсуждается более подробно в разделе атрибута counts_as_base_occupant .

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @counts_as_base_occupant 0..1 string

Если указан атрибут percentage или discount_amount , то необходимо также указать counts_as_base_occupant . Это значение определяет, следует ли включать дочернего элемента в NumberOfGuest при выборе ставки <BaseByGuestAmount> для применения процентных начислений и скидок.

Целью здесь является получение «цены за единицу», на основе которой можно рассчитать фактическую плату.

unit price = rate / occupancy

Значение этого атрибута должно быть одним из следующих: never , preferred или always .

  • Если указано never , ребенок никогда не будет включен в стоимость проживания.

    Если вы хотите рассчитать тариф для 2 взрослых и 2 детей (2+2), вам следует использовать тариф для 2 взрослых, поскольку дети не должны быть включены.

  • Если указано preferred , желательно, чтобы ребенок был включен в стоимость проживания.

    Если вы хотите рассчитать тариф для 2 взрослых и 1 ребенка (2+1), вам желательно использовать тариф для 3 взрослых, но если его невозможно найти, вам следует использовать тариф для 2 взрослых.

  • Если указано always , то ребенок всегда должен быть включен в стоимость проживания.

    Если вы хотите рассчитать тариф для 2 взрослых и 2 детей (2+2), вам следует использовать тариф для 4 взрослых, поскольку дети должны быть включены.

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes 0..1 RoomTypes Контейнер для списка типов номеров, к которым применяется плата. Плата взимается за каждый указанный <RoomType> . Если <RoomTypes> не указан, плата взимается за все номера в указанном объекте размещения.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType 1..n RoomType Указывает тип номера. Тип комнаты определяется в элементе <RoomData> в сообщении транзакции (данные о собственности) , и на него можно ссылаться с помощью значения <RoomID> . (На его значение <RoomID> также ссылается атрибут InvTypeCode в сообщениях OTA_HotelRateAmountNotifRQ.)
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType / @id 1 string Уникальный идентификатор инвентаря (типа помещения). Это значение сопоставляется с <RoomID> в сообщении транзакции (данные о собственности). Максимально допустимое количество символов — 50.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans 0..1 RatePlans Контейнер для списка тарифных планов, к которым применяется оплата. Если <RatePlans> не указан, плата применяется ко всем тарифным планам.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan 1..n RatePlan Указывает тарифный план. Тарифный план определяется комбинацией пакета, тарифов и доступности, как определено в сообщениях Transaction (Data Property), OTA_HotelRateAmountNotifRQ и OTA_HotelAvailNotifRQ, а также как указано PackageID.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan / @id 1 string Уникальный идентификатор тарифного плана. Это значение сопоставляется со значением PackageID в <PackageData> в сообщении транзакции (данные свойства) и в атрибуте RatePlanCode в <StatusApplicationControl> в сообщениях <OTA_HotelRateAmountNotifRQ> и <OTA_HotelAvailNotifRQ> . Максимально допустимое количество символов — 50.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates 0..1 StayDates Контейнер для одного или нескольких диапазонов дат, определяющих порядок применения платежей.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange 1..99 DateRange Диапазон дат, определяющий даты, когда будет применяться акция.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @start 0..1 Date Дата начала (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна быть раньше или совпадать с датой end . Если start не указано, диапазон дат фактически не ограничен с точки зрения даты начала.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @end 0..1 Date Конечная дата (в зависимости от часового пояса объекта), включая диапазон дат. Эта дата должна совпадать с датой start или быть позже нее. Если end не указан, диапазон дат фактически не ограничен с точки зрения даты окончания.
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @days_of_week 0..1 string

Дни недели, которые разрешены в диапазоне дат. Если не указано, в диапазоне дат разрешены все дни. Каждый символ в строке указывает день. Например, «MTWHF» указывает, что в диапазоне дат разрешены дни недели.

Допустимые символы:

  • M на понедельник
  • T во вторник
  • W для среды
  • H на четверг
  • F для пятницы
  • S для субботы
  • U на воскресенье

Любая комбинация символов допустима.

Примеры

Плата за взрослых

Плата за дополнительных взрослых может быть выражена только в фиксированных суммах. В следующем примере показано сообщение ExtraGuestCharges , в котором указаны расходы для взрослых:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <StayDates />
      <AgeBrackets>
        <AdultCharge amount="50" />
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

Вот соответствующие тарифы:

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="ABC">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountAfterTax="100.00"
                            CurrencyCode="USD"
                            NumberOfGuests="1"/>
            <BaseByGuestAmt AmountAfterTax="110.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
            <BaseByGuestAmt AmountAfterTax="120.00"
                            CurrencyCode="USD"
                            NumberOfGuests="3"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Когда пользователь ищет в Google четверых взрослых, общая ставка составит 170 = 120 + 50.

120 получается из тарифа <BaseByGuestAmt> с NumberOfGuests="3" и 50 — из AdultCharge amount="50" .

Плата за детей

Плата за детей выражена в возрастных группах до 17 лет и может быть выражена в фиксированных суммах, процентах или скидках.

В следующем примере показано сообщение ExtraGuestCharges , в котором указаны дочерние расходы:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <AgeBrackets>
        <ChildAgeBrackets>
          <ChildAgeBracket max_age="3" percentage="10"
                           counts_as_base_occupant="never" />
          <ChildAgeBracket max_age="10" percentage="30"
                           counts_as_base_occupant="preferred"/>
          <ChildAgeBracket max_age="17" discount_amount="10"
                           counts_as_base_occupant="always" />
        </ChildAgeBrackets>
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

Вот соответствующие тарифы:

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="ABC">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountAfterTax="100.00"
                            CurrencyCode="USD"
                            NumberOfGuests="1"/>
            <BaseByGuestAmt AmountAfterTax="110.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
```

  1.  Suppose you want the total price for 2 adults and 1 child of 2 years
      of age.

      Children aged 0-3 are never included in the rate's occupancy,
      so here you should take the double occupancy rate and divide by 2 to
      get the unit price. Then, multiply by the percentage rate and sum
      with the rate to get the total price.

      `unit price ` = 110 / 2 = 55

      `total price` = 110 + 55 * 0.1 = 115.5

  1.  Suppose you want the total price for 1 adult and 2 children, both of 5
      years of age.

      Children aged 4-10 are preferably included in the rate's
      occupancy. you should start by looking for a 3 adult rate since both
      children are preferably included in the rate's occupancy. Since
      that doesn't exist you should fall back to the 2 adult rate and then,
      take this rate and divide by two to get the unit price. Finally,
      multiply by the percentage rate and sum with the scaled rate to
      get the total price.

      `unit price` = 110 / 2 = 55

      `total price` = 55 + 55 * 0.3 + 55 * 0.3 = 88

  1.  Suppose you want the total price for 1 adult and 1 child of 17
      years of age.

      Children aged 11-17 are always included in the rate's occupancy, so,
      in this case, take the double occupancy rate and divide by 2 to get
      the unit price. Then, deduct it by the discount amount and sum with
      the scaled rate to get the total price.

      `unit price` = 110 / 2 = 55

      `total price` = 55 + (55 - 10) = 100

Ограничения по зарядам

Все типы ограничений являются необязательными, и можно использовать любую их комбинацию.

В следующем примере показано сообщение ExtraGuestCharges , в котором указаны ограничения:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <RoomTypes>
        <RoomType id="queen" />
        <RoomType id="king" />
      </RoomTypes>
      <RatePlans>
        <RatePlan id="free-wifi" />
        <RatePlan id="hot-breakfast" />
      </RatePlans>
      <StayDates>
        <DateRange start="2020-09-01" end="2020-09-14"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="50" />
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

В сообщении выше указано, что со взрослых должна взиматься плата за любой продукт с типом номера «queen-size» или «king-size» с тарифным планом «бесплатный Wi-Fi» или «горячий завтрак» на даты с 1 сентября 2020 г. по 14 сентября 2020 г. .

Перекрывающиеся сборы

В этом разделе показан пример недопустимого сообщения, в котором указаны разные расходы для одних и тех же комбинаций дат и продуктов.


<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <RoomTypes>
        <RoomType id="queen" />
      </RoomTypes>
      <RatePlans>
        <RatePlan id="free-wifi" />
      </RatePlans>
      <StayDates>
        <DateRange start="2020-09-01" end="2020-09-14"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="50" />
      </AgeBrackets>
    </ExtraGuestCharge>
    <ExtraGuestCharge>
      <RoomTypes>
        <RoomType id="queen" />
        <RoomType id="king" />
      </RoomTypes>
      <RatePlans>
        <RatePlan id="free-wifi" />
        <RatePlan id="hot-breakfast" />
      </RatePlans>
      <StayDates>
        <DateRange start="2020-09-01" end="2020-09-05"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="20" />
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

Сообщение выше недействительно, поскольку первый <ExtraGuestCharge> указывает, что с «королевы» и «бесплатного Wi-Fi» с 1 по 14 сентября взимается дополнительная плата в размере 50 для взрослых. Второй <ExtraGuestCharge> указывает, что любой из «королевы» или «короля» с за любой «бесплатный Wi-Fi» или «горячий завтрак» с 1 по 5 сентября взимается дополнительная плата в размере 20 для взрослых. С 1 по 5 сентября взимается дублирующая плата за «queen-size» и «бесплатный Wi-Fi», а также существует конфликт между взиманием платы. 20 или 50 за дополнительного взрослого.

Ответы

Синтаксис

Сообщение ExtraGuestChargesResponse использует следующий синтаксис:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse 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>
</ExtraGuestChargesResponse>

Элементы и атрибуты

Сообщение ExtraGuestChargesResponse имеет следующие элементы и атрибуты:

Элемент/@Атрибут События Тип Описание
ExtraGuestChargesResponse 1 Complex element Корневой элемент, указывающий успешность или проблемы полученного сообщения запроса ExtraGuestCharges .
ExtraGuestChargesResponse / @timestamp 1 DateTime Дата и время создания этого сообщения.
ExtraGuestChargesResponse / @id 1 string Уникальный идентификатор из связанного сообщения ExtraGuestCharges .
ExtraGuestChargesResponse / @partner 1 string Партнерский аккаунт для этого сообщения.
ExtraGuestChargesResponse / Success 0..1 Success Указывает, что сообщение ExtraGuestCharges было успешно обработано без предупреждений, ошибок или сбоев.

В каждом сообщении присутствует либо <Success> , либо <Issues> .

ExtraGuestChargesResponse / Issues 0..1 Issues Контейнер для одной или нескольких проблем, возникших при обработке сообщения ExtraGuestCharges .

В каждом сообщении присутствует либо <Success> , либо <Issues> .

ExtraGuestChargesResponse / Issues / Issue 1..n Issue Описание предупреждения, ошибки или сбоя, возникшего при обработке сообщения ExtraGuestCharges . Подробную информацию об этих проблемах можно найти в разделе «Сообщения об ошибках статуса фида» .
ExtraGuestChargesResponse / Issues / Issue / @code 1 integer Идентификатор проблемы.
ExtraGuestChargesResponse / Issues / Issue / @status 1 enum

Тип возникшей проблемы.

Допустимые значения: warning , error и failure .

Примеры

Успех

Ниже приведен ответ на успешно обработанное сообщение ExtraGuestCharges .

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</ExtraGuestChargesResponse>

Проблемы

Ниже приведен ответ на сообщение ExtraGuestCharges , которое не было обработано из-за ошибок.

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</ExtraGuestChargesResponse>