> ## Documentation Index
> Fetch the complete documentation index at: https://docs.axisdata.net/llms.txt
> Use this file to discover all available pages before exploring further.

# RatePlanToken Book RS

The Book functionality for our RatePlanToken product is directly based on our original OTA\_HotelResRQ/RS. The request message is almost identical from the classic model.

## Purpose

* Confirm successful processing (`<Success/>`) or return error diagnostics (`<Errors/>`). [Error Scenarios](../glossary/errors).
* Return one `HotelReservation` with one `RoomStay` item, linked `ResGuests`, and booking-level context under `ResGlobalInfo`.
* **Quote** (`ResStatus="Quote"` in the request): verify availability, totals, and cancellation policy without creating a reservation ID at Axis Data (the client reference is echoed).
* **Commit** (`ResStatus="Commit"` in the request): create a binding booking if accepted, with cancellation penalties per contract.

## Details and Structure

All the details regarding this message can be found at [OTA\_HotelResRS](../hotel/bookRS).

The Booking for RP Token products has to be done using the RatePlanToken, retrieved from the [Search Response](./rptoken-searchRS#rateplantoken).

The Response will echo this RatePlanToken

### RatePlanToken

This code, once requested in the Book Request will be echoed in the Booking Response as follows:

```xml theme={null}
...
<RoomRates>
    <RatePlans>
        <RatePlan RatePlanToken="NGDjY1BxMJshml1tjSjP60aQLl1ZM_DXaHsmytDg91gP9V3sV124B2yEudvNXnrvUgY7TQEz5cQ3ElEy3ZVc-56GYgRG4tVk1juq6x8E8ddMdKBv6tvWpth6CoSEjz30SgGDRkscCIhD_JFViqtNLiL7mwI3g2-zMvKnMAz3tA-B4POClx7_-0Sw1Ga8oBKad5C0NXtrHvlsQYW6L8Q_" />
    </RatePlans>
    <RoomRate RoomTypeCode="RMSDDB0000" NumberOfUnits="1">
        <Rates>
...
```

## Differences with classic Hotel Book

The structure of the message is exactly the same as [OTA\_HotelResRS](../hotel/bookRS) plus the RatePlanToken.

### What's not included

* [Optional Extras](../hotel/bookRS#extras) are not available for RatePlanToken Hotels.

All other elements and their rules are equivalent to the traditional booking flow, including [Price Breakdown](../hotel/bookRS#ratedetails) usage.

### RatePlans and Multicontracting

In this flow, rateplans and multicontracting are always included. The codes, in this case, will already be encoded inside the RatePlanToken and don't need to be used in the traditional "concatenated to room code" approach.

The Rateplan code is needed to ensure a proper distribution of the rates. It will be visible in the booking confirmation in the following section, but it does not have to be used at the booking request.

```xml theme={null}
...
</RoomTypes>
<RatePlans>
    <RatePlan RatePlanCode = "BP007" />
<RatePlans>
...
```

### Taxes and Fees

The Taxes and Fees are small rates or commisions that may be added to a booking if a contract requests it.

There are three main types of Taxes and Fees:

* **Mandatory**: They are treated as a supplement in the contract, and calculated as one in the booking. Visible in Price Breakdown.
* **Included**: They are included in the hotel rate. They are visible under the Tax section as "Inclusive".
* **Payable Locally**: Taxes for the customer to pay on spot. They are visible under the tax section as "Exclusive".

```xml theme={null}
<Taxes Amount="100.00" CurrencyCode="EUR">
    <Tax Amount="50.00" CurrencyCode="EUR" Code="3" SequenceNbr="1" Type="Inclusive" ChargeFrequency="12">
        <TaxDescription>
            <Text Language="EN">This is a mandatory tax included in the rate, total amount for the whole stay</Text>
        </TaxDescription>
    </Tax>
    <Tax Amount="50" CurrencyCode="EUR" Code="18" SequenceNbr="2" Type="Inclusive" ChargeFrequency="21">
        <TaxDescription>
            <Text Language="EN">This is a mandatory tax included in the rate, value is per pax per night</Text>
        </TaxDescription>
    </Tax>
    <Tax Amount="75.00" CurrencyCode="EUR" Code="12" SequenceNbr="3" Type="Exclusive" ChargeFrequency="12">
        <TaxDescription>
            <Text Language="EN">This is a mandatory tax NOT included in the rate (payable locally), total amount for the whole stay</Text>
        </TaxDescription>
    </Tax>
    <Tax Percent="7" Code="30" SequenceNbr="4" Type="Exclusive" ChargeFrequency="12">
        <TaxDescription>
            <Text Language="EN">This is a mandatory tax NOT included in the rate (payable locally), expressed as a percentage of the total amount</Text>
        </TaxDescription>
    </Tax>
    <Tax Amount="2.00" CurrencyCode="EUR" Code="5" SequenceNbr="5" Type="Exclusive" ChargeFrequency="21">
        <TaxDescription>
            <Text Language="EN">This is a mandatory tax NOT included in the rate (payable locally), expressed as a per pax per night value</Text>
        </TaxDescription>
    </Tax>
</Taxes>
```

The Code represents which type of Tax or Fee the element refers to. The Mapping of the codes is the following:

**ChargeFrequency** uses OTA CHG codes:

* 1 per night
* 12 per stay
* 18 per room per stay
* 19 per room per night
* 20 per pax per stay
* 21 per pax per night

**Code** uses OTA FTT codes:

* 3 city tax
* 6 federal tax
* 30 country tax
* 12 resort fee
* 18 tourism tax
* 27 miscellaneous
* 5 energy tax
* 36 VAT

## Complete Examples

<CodeGroup>
  ```xml Basic expandable theme={null}
  <?xml version="1.0" encoding="UTF-8"?>
  <OTA_HotelResRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="2008.1">
  	<Success/>
  	<HotelReservations>
  		<HotelReservation>
  			<RoomStays>
  				<RoomStay RPH="1" IndexNumber="1">
  					<RoomTypes>
  						<RoomType RoomTypeCode="RM00CRMV00">
  							<RoomDescription>
  								<Text Language="EN">Standard Room</Text>
  							</RoomDescription>
  						</RoomType>
  					</RoomTypes>
  					<RatePlans>
  						<RatePlan RatePlanCode="BP007"/>
  					</RatePlans>
  					<RoomRates>
  						<RoomRate RoomTypeCode="RM00CRMV00" RatePlanToken="NGDjY1BxMJshml1tjSjP60aQLl1ZM_DXaHsmytDg91gP9V3sV124B2yEudvNXnrvUgY7TQEz5cQ3ElEy3ZVc-56GYgRG4tVk1juq6x8E8ddMdKBv6tvWpth6CoSEjz30SgGDRkscCIhD_JFViqtNLiL7mwI3g2-zMvKnMAz3tA-B4POClx7_-0Sw1Ga8oBKad5C0NXtrHvlsQYW6L8Q_">
  							<Features>
  								<Feature>
  									<Description>
  										<Text>BB</Text>
  										<Text Language="EN">Breakfast</Text>
  									</Description>
  								</Feature>
  							</Features>
  						</RoomRate>
  					</RoomRates>
  					<BasicPropertyInfo HotelCode="AESPMI5L46" HotelName="Caserio de Lanzarote"/>
  					<TimeSpan End="2027-07-24" Start="2027-07-17"/>
  					<ResGuestRPHs>
  						<ResGuestRPH RPH="1"/>
  						<ResGuestRPH RPH="2"/>
  					</ResGuestRPHs>
  					<ServiceRPHs>
  						<ServiceRPH RPH="1"/>
  					</ServiceRPHs>
  					<Total CurrencyCode="EUR" AmountAfterTax="900.00"/>
  				</RoomStay>
  			</RoomStays>
  			<Services>
  				<Service ServiceInventoryCode="BB" ServiceRPH="1"/>
  			</Services>
  			<ResGuests>
  				<ResGuest AgeQualifyingCode="10" ResGuestRPH="1">
  					<Profiles>
  						<ProfileInfo>
  							<Profile>
  								<Customer BirthDate="1996-01-01">
  									<PersonName>
  										<NamePrefix>Mr</NamePrefix>
  										<GivenName>Bender</GivenName>
  										<Surname>Bending</Surname>
  									</PersonName>
  								</Customer>
  							</Profile>
  						</ProfileInfo>
  					</Profiles>
  					<GuestCounts>
  						<GuestCount Age="30"/>
  					</GuestCounts>
  				</ResGuest>
  				<ResGuest AgeQualifyingCode="10" ResGuestRPH="2">
  					<Profiles>
  						<ProfileInfo>
  							<Profile>
  								<Customer BirthDate="1996-01-01">
  									<PersonName>
  										<NamePrefix>Mrs</NamePrefix>
  										<GivenName>Angelina</GivenName>
  										<Surname>Bending</Surname>
  									</PersonName>
  								</Customer>
  							</Profile>
  						</ProfileInfo>
  					</Profiles>
  					<GuestCounts>
  						<GuestCount Age="30"/>
  					</GuestCounts>
  				</ResGuest>
  			</ResGuests>
  			<ResGlobalInfo>
  				<Total CurrencyCode="EUR" AmountAfterTax="900.00"/>
  				<Comments>
  					<Comment Name="Applicant Notice" CommentOriginatorCode="DISTRIBUTOR">
  						<Text>late arrival - flight lands at 22:55 local time</Text>
  					</Comment>
  				</Comments>
  				<HotelReservationIDs>
  					<HotelReservationID ResID_Type="36" ResID_SourceContext="Client" ResID_Value="TEST_XXX"/>
  					<HotelReservationID Item_RPH="1" ResID_Value="test_xxx_ac1" ResID_Type="37" ResID_SourceContext="Client"/>
  					<HotelReservationID Item_RPH="1" ResID_Value="1" ResID_Type="37" ResID_SourceContext="Internal"/>
  				</HotelReservationIDs>
  				<CancelPenalties>
  					<CancelPenalty Item_RPH="1">
  						<Deadline OffsetUnitMultiplier="6" OffsetTimeUnit="Day" OffsetDropTime="BeforeArrival" AbsoluteDeadline="2026-07-11T00:00:00"/>
  						<AmountPercent Amount="367.50" CurrencyCode="EUR" BasisType="FullStay" Percent="35"/>
  					</CancelPenalty>
  					<CancelPenalty Item_RPH="1">
  						<Deadline OffsetUnitMultiplier="3" OffsetTimeUnit="Day" OffsetDropTime="BeforeArrival" AbsoluteDeadline="2026-07-14T00:00:00"/>
  						<AmountPercent Amount="150.00" CurrencyCode="EUR" NmbrOfNights="1" Percent="100"/>
  					</CancelPenalty>
  					<CancelPenalty Item_RPH="1">
  						<Deadline OffsetUnitMultiplier="0" OffsetTimeUnit="Day" OffsetDropTime="BeforeArrival" AbsoluteDeadline="2026-07-17T00:00:00"/>
  						<AmountPercent Amount="300.00" CurrencyCode="EUR" NmbrOfNights="2" Percent="100"/>
  					</CancelPenalty>
  				</CancelPenalties>
  				<BasicPropertyInfo HotelCodeContext="10121" AreaID="1012" HotelName="Caserio de Lanzarote" HotelCode="AESPMI5L46">
  					<VendorMessages>
  						<VendorMessage Title="IncidentsAndErrata" InfoType="5">
  							<SubSection>
  								<Paragraph>
  									<Text>Due to the local logistics infrastructure, there is a possibility that your meeting point for arrival and departure transfer may not be direct at the hotel door</Text>
  								</Paragraph>
  							</SubSection>
  						</VendorMessage>
  					</VendorMessages>
  				</BasicPropertyInfo>
  				<Profiles>
  					<ProfileInfo>
  						<Profile>
  							<CompanyInfo>
  								<CompanyName CompanyShortName="OTS Headquarter Office" CountryCode="AT" Code="OTSHQ"/>
  							</CompanyInfo>
  						</Profile>
  					</ProfileInfo>
  				</Profiles>
  			</ResGlobalInfo>
  			<TPA_Extensions>
  				<RateDetails>
  					<GuestDetails ResGuestRPH="1" TotalAmount="450.00" CurrencyCode="EUR" RateCode="Price">
  						<RateComponents StayDay="1" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="2" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="3" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="4" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="5" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="6" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="6" ResGuestRPH="1" Code="FSO1" Edition="0" Rate="-90.00" CurrencyCode="EUR" CodeType="OFF"/>
  						<RateComponents StayDay="7" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="7" ResGuestRPH="1" Code="FSO1" Edition="0" Rate="-90.00" CurrencyCode="EUR" CodeType="OFF"/>
  					</GuestDetails>
  					<GuestDetails ResGuestRPH="2" TotalAmount="450.00" CurrencyCode="EUR" RateCode="Price">
  						<RateComponents StayDay="1" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="2" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="3" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="4" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="5" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="6" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="6" ResGuestRPH="2" Code="FSO1" Edition="0" Rate="-90.00" CurrencyCode="EUR" CodeType="OFF"/>
  						<RateComponents StayDay="7" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
  						<RateComponents StayDay="7" ResGuestRPH="2" Code="FSO1" Edition="0" Rate="-90.00" CurrencyCode="EUR" CodeType="OFF"/>
  					</GuestDetails>
  					<Totals>
  						<Total TotalType="Price" CurrencyType="Price" CurrencyCode="EUR" AmountAfterTax="900.00" Override="false">
  							<Taxes Amount="100.00" CurrencyCode="EUR">
  								<Tax Amount="50.00" CurrencyCode="EUR" Code="3" SequenceNbr="1" Type="Inclusive" ChargeFrequency="12">
  									<TaxDescription>
  										<Text Language="EN">This is a mandatory tax included in the rate, total amount for the whole stay</Text>
  									</TaxDescription>
  								</Tax>
  								<Tax Amount="50" CurrencyCode="EUR" Code="18" SequenceNbr="2" Type="Inclusive" ChargeFrequency="21">
  									<TaxDescription>
  										<Text Language="EN">This is a mandatory tax included in the rate, value is per pax per night</Text>
  									</TaxDescription>
  								</Tax>
  								<Tax Amount="75.00" CurrencyCode="EUR" Code="12" SequenceNbr="3" Type="Exclusive" ChargeFrequency="12">
  									<TaxDescription>
  										<Text Language="EN">This is a mandatory tax NOT included in the rate (payable locally), total amount for the whole stay</Text>
  									</TaxDescription>
  								</Tax>
  								<Tax Percent="7" Code="30" SequenceNbr="4" Type="Exclusive" ChargeFrequency="12">
  									<TaxDescription>
  										<Text Language="EN">This is a mandatory tax NOT included in the rate (payable locally), expressed as a percentage of the total amount</Text>
  									</TaxDescription>
  								</Tax>
  								<Tax Amount="2.00" CurrencyCode="EUR" Code="5" SequenceNbr="5" Type="Exclusive" ChargeFrequency="21">
  									<TaxDescription>
  										<Text Language="EN">This is a mandatory tax NOT included in the rate (payable locally), expressed as a per pax per night value</Text>
  									</TaxDescription>
  								</Tax>
  							</Taxes>
  						</Total>
  					</Totals>
  				</RateDetails>
  				<ns1:BookingStatus xmlns:ns1="http://www.opentravel.org/OTA/2003/05/tpa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns1:BookingStatusType" ReservationStatusType="Available"/>
  				<Extras/>
  			</TPA_Extensions>
  		</HotelReservation>
  	</HotelReservations>
  </OTA_HotelResRS>
  ```
</CodeGroup>
