Skip to main content
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.
Already know OTA ground book messages? Jump straight into testing.

OTA_GroundBookRQ API call

Skip & Hit the Playground.

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

<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.
<POS>
  <Source>
    <RequestorID ID="TST1" Type="22" ID_Context="AxisData" Instance="PriceBreakdown"/>
  </Source>
  <Source>
    <RequestorID ID="TST1" Type="88" MessagePassword="TST1password?"/>
  </Source>
</POS>

GroundReservations

Holds the service to be quoted or booked: locations, product and pricing qualifiers, and passengers.
<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="TRESACEACE"/>
  </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.
<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="ACE" DateTime="2026-07-17T20:55:00"/>
      </AirportInfo>
      <Airline FlightNumber="3445" Code="FR"/>
    </Pickup>
    <DropOff>
      <Address>
        <LocationType Code="11" UniqueId="AMTSES08UI"/>
      </Address>
    </DropOff>
  </Location>
</Locations>
LocationType (IPC) – typical values
  • 7 Rail station
  • 11 Hotel
  • 18 Car rental location
  • 25 Port
Flights at airports must include both the arrival and departure airport codes and times in AirportInfo. Use DateTime in ISO 8601.

Passengers

Provide the lead passenger under Primary and any others under Additional. Age is required (age at time of service).
<Passengers>
  <Primary RPH="1" Age="25">
    <PersonName>
      <NamePrefix>Mr</NamePrefix>
      <GivenName>Bender</GivenName>
      <Surname>Bending</Surname>
    </PersonName>
    <Telephone PhoneNumber="+4912252352"/>
    <Email>[email protected]</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
<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.
<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

<OTA_GroundBookRQ ResStatus="Quote" xmlns="http://www.opentravel.org/OTA/2003/05" Version="2012.2" EchoToken="1234">
  <POS>
    <Source>
      <RequestorID ID="TST1" Type="22" ID_Context="AxisData" Instance="PriceBreakdown"/>
    </Source>
    <Source>
      <RequestorID ID="TST1" Type="88" MessagePassword="TST1password?"/>
    </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="ACE" DateTime="2026-07-17T20:55:00"/>
            </AirportInfo>
            <Airline FlightNumber="3445" Code="FR"/>
          </Pickup>
          <DropOff>
            <Address>
              <LocationType Code="11" UniqueId="AMTSES08UI"/>
            </Address>
          </DropOff>
        </Location>
        <Location RPH="2">
          <Pickup DateTime="2026-07-24T00:00:00">
            <Address>
              <LocationType Code="11" UniqueId="AMTSES08UI"/>
            </Address>
          </Pickup>
          <DropOff>
            <AirportInfo>
              <Departure CodeContext="IATA" LocationCode="ACE" 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="TRESACEACE"/>
    </Service>
    <Passengers>
      <Primary RPH="1" Age="25">
        <PersonName>
          <NamePrefix>Mr</NamePrefix>
          <GivenName>Bender</GivenName>
          <Surname>Bending</Surname>
        </PersonName>
        <Telephone PhoneNumber="+4912252352"/>
        <Email>[email protected]</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>

Playground

OTA_GroundBookRQ API call

Try our API playground in real time.
Use the desired request in the playground and receive responses from our test environment API.

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.