> ## 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.

# OTA_GroundBookRQ

The `OTA_GroundBookRQ` (Transfer Booking Request) is used to **quote** or **commit** a ground transfer reservation, including service details, locations (Pickup/DropOff), passenger data, and partner references.

<Tip>Already know OTA ground book messages? Jump straight into testing.</Tip>

<Card title="OTA_GroundBookRQ API call" icon="bus-simple" href="/api-reference/endpoint/transfer/book" arrow="true" horizontal>
  Skip & Hit the Playground.
</Card>

## Purpose

Use this message to:

* Request a **quote** (price + availability) without creating a booking by setting `ResStatus="Quote"`.
* **Commit** a definitive booking by setting `ResStatus="Commit"`.

## Structure – Root Element

```xml theme={null}
<OTA_GroundBookRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="2012.2" ResStatus="Quote" EchoToken="1234">
```

**Key Attributes**

* `xmlns`: must be `http://www.opentravel.org/OTA/2003/05`.
* `Version`: recommended `2012.2`.
* `ResStatus`: `Quote` | `Commit`.
* `EchoToken`: optional but recommended for idempotency and tracing.

## Structure – Core Elements

### POS (Point of Sale)

Identifies the requesting party and carries credentials.

```xml theme={null}
<POS>
  <Source>
    <RequestorID ID="TEST" Type="22" ID_Context="AxisData" Instance="PriceBreakdown"/>
  </Source>
  <Source>
    <RequestorID ID="TEST" Type="88" MessagePassword="testpass"/>
  </Source>
</POS>
```

### GroundReservations

Holds the service to be quoted or booked: locations, product and pricing qualifiers, and passengers.

```xml theme={null}
<GroundReservations>
  <Service>
    <Locations>
      <!-- one or more Location elements (e.g., outbound RPH=1, return RPH=2) -->
    </Locations>
    <ServiceLevel Code="S0000"/>
    <VehicleType Code="26" Description="Shared Shuttle"/>
    <RateQualifier PromotionCode="IN/OT" RateQualifier="TRESPMIPMI"/>
  </Service>
  <Passengers>
    <!-- Primary + Additional passengers with ages -->
  </Passengers>
</GroundReservations>
```

**ServiceLevel**\
Specify the service code that has to be booked. e.g S0000, PW000,...

**VehicleType**\
Define the returned description in the availability call of the desired product.

**RateQualifier**\
`PromotionCode` defines if the trip is IN, OT, or both. `RateQualifier` defines the transfer stock code.

#### Locations

Each requested transfer is expressed with a `Location` (reference it by `RPH`). Provide the appropriate Pickup/DropOff details for **each** leg.

```xml theme={null}
<Locations>
  <Location RPH="1">
    <Pickup DateTime="2026-07-17T00:00:00">
      <AirportInfo>
        <Departure CodeContext="IATA" LocationCode="MAN" DateTime="2026-07-17T17:15:00"/>
        <Arrival   CodeContext="IATA" LocationCode="PMI" DateTime="2026-07-17T20:55:00"/>
      </AirportInfo>
      <Airline FlightNumber="3445" Code="FR"/>
    </Pickup>
    <DropOff>
      <Address>
        <LocationType Code="11" UniqueId="AESPMI5L46"/>
      </Address>
    </DropOff>
  </Location>
</Locations>
```

<Note>
  Flights at airports must include **both** the arrival and departure airport codes and times in `AirportInfo`. Use `DateTime` in ISO 8601.
</Note>

#### Passengers

Provide the lead passenger under `Primary` and any others under `Additional`. **Age is required** (age at time of service).

```xml theme={null}
<Passengers>
  <Primary RPH="1" Age="25">
    <PersonName>
      <NamePrefix>Mr</NamePrefix>
      <GivenName>Bender</GivenName>
      <Surname>Bending</Surname>
    </PersonName>
    <Telephone PhoneNumber="+4912252352"/>
    <Email>bender@gmail.com</Email>
  </Primary>
  <Additional RPH="2" Age="25"/>
  <Additional RPH="3" Age="11"/>
</Passengers>
```

### TPA\_Extensions

#### Partner References

Partner references are **mandatory**. Use one **master** reference (`Type="36"`) and one **child** reference (`Type="37"`) **per Location** (`Item_RPH` maps to the Location’s `RPH`). See [Master and child references](../general/messaging#master-and-child-references)

```xml theme={null}
<TPA_Extensions>
  <UniqueID Type="36" ID_Context="Client" ID="1234567890"/>
  <UniqueID Type="37" ID_Context="Client" ID="1234567890_1" Item_RPH="1"/>
  <!-- more Type=37 per additional Location (RPH=2,3,...) -->
</TPA_Extensions>
```

#### Extras

Optional extras returned by availability can be added as `Fees`.

```xml theme={null}
<TPA_Extensions>
  <Fees>
    <Fee ExtraCode="Child Restraint Seat/IN"/>
    <Fee ExtraCode="Child Restraint Seat/OT"/>
  </Fees>
</TPA_Extensions>
```

### Default Service

If `ServiceLevel`/`RateQualifier` are omitted, the system will select the **cheapest** available option for the specified locations and passengers.

## Complete Examples

<CodeGroup>
  ```xml Round-trip expandable theme={null}
  <OTA_GroundBookRQ ResStatus="Quote" xmlns="http://www.opentravel.org/OTA/2003/05" Version="2012.2" EchoToken="1234">
    <POS>
      <Source>
        <RequestorID ID="TEST" Type="22" ID_Context="AxisData" Instance="PriceBreakdown"/>
      </Source>
      <Source>
        <RequestorID ID="TEST" Type="88" MessagePassword="testpass"/>
      </Source>
    </POS>
    <GroundReservations>
      <Service>
        <Locations>
          <Location RPH="1">
            <Pickup DateTime="2026-07-17T00:00:00">
              <AirportInfo>
                <Departure CodeContext="IATA" LocationCode="MAN" DateTime="2026-07-17T17:15:00"/>
                <Arrival CodeContext="IATA" LocationCode="PMI" DateTime="2026-07-17T20:55:00"/>
              </AirportInfo>
              <Airline FlightNumber="3445" Code="FR"/>
            </Pickup>
            <DropOff>
              <Address>
                <LocationType Code="11" UniqueId="AESPMI5L46"/>
              </Address>
            </DropOff>
          </Location>
          <Location RPH="2">
            <Pickup DateTime="2026-07-24T00:00:00">
              <Address>
                <LocationType Code="11" UniqueId="AESPMI5L46"/>
              </Address>
            </Pickup>
            <DropOff>
              <AirportInfo>
                <Departure CodeContext="IATA" LocationCode="PMI" DateTime="2026-07-24T21:30:00"/>
                <Arrival CodeContext="IATA" LocationCode="MAN" DateTime="2026-07-24T23:10:00"/>
              </AirportInfo>
              <Airline FlightNumber="3446" Code="FR"/>
            </DropOff>
          </Location>
        </Locations>
        <ServiceLevel Code="S0000"/>
        <VehicleType Code="26" Description="Shared Shuttle"/>
        <RateQualifier PromotionCode="IN/OT" RateQualifier="TRESPMIPMI"/>
      </Service>
      <Passengers>
        <Primary RPH="1" Age="25">
          <PersonName>
            <NamePrefix>Mr</NamePrefix>
            <GivenName>Bender</GivenName>
            <Surname>Bending</Surname>
          </PersonName>
          <Telephone PhoneNumber="+4912252352"/>
          <Email>bender@gmail.com</Email>
        </Primary>
        <Additional RPH="2" Age="25"/>
        <Additional RPH="3" Age="11"/>
      </Passengers>
    </GroundReservations>
    <TPA_Extensions>
      <UniqueID Type="36" ID_Context="Client" ID="1234567890"/>
      <UniqueID Type="37" ID_Context="Client" ID="1234567890_1" Item_RPH="1"/>
      <UniqueID Type="37" ID_Context="Client" ID="1234567890_2" Item_RPH="2"/>
      <Fees>
        <Fee ExtraCode="Child Restraint Seat/IN"/>
        <Fee ExtraCode="Child Restraint Seat/OT"/>
      </Fees>
    </TPA_Extensions>
  </OTA_GroundBookRQ>
  ```

  ```xml One-way expandable theme={null}
  <OTA_GroundBookRQ ResStatus="Quote" xmlns="http://www.opentravel.org/OTA/2003/05" Version="2012.2" EchoToken="abcd-ef01">
    <POS>
      <Source>
        <RequestorID ID="TEST" Type="22" ID_Context="AxisData" Instance="PriceBreakdown"/>
      </Source>
      <Source>
        <RequestorID ID="TEST" Type="88" MessagePassword="testpass"/>
      </Source>
    </POS>
    <GroundReservations>
      <Service>
        <Locations>
          <Location RPH="1">
            <Pickup DateTime="2026-07-17T00:00:00">
              <AirportInfo>
                <Departure CodeContext="IATA" LocationCode="MAN" DateTime="2026-07-17T17:15:00"/>
                <Arrival CodeContext="IATA" LocationCode="PMI" DateTime="2026-07-17T20:55:00"/>
              </AirportInfo>
              <Airline FlightNumber="3445" Code="FR"/>
            </Pickup>
            <DropOff>
              <Address>
                <LocationType Code="11" UniqueId="AESPMI5L46"/>
              </Address>
            </DropOff>
          </Location>
        </Locations>
        <ServiceLevel Code="S0000"/>
        <VehicleType Code="26" Description="Shared Shuttle"/>
        <RateQualifier PromotionCode="IN" RateQualifier="TRESPMIPMI"/>
      </Service>
      <Passengers>
        <Primary RPH="1" Age="25">
          <PersonName>
            <NamePrefix>Mr</NamePrefix>
            <GivenName>Bender</GivenName>
            <Surname>Bending</Surname>
          </PersonName>
          <Telephone PhoneNumber="+4912252352"/>
          <Email>bender@gmail.com</Email>
        </Primary>
        <Additional RPH="2" Age="25"/>
        <Additional RPH="3" Age="11"/>
      </Passengers>
    </GroundReservations>
    <TPA_Extensions>
      <UniqueID Type="36" ID_Context="Client" ID="191206094817263"/>
      <UniqueID Type="37" ID_Context="Client" ID="Transfer_1" Item_RPH="1"/>
    </TPA_Extensions>
  </OTA_GroundBookRQ>
  ```
</CodeGroup>

## Playground

<Card title="OTA_GroundBookRQ API call" icon="bus-simple" href="/api-reference/endpoint/transfer/book" arrow="true" horizontal>
  Try our API playground in real time.
</Card>

<Tip>Use the desired request in the playground and receive responses from our test environment API.       </Tip>

## Best Practices

1. Always include `EchoToken` to correlate requests and responses.
2. Use ISO 8601 for all dates/times (`YYYY-MM-DDThh:mm:ss`).
3. Provide **both** arrival and departure flight legs when an airport is involved.
4. Include **ages** for all passengers; age is evaluated at time of service.
5. Send `UniqueID` (master + child per leg) to prevent duplicates and enable partial cancellations.
6. If you don’t have a specific service code, omit `ServiceLevel`/`RateQualifier` to book the **cheapest** option.
