2. Endpoints

2.1. Availability of Car Offers

For the end user, the search is the first step when booking a car. A simple search form might look like this

_images/search-form.png

To implement a search based on this form, the Available Rate message described in this chapter provides the necessary information.

All information provided here is specified in OTA2007A as VehAvailRate request (VehAvailRateRQ) and response (VehAvailRateRS).

2.1.1. Request

The following table lists the parameter, their types and a short description for the request function.

Search parameters

Parameter

Type

Mandatory

Description

MaxResponses

Integer

Defines the maximum number of offers to be returned for each ACRISS-Code category

ReqRespVersion

String

Mandatory

Requested version of the response message

  • large: return vehicles including information about extras

  • medium: return vehicles without information about bookable extras

  • small: not in use

EchoToken

String

Mandatory

Additional message identification

ISOCountry

String

Mandatory

Defines the language (format: ISO 3166-1 alpha-2) and source market (of the affiliate)

AgentSine

String

Agent Code Optional field that can be used to link a reservation to a travel agent

PseudoCityCode

String

Shop reference Optional field that can be used to link a reservation to a affiliate organization unit

ISOCurrency

String

Selects currency to diplay prices in (format: ISO 4217 3-letter code)

RequestorID Type

String

Mandatory

Username (affiliate name)

RequestorID ID_Context

String

Mandatory

Password

RateQueryParameterType

Integer

Mandatory

Defines the rate query parameter type 2. CityID or AirportID 4. IATA code 6. Geo coordinates of the destination (see Geo Coordinates)

VehRentalCore PickUpDateTime

DateTime

Mandatory

Defines date and time the customer will pick up his car

VehRentalCore ReturnDateTime

DateTime

Mandatory

Defines date and time the customer will drop off his car

PickUpLocation LocationCode

String

Mandatory

Defines the location in which the customer will pick up his car (can be IATA code, cita/airport id or geo codes, dependent on RateQueryParameterType)

PickUpLocation CodeContext

Integer

Mandatory

Defines the location type of pickup location

  1. City/Downtown request

  2. Airport request

  3. Location (geo coordinates)

ReturnLocation LocationCode

String

Mandatory

Defines the location the customer will drop off his car

ReturnLocation CodeContext

Integer

Mandatory

Same as for PickUpLocation CodeContext

DriverType Age

Integer

Mandatory

Required for underage and senior drivers, to get information about additional charges

RateQualifier RateQualifier

String

Defines a promotion code used to get discounted offers. If the promotion code is invalid, no discount is applied.

Dynamic currency support (via ISOCurrency) needs to be agreed with Carnect in advance.

2.1.2. Sample Requests

2.1.2.1. By Airport IATA Code

<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehAvailRateRQ EchoToken="1.0" ReqRespVersion="large" Version="1.0">
      <POS>
        <Source ISOCountry="EN">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
        <Source ISOCountry="DE"/>
      </POS>
      <VehAvailRQCore RateQueryType="Live">
        <RateQueryParameterType>4</RateQueryParameterType>
        <VehRentalCore PickUpDateTime="2021-12-12T09:00:00" ReturnDateTime="2021-12-14T09:00:00">
          <PickUpLocation CodeContext="2" LocationCode="LHR"/>
          <ReturnLocation CodeContext="2" LocationCode="LHR"/>
        </VehRentalCore>
      </VehAvailRQCore>
    </VehAvailRateRQ>
  </soap:Body>
</soap:Envelope>

2.1.2.2. By Airport ID

<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehAvailRateRQ EchoToken="1.0" ReqRespVersion="large" Version="1.0">
      <POS>
        <Source ISOCountry="EN">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
        <Source ISOCountry="DE"/>
      </POS>
      <VehAvailRQCore RateQueryType="Live">
        <RateQueryParameterType>2</RateQueryParameterType>
        <VehRentalCore PickUpDateTime="2021-12-12T09:00:00" ReturnDateTime="2021-12-14T09:00:00">
          <PickUpLocation CodeContext="2" LocationCode="974"/>
          <ReturnLocation CodeContext="2" LocationCode="974"/>
        </VehRentalCore>
      </VehAvailRQCore>
    </VehAvailRateRQ>
  </soap:Body>
</soap:Envelope>

2.1.2.3. By City ID

<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehAvailRateRQ EchoToken="1.0" ReqRespVersion="large" Version="1.0">
      <POS>
        <Source ISOCountry="EN">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
        <Source ISOCountry="DE"/>
      </POS>
      <VehAvailRQCore RateQueryType="Live">
        <RateQueryParameterType>2</RateQueryParameterType>
        <VehRentalCore PickUpDateTime="2021-12-12T09:00:00" ReturnDateTime="2021-12-14T09:00:00">
          <PickUpLocation CodeContext="1" LocationCode="51"/>
          <ReturnLocation CodeContext="1" LocationCode="51"/>
        </VehRentalCore>
      </VehAvailRQCore>
    </VehAvailRateRQ>
  </soap:Body>
</soap:Envelope>

2.1.2.4. By Geo Coordinates

<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehAvailRateRQ EchoToken="1.0" ReqRespVersion="large" Version="1.0">
      <POS>
        <Source ISOCountry="EN">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
        <Source ISOCountry="DE"/>
      </POS>
      <VehAvailRQCore RateQueryType="Live">
        <RateQueryParameterType>6</RateQueryParameterType>
        <VehRentalCore PickUpDateTime="2021-12-12T09:00:00" ReturnDateTime="2021-12-14T09:00:00">
          <PickUpLocation CodeContext="3" LocationCode="53.5466451,10.0135512"/>
          <ReturnLocation CodeContext="3" LocationCode="53.5466451,10.0135512"/>
        </VehRentalCore>
      </VehAvailRQCore>
    </VehAvailRateRQ>
  </soap:Body>
</soap:Envelope>

We highly recommend Geo Coordinates based search for customers who allow their users to select pickup / drop off area on the map. That way it makes sense to pass selected geo-point(s) in the search request and get availability from up to 10 closest locations in the 10km radius from selected point.

Note

When building a map-based search, you might want to also use rental location search to be able to display locations (without availability) on the map first (location search - without availability - should be 10 times faster than offer search). However, if the offer search response time is fast enough for your use case, there is no need for this two step approach. Avoid using the output of rental location search as input for bulk/parallel offer search, as this will result in poor performance.

2.1.3. Other request options

2.1.3.1. Using VendorPref Code (specific supplier code)

<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehAvailRateRQ EchoToken="1.0" ReqRespVersion="large" Version="1.0">
      <POS>
        <Source ISOCountry="EN">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
        <Source ISOCountry="DE"/>
      </POS>
      <VehAvailRQCore RateQueryType="Live">
        <RateQueryParameterType>4</RateQueryParameterType>
        <VehRentalCore PickUpDateTime="2021-12-12T09:00:00" ReturnDateTime="2021-12-14T09:00:00">
          <PickUpLocation CodeContext="2" LocationCode="LHR"/>
          <ReturnLocation CodeContext="2" LocationCode="LHR"/>
        </VehRentalCore>
        <VendorPrefs>
          <VendorPref Code="GM"/>
        </VendorPrefs>
      </VehAvailRQCore>
    </VehAvailRateRQ>
  </soap:Body>
</soap:Envelope>

The VendorPrefCode is an optional parameter to limit your response to the offers from only one supplier! This is usually not recommended as it prevents you from receicing Carnect‘s full portfolio. Also keep in mind that only ONE VendorPrefCode can be used.

2.1.3.2. Using Driver’s Age (mandatory)

Driver age example
<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehAvailRateRQ EchoToken="1.0" ReqRespVersion="large" Version="1.0">
      <POS>
        <Source ISOCountry="EN">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
        <Source ISOCountry="DE"/>
      </POS>
      <VehAvailRQCore RateQueryType="Live">
        <RateQueryParameterType>4</RateQueryParameterType>
        <VehRentalCore PickUpDateTime="2021-12-12T09:00:00" ReturnDateTime="2021-12-14T09:00:00">
          <PickUpLocation CodeContext="2" LocationCode="LHR"/>
          <ReturnLocation CodeContext="2" LocationCode="LHR"/>
        </VehRentalCore>
        <DriverType Age="21"/>
      </VehAvailRQCore>
    </VehAvailRateRQ>
  </soap:Body>
</soap:Envelope>

It is mandatory element. Sending the driver’s age in the Age attribute of DriverType element is necessary to calculate the correct under-age and over-age fees. When provided, then you are able to receive the young driver fee (YDS) or senior driver fee (SDS) which supplier charge at the rental location for young / senior drivers (usually under 25 or above 80).

2.1.3.3. Setting Source Country (mandatory)

It is essential to include the Source elements of the POS element in the request in order to get the correct rates returned from the suppliers. In order to do that the <Source ISOCountry=".."> element needs to be included twice like in the following example:

Source country example
<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehAvailRateRQ EchoToken="1.0" ReqRespVersion="large" Version="1.0">
      <POS>
        <Source ISOCountry="EN">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
        <Source ISOCountry="ES"/>
      </POS>
      <VehAvailRQCore RateQueryType="Live">
        <RateQueryParameterType>4</RateQueryParameterType>
        <VehRentalCore PickUpDateTime="2021-12-12T09:00:00" ReturnDateTime="2021-12-14T09:00:00">
          <PickUpLocation CodeContext="2" LocationCode="PMI"/>
          <ReturnLocation CodeContext="2" LocationCode="PMI"/>
        </VehRentalCore>
      </VehAvailRQCore>
    </VehAvailRateRQ>
  </soap:Body>
</soap:Envelope>
  • The first instance (<Source ISOCountry="EN">) sets the language for the desired target translations in the response.

  • The second instance (<Source ISOCountry="ES">) sets the source country, which is mandatory.

In this example, rates for source market Spain will be returned in English language.

2.1.3.4. Search by passangers quantity (optional)

There is possible to search by passangers quantity. Send PassengerQty attribute of VehAvailRQInfo element, eg <VehAvailRQInfo PassengerQty="5" />

Following exmaple will search for cars for minimum 5 passangers.

Search by passangers quantity
<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehAvailRateRQ EchoToken="1.0" ReqRespVersion="large" Version="1.0">
      <POS>
        <Source ISOCountry="EN">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
        <Source ISOCountry="DE"/>
      </POS>
      <VehAvailRQCore RateQueryType="Live">
        <RateQueryParameterType>4</RateQueryParameterType>
        <VehRentalCore PickUpDateTime="2021-12-12T09:00:00" ReturnDateTime="2021-12-14T09:00:00">
          <PickUpLocation CodeContext="2" LocationCode="LHR"/>
          <ReturnLocation CodeContext="2" LocationCode="LHR"/>
        </VehRentalCore>
      </VehAvailRQCore>
      <VehAvailRQInfo PassengerQty="5"/>
    </VehAvailRateRQ>
  </soap:Body>
</soap:Envelope>

2.1.4. Response

Parameter

Type

Description

AdvanceBooking RulesApplyInd

Boolean

Always true, just for backward compatibility

VehAvails > VehAvail > VehAvailCore

[Status]

String

Specifies if the vehicle is available (“Available”)

Vehicle [AirConditionInd]

Boolean

Flag indicating whether the vehicle has air condition or not

Vehicle [TransmissionType]

String

E.g. “manual” or “automatic”

Vehicle [FuelType]

String

E.g. “Petrol” or “Diesel”, s. Appendix

Vehicle [DriveType]

String

“4WD”, “AWD” or “Unspecified”

Vehicle [PassengerQuantity]

Integer

Max. number of passengers

Vehicle [BaggageQuantity]

Integer

Estimated max. number of pieces of luggage

Vehicle [VendorCarType]

String

Supplier specific code of car type

Vehicle [Code]

String

Supplier specific fleet name

Vehicle > VehType [VehicleCategory]

Integer

Corresponds to the category of the vehicle, e.g. ‘Mini’, ‘Economy’ or ‘Compact’ or

Vehicle > VehType [DoorCount]

Integer

Number of doors of the vehicle

Vehicle > VehClass [Size]

Integer

Corresponds to the size of the vehicle, e.g. ‘Mini’, ‘Economy’ or ‘Compact’ or

Vehicle > VehMakeModel [Name]

String

Supplier specific name of the fleet

Vehicle > VehMakeModel [Code]

String

ACRISS code of the vehicle

Vehicle > PictureURL

String

URL to an image representation of the car. Images have a fixed width of at least

VehAvails > VehAvail > VehAvailCore > RentalRate >

RateDistance [Unlimited]

Boolean

Flag indicating whether there is a mileage limitation or not

RateDistance [DistUnitName]

String

Indicator of the distance unit (only if Unlimited=false), can be either ‘km’ or ‘m’ (miles)

RateDistance [VehiclePeriodUnitName]

String

distance unit name (e.g. day).

VehicleCharges > VehicleCharge [CurrencyCode]

String

Letter code of the currency the rental price is referring to See Appendix.

VehicleCharges > VehicleCharge [Amount]

Decimal

Rental price of the vehicle standalone

VehicleCharges > VehicleCharge [TaxInclusive]

Boolean

Flag indicating whether the local tax is included or not

VehicleCharges > VehicleCharge [Purpose]

String

Indicators:
  • Purpose=“original”, indicator about rental price in the supplier partner currency

  • Purpose=“preferred” (either EUR, GBP, or USD), indicator about rental price in the reconciliation currency agreed with the client partner

  • Purpose=“Estimated deposit amount”, indicator about the security deposit amount

  • Purpose=“2”, indicator for the One way charge

  • Purpose=“8”, indicator for extra km/mile charge

VehicleCharges > VehicleCharge [RateConvertInd]

Boolean

Flag to indicate if the rental price has been converted between different currencies

VehicleCharges > VehicleCharge > Calculation [Quantity]

String

Defines rental duration

VehicleCharges > VehicleCharge > Calculation [UnitName]

String

  • For [Purpose]=“original” or “preferred”
    Indicates if the non discounted price is in original or preferred currency accordingly

  • For others
    Unit of the rental duration

VehicleCharges > VehicleCharge > Calculation [UnitCharge]

String

Non discounted price

VehicleCharges > VehicleCharge > Calculation [Percentage]

String

Discounted percentage applied

RateQualifier [VendorRateID]

String

Defines the ratecode group_id which has been set-up for Carnect by the car rental supplier

RateQualifier > RateComments > RateComment [Name]

String

RateRestrictions > MinimumAge

Integer

Minimum age of the driver

RateRestrictions > MaximumAge

Integer

Maximum age of the driver

RateRestrictions > NoShowFeeInd

Boolean

Specifying that a car rental offer has a no show fee

VehAvails > VehAvail > VehAvailCore > TotalCharge

[CurrencyCode]

String

Code of the currency of the rental price.

[EstimatedTotalAmount]

Decimal

Estimated total amount of the vehicle from the rental price and all fees that apply

[RateConvertInd]

Boolean

Flag to indicate if the rental price has been converted between different currencies

VehAvails > VehAvail > VehAvailCore > Fees >

Fee [CurrencyCode]

String

Currency of the fee. See Appendix.

Fee [Amount]

String

Amount of the fee

Fee [TaxInclusive]

String

Describes if the tax is inclusive or not

Fee [Description]

String

Description of the fee

Fee [IncludedInRate]

Boolean

Flag indicating if the fee has been already included in rental price

Fee [IncludedInEstTotalInd]

Boolean

Flag indicating if the fee has been already included in EstimatedTotalAmount

VehAvails > VehAvail > VehAvailCore > Reference

[URL]

String

Deprecated

[Type]

Integer

16 = unique id type ‘reference’

[ID_Context]

String

The unique identifier (reservation reference) used for the reservation request, for price verification response, live search response and direct supplier connection response. It is the unique offer reference to be used for price verification.

VehAvails > VehAvail > VehAvailCore > Vendor

[TravelSector]

String

Static content “Car Rental”

[Code]

String

Short-code of the supplier

[CodeContext]

String

Internal ID of the supplier

VehAvails > VehAvail > VehAvailCore >

VendorLocation [LocationCode]

Integer

Internal code of the location

VendorLocation [CodeContext]

String

The location code from the supplier

VendorLocation [ExtendedLocationCode]

String

Internal location code

VendorLocation [Name]

String

Translated name of the location

VendorLocation [CounterLocation]

Integer

OTA Vehicle Where At Facility code, currently used values:
  • 3 (shuttle off airport)

  • 7 (city downtown)

  • 14 (Airport)

VendorLocation

String

Geo coordinates of the location (see Geo Coordinates)

VehAvails > VehAvail > VehAvailCore >

DropOffLocation [LocationCode]

Integer

Internal code of the location

DropOffLocation [CodeContext]

String

The location code from the supplier

DropOffLocation [ExtendedLocationCode]

String

Internal location code

DropOffLocation [Name]

String

Translated name of the location

DropOffLocation [CounterLocation]

Integer

OTA Vehicle Where At Facility code, currently used values:
  • 3 (shuttle off airport)

  • 7 (city downtown)

  • 14 (Airport)

DropOffLocation

String

Geo coordinates of the location (see Geo Coordinates)

VehAvails > VehAvail > VehAvailCore > TPA_Extensions > Vehicle > BatteryProperties

Range [Distance]

Decimal

Estimate of distance which can be traveled with the vehicles battery

Range [Unit]

String

Unit name of the distance (e.g. Mile or Km)

VehAvails > VehAvail > VehAvailInfo > PricedCoverages > PricedCoverage

Coverage [CoverageType]

String

Description of coverage

Coverage [Code]

Integer

Code of the priced coverage

Coverage > Details > Charge [CurrencyCode]

String

Code of the currency See Appendix.

Coverage > Details > Charge [Amount]

String

Amount of the coverage

Coverage > Details > Charge [TaxInclusive]

Boolean

If TRUE, taxes are included in this charge.

Coverage > Details > Charge [Description]

String

Description of the charge

Coverage > Details > Charge [IncludedInEstTotalInd]

String

Describes if the price for the equipment is included in the charge

Coverage > Details > Charge > Calculation [UnitCharge]

String

Amount of the calculated price

Coverage > Details > Charge > Calculation [UnitName]

String

The unit of the charge

Coverage > Details > Charge > Calculation [Quantity]

String

The quantity of the unit

VehAvails > VehAvail > VehAvailInfo > PaymentRules >

PaymentRule

String

Defines payment model of offer (refer to OTA2007a payment code table). It contains the PaymentType element which indicates the payment mode.

PaymentRule [PaymentType]

Integer

Index to indicate the modes of payment, e.g. if the offer is prepaid during reservation or postpaid at the rental station. E.g. if PaymentType is “5 - Credit Card” then the reservation for that offer requires credit card information. PaymentType can be either 3, 4, 5 or 32

  • 3: payment at reservation to Carnect. Credit card data required

  • 4: payment before pickup to affiliate. Credit card data required

  • 5: payment at reservation to supplier. Credit card data required

  • 32: payment at pickup

VehAvails > VehAvail > VehAvailInfo > TPA_Extensions >

TermsConditions [url]

String

URL to retrieve the supplier specific Terms & Conditions from

ProductInformation [url]

String

URL of the product information document

ProductInformation [temp]

String

URL of the product information as structured data (json). Note: Will be moved to url

SupplierLogo [url]

String

URL of the supplier logo

2.1.5. Sample Responses

2.1.5.1. Full response

Full response
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Header>
    <informationHeader xmlns="http://www.opentravel.org/OTA/2003/05">
      <Successfully>true</Successfully>
      <ProcessingTime>1.9433398</ProcessingTime>
    </informationHeader>
  </soap:Header>
  <soap:Body>
    <VehAvailRateRS EchoToken="1.8624779;" TimeStamp="2021-07-14T15:19:25" Version="3" xmlns="http://www.opentravel.org/OTA/2003/05">
      <VehAvailRSCore>
        <VehRentalCore PickUpDateTime="2021-12-12T09:00:00" Quantity="1" ReturnDateTime="2021-12-14T09:00:00">
          <PickUpLocation LocationCode="974"/>
          <ReturnLocation LocationCode="974"/>
        </VehRentalCore>
        <VehVendorAvails>
          <VehVendorAvail>
            <VehAvails>
              <VehAvail>
                <VehAvailCore Status="Available">
                  <Vehicle AirConditionInd="true" BaggageQuantity="3" Code="Fiat 500, 3 doors, manual or similar model" CodeContext="" DriveType="Unspecified" FuelType="Unspecified" PassengerQuantity="4" TransmissionType="Manual" VendorCarType="1B">
                    <VehType DoorCount="2" VehicleCategory="1"/>
                    <VehClass Size="1"/>
                    <VehMakeModel Code="MBMR" Name="Fiat 500, 3 doors, manual or similar model"/>
                    <PictureURL>https://static.carhire-solutions.com/images/car/Greenmotion/small/1B_GB.jpg</PictureURL>
                  </Vehicle>
                  <RentalRate>
                    <RateDistance DistUnitName="Mile" Quantity="100" Unlimited="false" VehiclePeriodUnitName="Day"/>
                    <VehicleCharges>
                      <VehicleCharge Amount="56.55" CurrencyCode="GBP" Purpose="original" RateConvertInd="true" TaxInclusive="true">
                        <Calculation Quantity="2" UnitName="Day"/>
                      </VehicleCharge>
                      <VehicleCharge Amount="66.32" CurrencyCode="EUR" Purpose="preferred" RateConvertInd="true" TaxInclusive="true"/>
                      <VehicleCharge Amount="0.30" CurrencyCode="GBP" Description="A limit of 100 miles per day applies. Additional mileage 0.25 GBP per mile. In case of cross boarder the additional mileage is at 0.50 GBP per mile" Purpose="8"/>
                      <VehicleCharge Amount="1333.00" CurrencyCode="GBP" Description="Upon collection of the car a security deposit will be blocked on the driver’s credit card. This deposit is determined by supplier considering your selected car category. The value of one tank of fuel and possible traffic fines can be additionally blocked on a valid credit card (prepaid debit cards, prepaid credit cards and cash cannot be accepted). For luxury cars two credit cards in the same name are required for all rentals. The credit card must not be from the same issuer. At least one of the credit cards must have enough funds for the full deposit amount. Please note some suppliers will not accept American Express, Carte Bleue, Union Pay, Visa Premier or Diners Club credit cards, we strongly recommend to use a Visa or Mastercard. In the event that you fail to produce a valid credit card or have insufficient funds available the car rental agent may refuse to release the vehicle. In this instance no funds will be reimbursed.Estimated deposit amount:: GBP 1333" IncludedInEstTotalInd="false" Purpose="Estimated deposit amount" RateConvertInd="true" TaxInclusive="true"/>
                    </VehicleCharges>
                    <RateQualifier VendorRateID="GMF2F UK">
                      <RateComments>
                        <RateComment Name="SilverPackage"/>
                      </RateComments>
                    </RateQualifier>
                    <RateRestrictions>
                      <MinimumAge>21</MinimumAge>
                      <MaximumAge>80</MaximumAge>
                      <NoShowFeeInd>false</NoShowFeeInd>
                    </RateRestrictions>
                  </RentalRate>
                  <TotalCharge CurrencyCode="GBP" EstimatedTotalAmount="56.55" RateConvertInd="false"/>
                  <Fees>
                    <Fee Amount="0.00" CurrencyCode="EUR" Description="Location service charge(LSC)" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
                    <Fee Amount="0.00" CurrencyCode="EUR" Description="Vehicle Licence Fee / Road fund license(VLF)" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
                    <Fee Amount="0.00" CurrencyCode="EUR" Description="VAT(TAX)" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
                  </Fees>
                  <Reference ID_Context="1-ykL1YyCECgkVriZQP3Hg-0" Type="16"/>
                  <Vendor Code="GM" CodeContext="241" TravelSector="Car Rental">Greenmotion</Vendor>
                  <VendorLocation CodeContext="6" CounterLocation="14" ExtendedLocationCode="974-GM6" LocationCode="1258879" Name="London Heathrow Airport">51.4775,-0.461389</VendorLocation>
                  <DropOffLocation CodeContext="6" CounterLocation="14" ExtendedLocationCode="974-GM6" LocationCode="1258879" Name="London Heathrow Airport">51.4775,-0.461389</DropOffLocation>
                </VehAvailCore>
                <VehAvailInfo>
                  <PricedCoverages>
                    <PricedCoverage>
                      <Coverage Code="55" CoverageType="Stay Safe Initiative">
                        <Details>
                          <Charge Amount="0.00" CurrencyCode="EUR" Description="Stay Safe Initiative" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true">
                            <Calculation Quantity="1" UnitCharge="0.00" UnitName="PreferredCurrencyPrice"/>
                          </Charge>
                        </Details>
                      </Coverage>
                      <Charge/>
                    </PricedCoverage>
                    <PricedCoverage>
                      <Coverage Code="417" CoverageType="A limit of 100 miles per day applies. Additional mileage 0.25 GBP per mile. In case of cross boarder the additional mileage is at 0.50 GBP per mile">
                        <Details>
                          <Charge Amount="0.30" CurrencyCode="GBP" Description="per mile: £0.30" IncludedInEstTotalInd="false" TaxInclusive="true">
                            <Calculation Quantity="1" UnitCharge="0.35" UnitName="PreferredCurrencyPrice"/>
                          </Charge>
                        </Details>
                      </Coverage>
                      <Charge/>
                    </PricedCoverage>
                    <PricedCoverage>
                      <Coverage Code="CDW" CoverageType="Collision damage waiver">
                        <Details>
                          <Charge Amount="0.00" IncludedInRate="true"/>
                        </Details>
                      </Coverage>
                      <Charge Amount="0.00" CurrencyCode="EUR" Description="with excess up to 1,205 GBP" GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
                    </PricedCoverage>
                    <PricedCoverage>
                      <Coverage Code="SLI" CoverageType="Supplementary Liability Insurance">
                        <Details>
                          <Charge Amount="0.00" IncludedInRate="true"/>
                        </Details>
                      </Coverage>
                      <Charge Amount="0.00" CurrencyCode="EUR" Description="Legally required, insurance for damages on the adversarial vehicle, persons and objects- In this offer it is included." GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
                    </PricedCoverage>
                    <PricedCoverage>
                      <Coverage Code="TP" CoverageType="Theft protection">
                        <Details>
                          <Charge Amount="0.00" IncludedInRate="true"/>
                        </Details>
                      </Coverage>
                      <Charge Amount="0.00" CurrencyCode="EUR" Description="with excess up to 1,205 GBP" GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
                    </PricedCoverage>
                    <PricedCoverage>
                      <Coverage Code="VLF" CoverageType="Vehicle Licence Fee / Road fund license">
                        <Details>
                          <Charge Amount="0.00" IncludedInRate="true"/>
                        </Details>
                      </Coverage>
                      <Charge Amount="0.00" CurrencyCode="EUR" Description="Depending on national regulations, additional charges may apply- In this offer it is included." GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
                    </PricedCoverage>
                    <PricedCoverage>
                      <Coverage Code="ASC" CoverageType="Airport Service Charge">
                        <Details>
                          <Charge Amount="0.00" IncludedInRate="true"/>
                        </Details>
                      </Coverage>
                      <Charge Amount="0.00" CurrencyCode="EUR" Description="Some airports charge a service fee- In this offer it is included." GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
                    </PricedCoverage>
                    <PricedCoverage>
                      <Coverage Code="L2L" CoverageType="Fuel Information">
                        <Details>
                          <Charge Amount="0.00" IncludedInRate="true"/>
                        </Details>
                      </Coverage>
                      <Charge Amount="0.00" CurrencyCode="EUR" Description="Level to Level: The vehicle should be returned with the same amount of fuel as delivered." GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
                    </PricedCoverage>
                    <PricedCoverage>
                      <Coverage Code="TAX" CoverageType="VAT">
                        <Details>
                          <Charge Amount="0.00" IncludedInRate="true"/>
                        </Details>
                      </Coverage>
                      <Charge Amount="0.00" CurrencyCode="EUR" Description="The rate corresponds with the VAT-rate of the particular country." GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
                    </PricedCoverage>
                    <PricedCoverage>
                      <Coverage Code="CF" CoverageType="Cancellation fee">
                        <Details>
                          <Coverage CoverageType="2021-07-14T14:19:25_2021-12-11T09:00:00"/>
                          <Charge Amount="0.00" CurrencyCode="EUR" Description="Cancellation is free of charge. A cancellation fee of 100 percent or a maximum of 50.00 EUR will be charged from 11 Dec 2021 09:00 until 12 Dec 2021 09:00. A no show fee of 100 percent will be charged." IncludedInRate="true"/>
                        </Details>
                        <Details>
                          <Coverage CoverageType="2021-12-11T09:00:00_2021-12-12T09:00:00"/>
                          <Charge Amount="50.00" CurrencyCode="EUR" Description="Cancellation is free of charge. A cancellation fee of 100 percent or a maximum of 50.00 EUR will be charged from 11 Dec 2021 09:00 until 12 Dec 2021 09:00. A no show fee of 100 percent will be charged."/>
                        </Details>
                        <Details>
                          <Coverage CoverageType="2021-12-12T09:00:00_2022-03-07T00:00:00"/>
                          <Charge Amount="66.32" CurrencyCode="EUR" Description="Cancellation is free of charge. A cancellation fee of 100 percent or a maximum of 50.00 EUR will be charged from 11 Dec 2021 09:00 until 12 Dec 2021 09:00. A no show fee of 100 percent will be charged."/>
                        </Details>
                      </Coverage>
                      <Charge IncludedInRate="true"/>
                    </PricedCoverage>
                  </PricedCoverages>
                  <PaymentRules>
                    <PaymentRule PaymentType="4">Prepayment: Full rental price due at time of reservation. At pick-up a valid credit card in main driver´s name is required as a guarantee. Prepaid or debit cards, such as Maestro, Visa electron, Visa Premier or Carte Bleue are not accepted.</PaymentRule>
                  </PaymentRules>
                  <TPA_Extensions>
                    <TermsConditions url="https://static.carhire-solutions.com/pdf/cnx_tac_en-gb.pdf" xmlns=""/>
                    <ProductInformation temp="https://master.createpdf.cnx-ft.com/en-gb/products/1-ykL1YyCECgkVriZQP3Hg-0?format=json" url="https://master.createpdf.cnx-ft.com/en-gb/products/1-ykL1YyCECgkVriZQP3Hg-0" xmlns=""/>
                    <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo241.png" xmlns=""/>
                    <RateInformation BusinessModel="2" PriceType="2"/>
                  </TPA_Extensions>
                </VehAvailInfo>
                <AdvanceBooking RulesApplyInd="true"/>
              </VehAvail>
            </VehAvails>
          </VehVendorAvail>
        </VehVendorAvails>
      </VehAvailRSCore>
    </VehAvailRateRS>
  </soap:Body>
</soap:Envelope>

2.1.5.2. TotalCharge

Contains the total price of the rental offer excluding mandatory fees (see fees below). The TotalCharge is always returned in the original currency of the car rental supplier.

2.1.5.3. VehicleCharge

Contains rental price of the car in original currency (usually the currency of the supplier partner) as well as in your preferred currency. It also provides information about:

  • Discounted prices (if applicable)

  • One-way fee (if applicable)

  • Limited mileage information

  • After hour charges (if applicable)

  • Deposit amount

and more (depending on applicability).

2.1.5.3.1. Discounted Price
Discounted price example
<VehicleCharges>
  <VehicleCharge CurrencyCode="USD" Amount="223.76" TaxInclusive="true" Purpose="original"
    RateConvertInd="true">
    <Calculation UnitName="Day" Quantity="3" />
    <Calculation UnitCharge="248.62" UnitName="original-no-discount" Percentage="10.00" />
  </VehicleCharge>
  <VehicleCharge CurrencyCode="EUR" Amount="209.92" TaxInclusive="true" Purpose="preferred"
    RateConvertInd="true">
    <Calculation UnitCharge="233.24" UnitName="preferred-no-discount" Percentage="10.00" />
  </VehicleCharge>
  <VehicleCharge CurrencyCode="USD" Amount="160.00" TaxInclusive="true"
    Description="Upon collection of the car a security deposit will be blocked on the driver’s credit card. This deposit is determined by supplier considering your selected car category. Please be informed that the value of one tank of fuel and possible traffic fines can be additionally blocked on your credit card. It is recommended to present a credit card with chip, pin code and embossed numbers.Estimated deposit amount:: USD 160"
    IncludedInEstTotalInd="false" Purpose="Estimated deposit amount" RateConvertInd="true" />
</VehicleCharges>

The API will provide an indication when a promotion has been applied, as demonstrated in the example above. In this instance, the discounted price is shown as 223.76 USD, with the original non-discounted price being 248.62 USD, indicating a 10% discount.

These amounts are reflected and displayed in the original and preferred currency of the client partner.

2.1.5.3.2. One-way fee
One-way fee example
<VehicleCharges>
  <VehicleCharge CurrencyCode="EUR" Amount="150.00" TaxInclusive="true"
  Description="Oneway fee" IncludedInEstTotalInd="false" Purpose="2" RateConvertInd="true" />
  <MinMax />
</VehicleCharges>

Here is an example of one-way fee under VehicleCharges. “IncludedInEstTotalInd” is set to false, so you have to add the fee of 150 EUR to the rental price to calculate the total amount. The one-way fee has to be paid at the rental location.

2.1.5.3.3. Mileage information
Milage information example
<VehAvail>
  <VehAvailCore Status="Available">
    <RentalRate>
      <RateDistance DistUnitName="Km" Quantity="300" Unlimited="false"
      VehiclePeriodUnitName="Day" />
      <VehicleCharges>
        <VehicleCharge CurrencyCode="EUR" Amount="0.40"
        Description="Limited mileage of 300 km/day, maximum 3000 Km per rental, Extra mileage s possible and charged locally at 0,40 €/ KM."
        Purpose="8" />
      </VehicleCharges>
    </RentalRate>
  </VehAvailCore>
  <VehAvail></VehAvail>
</VehAvail>

Car rental supplier partners can provide mileage information like in the example above. This would mean that the customer is allowed to drive 300 km per day and maximum 3000 km per rental for free. Every additional km costs 0,40 € and will be charged by the car rental supplier after delivery of the rental car at the drop off station. It is essential that the client partner displays the whole information in the description text to the customer. Please keep in mind that the extra cost for further driven kilometres are only applying in case the driver takes advantage of this.

2.1.5.3.4. Out of hours fee
Out of hours fee example
<VehicleCharges>
  <VehicleCharge CurrencyCode="EUR" Amount="27.00" TaxInclusive="true" Description="Oneway fee"
  IncludedInEstTotalInd="false" Purpose="2" RateConvertInd="true" />
  <VehicleCharge CurrencyCode="EUR" Amount="10.00" Description="Out of Hours Fee - Pick Up"
  IncludedInEstTotalInd="false" Purpose="16" />
  <VehicleCharge CurrencyCode="EUR" Amount="15.00" Description="Out of Hours Fee - Drop Off"
  IncludedInEstTotalInd="false" Purpose="17" />
</VehicleCharges>

An after hour charge might apply, if the customer requests to pickup and/or drop-off the vehicle outside regular opening hours. These charges are shown as VehicleCharge in the response. A flag indicates if the charge is already included in the rate price. In the example above the pickup and drop-off are outside of normal opening hours. Therefore additional charges of 10 € (for pickup) and 15 € (for drop off) apply.

Note

For the development of the “Out of hours fee” please contact integrations@carnect.com as this service has to be activated first.

2.1.5.4. PricedCoverages

The PricedCoverages contain everything that is included in the car rental offer / rental price or that is mandatory for a booking. You can find all insurances, fees and policies in the PricedCoverages section that are part of the rate price as well as information about the excess amounts. These items can be included in the total rental price (IncludedInEstTotalInd="true") or need to be paid separately at the pick-up location (IncludedInEstTotalInd="false"). It is very important to read out these PricedCoverages correctly according to the structure in the AvailRate Response so that the customer is aware that he has to pay for a certain fee at the rental location (in case this policy / fee / insurance is not included in the rate).

Below policies / fees / insurances can be part of PricedCoverages:

2.1.5.4.1. One-way fee
One-way fee example
<PricedCoverage>
  <Coverage Code="412" CoverageType="Oneway fee">
    <Details>
      <Charge Amount="110.00" CurrencyCode="EUR" Description="per rental: 110.00 EUR" IncludedInEstTotalInd="false" TaxInclusive="false">
        <Calculation Quantity="1" UnitCharge="110.00" UnitName="PreferredCurrencyPrice"/>
      </Charge>
    </Details>
  </Coverage>
</PricedCoverage>

A oneway fee applies when the drop-off location is different than the pick-up location. IncludedInEstTotalInd is set to false, which means this fee is not included in the price and has to be paid at the rental location.

2.1.5.4.2. Young driver surcharge
Young driver surcharge example
<PricedCoverages>
  <PricedCoverage>
    <Coverage CoverageType="Young Driver Surcharge" Code="410">
      <Details>
        <Charge CurrencyCode="EUR" Amount="17.00" TaxInclusive="true"
        Description="per day: 8.50 EUR" IncludedInEstTotalInd="false">
          <Calculation UnitCharge="14.94" UnitName="PreferredCurrencyPrice" Quantity="1" />
        </Charge>
      </Details>
    </Coverage>
  </PricedCoverage>
</PricedCoverages>

In the example above the total charge for the young driver is 17 EUR for the whole rental. The price per day is 8.50 EUR. In Calculation Unit Charge the total charge will be also displayed in the preferred currency of the client partner. In the example the preferred currency is GBP. The young driver surcharge has to be paid at the rental location.

2.1.5.4.3. Limited mileage information
Limited mileage information example
<VehAvail>
  <VehAvailCore Status="Available">
    <RentalRate>
      <RateDistance DistUnitName="Km" Quantity="300" Unlimited="false"
      VehiclePeriodUnitName="Day" />
      <!-- [...] -->
    </RentalRate>
  </VehAvailCore>
  <VehAvailInfo>
    <PricedCoverage>
      <Coverage CoverageType="Limited mileage of 300 km/day, maximum 3000 Km per rental, Extra mileage is possible and charged locally at 0,60 €/ KM."
      Code="416">
        <Details>
          <Charge CurrencyCode="EUR" Amount="0.60" TaxInclusive="true"
          Description="per km: 0.60 EUR" IncludedInEstTotalInd="false">
            <Calculation UnitCharge="0.53" UnitName="PreferredCurrencyPrice" Quantity="1" />
          </Charge>
        </Details>
      </Coverage>
    </PricedCoverage>
  </VehAvailInfo>
  <VehAvail></VehAvail>
</VehAvail>

Information about limited mileage is also displayed in PricedCoverages. Car rental supplier partners can provide mileage information like in the example above. This would mean that the customer is allowed to drive 300 km per day and maximum 3000 km per rental for free. Every additional km costs 0,60 € and will be charged by the car rental supplier after delivery of the rental car at the pick-up station. The Calculation UnitCharge provides the aaditional cost amount in the preferred currency of the client partner. In this example this is GBP. It is essential that the client partner displays the whole information in the description text to the customer.

2.1.5.4.4. Collision Damage Waiver
Collision Damage Waiver example
<PricedCoverage>
  <Coverage CoverageType="Collision damage waiver" Code="CDW">
    <Details>
      <Charge Amount="0.00" IncludedInRate="true" />
    </Details>
    <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
    Description="with excess up to 900 EUR" GuaranteedInd="true" IncludedInRate="true"
    IncludedInEstTotalInd="true" />
  </Coverage>
</PricedCoverage>

In this example you can see that this offer contains a collision damage waiver (CDW). The price for the CDW is already included in the rental price (IncludedInRate="true"). Therefore, the amount itself is 0.00 €. In the description text you can see that the price for the excess can be up to 900 EUR in case of a damage.

2.1.5.4.5. Theft Protection
Theft protection example
<PricedCoverage>
  <Coverage CoverageType="Theft Protection" Code="TP">
    <Details>
      <Charge Amount="0.00" IncludedInRate="true" />
    </Details>
    <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
    Description="with excess up to 900 EUR" GuaranteedInd="true" IncludedInRate="true"
    IncludedInEstTotalInd="true" />
  </Coverage>
</PricedCoverage>

In this example you can see that this offer contains a Theft Protection (TP). The price for the TP is already included in the rental price (IncludedInRate="true"). Therefore, the amount itself is 0.00 €. In the description text you can see that the price for the excess can be uo to 900 € in case of theft.

2.1.5.4.6. Supplementary Liability Insurance
Supplementary Liability Insurance example
<PricedCoverage>
  <Coverage CoverageType="Supplementary Liability Insurance" Code="SLI">
    <Details>
      <Charge Amount="0.00" IncludedInRate="true" />
    </Details>
    <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
    Description="Legally required, insurance for damages on the adversarial vehicle, persons and objects- In this offer it is included"
    GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
  </Coverage>
</PricedCoverage>

In this example you can see that this offer contains a Supplementary Liability Insurance (SLI). The price for the SLI is already included in the rental price (IncludedInRate=”true”). Therefore, the amount is 0.00 €.

2.1.5.4.7. Airport Service Charge
Airport Service Charge example
<PricedCoverage>
  <Coverage CoverageType="Airport Service Charge" Code="ASC">
    <Details>
      <Charge Amount="0.00" IncludedInRate="true" />
    </Details>
    <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
    Description="Some airports charge a service fee- In this offer it is included"
    GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
  </Coverage>
</PricedCoverage>

In this example you can see that this offer contains an Airport Service Charge (ASC). The price for the ASC is already included in the rental price (IncludedInRate=”true”). Therefore, the amount is 0.00 €.

2.1.5.4.8. Fuel Information
Fuel information example
<PricedCoverage>
  <Coverage CoverageType="Fuel Information" Code="F2F">
    <Details>
      <Charge Amount="0.00" IncludedInRate="true" />
    </Details>
    <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
    Description="Full to Full: Pick up and drop off with a full tank. If the car is not returned with a full tank, suppliers will charge fuel plus refueling charges"
    GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
  </Coverage>
</PricedCoverage>

There are 4 different fuel policy options which you can find in the AvailRate Response:

  • F2E (Full to Empty)

  • F2F (Full to Full)

  • L2L (Level to Level)

  • FFI (First Fuel Included)

In the above example you see the fuel policy “F2E”. Every fuel policy comes with a description text for explanation. It is essential to display this description text.

2.1.5.4.9. VAT
VAT example
<PricedCoverage>
  <Coverage CoverageType="VAT" Code="TAX">
    <Details>
      <Charge Amount="0.00" IncludedInRate="true" />
    </Details>
    <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
    Description="The rate corresponds with the VAT-rate of the particular country"
    GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
  </Coverage>
</PricedCoverage>
2.1.5.4.10. Cancellation Fee
Cancellation fee example (new)
<Coverage CoverageType="Cancellation fee" Code="CF">
  <Details>
    <Coverage CoverageType="2019-01-29T16:31:52_2019-03-28T12:00:00" />
    <Charge CurrencyCode="EUR" Amount="0.00"
    Description="Cancellation is free of charge until 28 Mar 2019. A cancellation fee of 3.47 EUR will be charged from 28 Mar 2019 until 30 Mar 2019. A now show fee of 3.47 EUR will be charged."
    IncludedInRate="true" />
  </Details>
  <Details>
    <Coverage CoverageType="2019-03-28T12:00:00_2019-03-30T12:00:00" />
    <Charge CurrencyCode="EUR" Amount="3.47"
    Description="Cancellation is free of charge until 28 Mar 2019. A cancellation fee of 3.47 EUR will be charged from 28 Mar 2019 until 30 Mar 2019. A now show fee of 3.47 EUR will be charged." />
  </Details>
  <Details>
    <Coverage CoverageType="2019-03-30T12:00:00_2019-05-30T12:00:00" />
    <Charge CurrencyCode="EUR" Amount="3.47"
    Description="Cancellation is free of charge until 28 Mar 2019. A cancellation fee of 3.47 EUR will be charged from 28 Mar 2019 until 30 Mar 2019. A now show fee of 3.47 EUR will be charged." />
  </Details>
</Coverage>
<Charge IncludedInRate="true" />

Note

The cancellation fee is calculated according to the date of cancellation. The last node with the cancellation date equal to the pick-up date displays the “no-show-fee”. You might occasionally see data in the following old format, while we migrate our data structures to the new format. Please make sure your application is able to process both formats.

Cancellation fee example (old)
<PricedCoverage>
  <Coverage CoverageType="Cancellation fee" Code="CF">
    <Details>
      <Coverage CoverageType="2018-06-05T15:46:18_2018-10-30T10:00:00" />
      <Charge CurrencyCode="EUR" Amount="0.00"
      Description="Up to 48hours before pick-up, cancellation free of charge. Within 48hours prior to pick-up and in the event of a no-show 100% of the sales price will be charged."
      IncludedInRate="true" />
    </Details>
    <Details>
      <Coverage CoverageType="2018-10-30T10:00:00_2018-11-01T10:00:00" />
      <Charge CurrencyCode="EUR" Amount="43.97"
      Description="Up to 48hours before pick-up, cancellation free of charge. Within 48hours prior to pick-up and in the event of a no-show 100% of the sales price will be charged.">

        <Calculation UnitCharge="38.63631"
        UnitName="PreferedCurrencyPrice: CurrencyCode=GBP" />
      </Charge>
    </Details>
  </Coverage>
</PricedCoverage>
2.1.5.4.11. Other taxes and service charges
Other taxes and service charges example
<PricedCoverages>
  <PricedCoverage>
    <Coverage CoverageType="Other taxes and service charges" Code="418">
      <Details>
        <Charge CurrencyCode="USD" Amount="49.71" TaxInclusive="true"
        Description="per rental: $49.71" IncludedInRate="true" IncludedInEstTotalInd="true">
          <Calculation UnitCharge="42.39" UnitName="PreferredCurrencyPrice" Quantity="1" />
        </Charge>
      </Details>
    </Coverage>
  </PricedCoverage>
</PricedCoverages>

Other taxes and services charges can be other small fees that specific car rental suppliers charge. These taxes and service charges can be either included or excluded in the rate and have to be displayed accordingly.

In the above example you see that the charge is not included in the rate as it is stated as IncludedInEstTotalInd="false". This charge has to be paid at the rental location.

2.1.5.4.12. Stay Safe Initiative
Stay Safe Initiative example
<PricedCoverage>
  <Coverage Code="55" CoverageType="Stay Safe Initiative">
    <Details>
      <Charge Amount="0.00" CurrencyCode="EUR" Description="Stay Safe Initiative" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true">
        <Calculation Quantity="1" UnitCharge="0.00" UnitName="PreferredCurrencyPrice"/>
      </Charge>
    </Details>
  </Coverage>
</PricedCoverage>

Due to the unprecedented health crisis, the car rental suppliers have put special measures in place to provide you with a safe and flexible travel experience. The utmost attention is being paid to cleaning the vehicles. Additional to the high standards of cleaning there is now an enhanced process in place, which involves the sanitizing of every vehicle between each rental using detergent cleaning products to protect all customers and add peace of mind.

2.1.5.5. Geo Coordinates

Geo coordinates for pick up and drop off locations can be found in the <VendorLocation> and <DropOffLocation> nodes like in this example:

Geo coordinates example
<VehAvailCore>
  <Reference URL="https://www.carhiremarket.com/upsell_parameter.aspx?reference_number=01409458207715101213A129845978&amp;live=true"
  Type="16" ID_Context="Vv3-0" />
  <Vendor TravelSector="Car Rental" Code="ZI" CodeContext="10">Avis</Vendor>
  <VendorLocation LocationCode="490614" CodeContext="PMI" ExtendedLocationCode="1931-ZIPMI"
  CounterLocation="14" Name="Palma De Mallorca Airport">51.4660000,-0.4220000</VendorLocation>
  <DropOffLocation LocationCode="490614" CodeContext="PMI" ExtendedLocationCode="1931-ZIPMI"
  CounterLocation="14" Name="Palma De Mallorca Airport">51.4660000,-0.4220000</DropOffLocation>
</VehAvailCore>

This enables use cases like drawing a map of available pick up locations.

Note that the same geo coordinates are available on RateRule requests, too. However, they are represented differently in a <TPA_Extensions> like in this example.

Note

This feature might require activation for your account, please contact integrations@carnect.com for more information.

2.1.5.6. Battery Properties

Battery Properties example
<VehAvailCore Status="Available">
  <Vehicle AirConditionInd="true" TransmissionType="Automatic" FuelType="Electric" DriveType="Unspecified" PassengerQuantity="4" BaggageQuantity="2" VendorCarType="CCAE" Code="CUPRA BORN ELEKTRO" CodeContext="">
    <VehType VehicleCategory="25" DoorCount="5"/>
    <VehClass Size="4"/>
    <VehMakeModel Name="CUPRA BORN ELEKTRO" Code="CCAE"/>
    <PictureURL>https://vehicles.carhire-solutions.com/395/small/1962238_CCAE.jpg</PictureURL>
  </Vehicle>
  <RentalRate>
    ...
  </RentalRate>
  <TotalCharge CurrencyCode="EUR" EstimatedTotalAmount="218.65" RateConvertInd="false"/>
  <Fees>
    ...
  </Fees>
  <Reference Type="16" ID_Context="BCmZzIURHUKL-2yLF366ng-8"/>
  <Vendor TravelSector="Car Rental" Code="BH" CodeContext="395">Buchbinder Deutschland</Vendor>
  <VendorLocation LocationCode="7678770" CodeContext="HAML01" ExtendedLocationCode="47-BHHAML01" CounterLocation="7" Name="Hamburg Railway Station">53.5543,10.007</VendorLocation>
  <DropOffLocation LocationCode="7678770" CodeContext="HAML01" ExtendedLocationCode="47-BHHAML01" CounterLocation="7" Name="Hamburg Railway Station">53.5543,10.007</DropOffLocation>
  <TPA_Extensions>
    <BatteryProperties>
      <Range Distance="380" Unit="Km"/>
      <Range Distance="235" Unit="Mile"/>
    </BatteryProperties>
  </TPA_Extensions>
</VehAvailCore>

In the example above the estimated battery range for the electric vehicle is 380 kilometers / 235 miles. The Battery Properties TPA Extension contains the estimated distance the chosen electric vehicle is able to drive with a full battery charge.

For the following endpoints, when the FuelType="Electric", the battery range will be returned (when available) within the Battery Properties TPA Extension VehAvails > VehAvail > VehAvailCore > TPA_Extensions > Vehicle > BatteryProperties >:

  1. Availability (VehAvailRate)

  2. RateRule (VehRateRule)

  3. Reservation (VehReservation)

  4. Retrieve (VehRetRes)

Note

The battery range is also available on the Product Information and Voucher Confirmation in section BATTERY RANGE

2.1.6. Different rate packages

Packages

Product features

Base Package

Bronze Package

Silver Package

Gold Package

(Standard)

(Standard)

Protection (CDW / TP)

not included (amount up to the value of the car)

with excess

with excess

without excess

Fuel policy

F2F, L2L, FFI

F2E

F2F, L2L, FFI

F2F, L2L, FFI

Mileage

limited or unlimited

limited or unlimited

limited or unlimited

limited or unlimited

Deposit amount information

No amount available* (see note below)

Estimated deposit amount available

Estimated deposit amount available

Estimated deposit amount available

Destinations where the product is mainly available

USA/CA/LATAM (domestic)

Spain, Italy

Global

Global

Note

Deposit is determined by supplier considering the selected car category. The value of one fuel tank and possible traffic fines can be additionally blocked.

For both Standard packages there is also Standard Plus version of each package. Please see the differences in the table below.

Standard Plus

Product features

Bronze Package

Silver Package

(Standard Plus)

(Standard Plus)

Protection (CDW / TP)

without excess (reimbursed)

without excess (reimbursed)

<RateQualifier VendorRateID="MICRONNEXUS">
        <RateComments>
                <RateComment Name="BasePackage"/>
        </RateComments>
</RateQualifier>

<RateQualifier VendorRateID="MICRONNEXUS">
        <RateComments>
                <RateComment Name="BronzePackage"/>
        </RateComments>
</RateQualifier>

<RateQualifier VendorRateID="MICRONNEXUS">
        <RateComments>
                <RateComment Name="SilverPackage"/>
        </RateComments>
</RateQualifier>

<RateQualifier VendorRateID="MICRONNEXUS">
        <RateComments>
                <RateComment Name="GoldPackage"/>
        </RateComments>
</RateQualifier>

<RateQualifier VendorRateID="MICRONNEXUS">
        <RateComments>
                <RateComment Name="StandardPlus"/>
        </RateComments>
</RateQualifier>

Information about the details of the package are given in the PricedCoverages and VehicleCharges in the AvailRate Response. The identifier for the package is provided in the Name attribute of RateComment element.

Note

The names of the packages are more meant as identifiers for the different packages. You are free to use other names which would better fit to your general product and website. We recommend to brand the different packages on your sales channels to provide the customers a better overview and give them the option to filter for the best suitable product.

2.1.7. Standard Plus Package

The StandardPlus package includes a Full Protection insurance as part of the Car rental package. The insurance price is included in the car rental rate, which is also represented by a PricedCoverage node in the response:

PricedCoverage for insurance
<PricedCoverage>
  <Coverage CoverageType="Full Protection" Code="413">
    <Details Required="true">
      <Charge CurrencyCode="EUR" Amount="29.20" TaxInclusive="true"
      Description="per day: 7.30 EUR" IncludedInEstTotalInd="true">
        <Calculation UnitCharge="29.20" UnitName="PreferredCurrencyPrice" Quantity="1" />
      </Charge>
    </Details>
  </Coverage>
  <Charge />
</PricedCoverage>

Further details on the coverage of the Full protection can be extracted from the InsuranceContent node. It contains also the Terms&Conditions, the policy wording that is offered as well as the insuring underwriter and must be made available to the end customer for reference.

InsuranceContent
<TPA_Extensions>
  <TermsConditions xmlns="" url="https://static.carhire-solutions.com/pdf/cnx_tac_de-de.pdf" />
  <ProductInformation xmlns=""
  url="https://createpdf.carhire-solutions.com/de/products/frSGXQI1"
  temp="https://createpdf.carhire-solutions.com/de/products/frSGXQI1?format=json" />
  <SupplierLogo xmlns=""
  url="https://static.carhire-solutions.com/images/supplier/logo/logo316.png" />
  <InsuranceContent xmlns=""
  url="https://createpdf.carhire-solutions.com/en/insurance/mn7O5wM1" />
</TPA_Extensions>

Note

The StandardPlus package might require activation for your account, please contact integrations@carnect.com for more information.

Find more information in the Insurance Chapter.

2.1.8. Identification of different rate and business models

The majority of our car rental suppliers are providing us net rates but some are only working with gross rates. The difference in both rate types is that net rates are meant to be modified by you. That means you will add a mark-up on top of the net rate to define your own selling price towards your customers. Gross rates are NOT meant to me modified! That means that the selling price has to be taken out of the availrate response and has to be sold at this price.

The following table lists the parameters, their types and a short description:

PriceType

1 = gross price 2 = net price

gross price

Fixed rate from the supplier. No mark-up applicable. Commission will be paid

net price

Rate from CARNECT, Mark-up possible vs. commission paid will depend on the BusinessModel agreed.

Business Model

1 = Commissionable 2 = Not commissionable 3 = Switch

Not commissionable

identifies a net price. To gain margin the client partner shall add a mark-up on top of this rate and determine the final selling price

Commissionable

no mark applicable on this rate. The client partner will receive a commission from Carnect

Switch

contractual basis is exclusively between the client partner and the supplier. Carnect is simply acting as a technology provider by transferring this rate through the API. Carnect will receive a transaction fee for every booking.

Commission Base

the basis for the commission payment to the client partner

Commission

the commission amount which will be paid to the client partner for this particular offer

Commission

the currency in which the CommissionBase and the Amount is displayed

2.1.8.1. Wholesale Model

If you agree on a Wholesale Model with us you will „only“ receive net rates. That would mean you will mark-up these rates and define the final selling price for your customer. In the availrate response this will look like below:

Wholesale Model
 <TPA_Extensions>
                <TermsConditions url="https://static.carhire-solutions.com/pdf/cnx_tac_en-gb.pdf" xmlns=""/>
                <ProductInformation url="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb" temp="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb?format=json" xmlns=""/>
                <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo61.png" xmlns=""/>
                <RateInformation PriceType="2" BusinessModel="2"/>
 </TPA_Extensions>

The rate with pricetype = 2 defines a net rate and the Business Model = 2 defines this rate is not commissionable. That means you would need to add a mark-up on top to define the selling price and earn margin.

2.1.8.2. Commissionable Model

If you agree on a Commissionable Model with us you will receive two different scenarios in the availrate response:

Commissionable Model, Net rate
<TPA_Extensions>
               <TermsConditions url="https://static.carhire-solutions.com/pdf/cnx_tac_en-gb.pdf" xmlns=""/>
               <ProductInformation url="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb" temp="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb?format=json" xmlns=""/>
               <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo61.png" xmlns=""/>
               <RateInformation PriceType="2" BusinessModel="1"/>
                        <CommissionInformation CurrencyCode="EUR">
                                       <CommissionBase Amount="130" TaxIncluded="false" />
                                       <Commission Amount="13" TaxIncluded="false" />
                        </CommissionInformation>
               </RateInformation>
</TPA_Extensions>

The rate with pricetype = 2 defines a net rate and the Business Model = 1 defines it is commissionable. That means, that the mark-up is already done by us and we provide a fixed selling price to you which you shall present to your customer. You will receive a commission from us which is based on the value in CommissionBase and displayed in Commission Amount. You shall not add any mark-up to the rate.

Commissionable Model, Gross rate
<TPA_Extensions>
               <TermsConditions url="https://static.carhire-solutions.com/pdf/cnx_tac_en-gb.pdf" xmlns=""/>
               <ProductInformation url="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb" temp="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb?format=json" xmlns=""/>
               <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo61.png" xmlns=""/>
               <RateInformation PriceType="2" BusinessModel="1"/>
                        <CommissionInformation CurrencyCode="EUR">
                                       <CommissionBase Amount="130" TaxIncluded="false" />
                                       <Commission Amount="13" TaxIncluded="false" />
                        </CommissionInformation>
               </RateInformation>
</TPA_Extensions>

The pricetype = 1 defines a gross rate and the Business Model = 1 defines it is commissionable. That means that you shall not add any mark-up to the rate as this is fixed by the supplier. You will receive a commission from us which is based on the value in CommissionBase and displayed in Commission Amount.

2.1.8.3. Mixed Model

If you agree on a Mixed Model with us you will receive a mix of the Wholesale Model and the Commissionable model which means you will receive net rates where you can add a mark-up and gross rates where you receive a commission:

Mixed Model, Net rate
<TPA_Extensions>
               <TermsConditions url="https://static.carhire-solutions.com/pdf/cnx_tac_en-gb.pdf" xmlns=""/>
               <ProductInformation url="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb" temp="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb?format=json" xmlns=""/>
               <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo61.png" xmlns=""/>
               <RateInformation PriceType="2" BusinessModel="2"/>
</TPA_Extensions>

The rate with pricetype = 2 defines a net rate and the Business Model = 2 defines this rate is not commissionable. That means you would need to add a mark-up on top to define the selling price and earn margin.

Mixed Model, Gross rate
<TPA_Extensions>
               <TermsConditions url="https://static.carhire-solutions.com/pdf/cnx_tac_en-gb.pdf" xmlns=""/>
               <ProductInformation url="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb" temp="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb?format=json" xmlns=""/>
               <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo61.png" xmlns=""/>
               <RateInformation PriceType="1" BusinessModel="1"/>
                        <CommissionInformation CurrencyCode="EUR">
                                       <CommissionBase Amount="130" TaxIncluded="false" />
                                       <Commission Amount="13" TaxIncluded="false" />
                        </CommissionInformation>
               </RateInformation>
</TPA_Extensions>

The pricetype = 1 defines a gross rate and the Business Model = 1 defines it is commissionable. That means that you shall not add any mark-up to the rate as this is fixed by the supplier. You will receive a commission from us which is based on the value in CommissionBase and displayed in Commission Amount.

2.1.8.4. Switch Model

In the switch model we only act as a technology provider transferring the data through the API. The contractual basis of the rate is directly between you and and the supplier. We are not involved in your reconciliation process with the supplier and simply receive a transaction fee for every booking. This is how you will identify this rate model in the availrate reponse:

Switch Model, Net rate
<TPA_Extensions>
               <TermsConditions url="https://static.carhire-solutions.com/pdf/cnx_tac_en-gb.pdf" xmlns=""/>
               <ProductInformation url="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb" temp="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb?format=json" xmlns=""/>
               <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo61.png" xmlns=""/>
               <RateInformation PriceType="2" BusinessModel="3"/>
</TPA_Extensions>

The pricetype= 2 defines a net rate and the BusinessModel = 3 a directly negotiated rate between you and the supplier. You are free to add any mark-up on top.

Switch Model, Gross rate
<TPA_Extensions>
               <TermsConditions url="https://static.carhire-solutions.com/pdf/cnx_tac_en-gb.pdf" xmlns=""/>
               <ProductInformation url="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb" temp="https://createpdf.carhire-solutions.com/en-gb/products/BSCYe08Eb?format=json" xmlns=""/>
               <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo61.png" xmlns=""/>
               <RateInformation PriceType="1" BusinessModel="3"/>
                        <CommissionInformation CurrencyCode="EUR">
                                       <CommissionBase Amount="130" TaxIncluded="false" />
                        </CommissionInformation>
               </RateInformation>
</TPA_Extensions>

The pricetype = 1 defines a gross rate and the BusinessModel = 3 defines a directly negotiated rate between you and the supplier. No mark-up shall be added on top.

2.2. Raterules

A car offer consists of lots of details which need to be displayed to the end user, like below:

_images/Slide18.png

With the RateRule request you can retrieve further information of a particular offer. The most important are the product information (available in following formats: PDF, JSON) and the ancillary services a supplier is offering.

2.2.1. Request

The following parameters can be requested in a Raterule Request:

Parameter

Type

Description

POS > Source [ISOCountry]

Enum

Mandatory

Sets the language of the request/response. Short-codes in appendix.

POS > Source [ISOCountry]

Enum

Mandatory

Second Source element of POS element: sets user’s the source country. Short-codes in appendix.

POS > Source > RequestorID [ID_Context]

String

Mandatory

Password of the client partner

POS > Source > RequestorID [Type]

String

Mandatory

Username of the client partner

Reference [ID_Context]

String

Mandatory

The unique offer reference.

Reference [Type]

Integer

Mandatory

16 = unique id type ‘reference’

2.2.1.1. Sample VehRateRule request

Sample VehRateRule request
<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehRateRuleRQ EchoToken="1.0" ReqRespVersion="large" Version="1.0">
      <POS>
        <Source ISOCountry="EN">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
        <Source ISOCountry="DE"/>
      </POS>
      <Reference ID_Context="ZK2j7GkNvU_BBqRsY7Wogg-0" Type="16"/>
    </VehRateRuleRQ>
  </soap:Body>
</soap:Envelope>

Note

Please be aware that specific offer, represented by unique offer reference (Reference.ID_Context), is valid only within half an hour (30 minutes) after you have performed the AvailRate request.

2.2.2. Response

Parameter

Type

Description

VehRentalCore [PickUpDateTime]

Datetime

The date and time of the pickup time

VehRentalCore [ReturnDateTime]

Datetime

The date and time of the return time

VehRentalCore [CompanyShortName]

String

The name of the rental company

Vehicle [AirConditionInd]

Boolean

Indicates if the car includes Air-condition

Vehicle [TransmissionType]

Enum

The VehicleTransmissionSimpleType simple type defines a set of valid values for the transmission type of a vehicle. The valid values are Automatic and Manual.

Vehicle [FuelType]

Enum

The kind of fuel the vehicle uses.

Vehicle [PassengerQuantity]

String

Number of passengers that can be accommodated by this vehicle. This may be an exact number or may be a range, i.e., 4-5, 5-6.

Vehicle [BaggageQuantity]

Integer

Number of bags/suitcases that can be accommodated by this vehicle.

Vehicle [VendorCarType]

String

An internal car type assigned by the vendor.

Vehicle > VehType [VehicleCategory]

Integer

The type of vehicle, for example, truck, car. Defined in appendix

Vehicle > VehType [DoorCount]

String

The number of doors on a vehicle. This may be an exact number or a range, i.e. 2-4.

Vehicle > VehClass [Size]

Integer

The Size attribute identifies the size of a vehicle. See appendix.

Vehicle > VehMakeModel [Name]

String

The name of the car (only an example for the category, car model is not guaranteed)

Vehicle > VehMakeModel [Code]

String

Provides the code identifying the car type

Vehicle > PictureURL

String

URL of a image of the car type

RentalRate > RateDistance [Unlimited]

Boolean

When true there is no mileage/kilometer restriction.

RentalRate > RateDistance [Quantity]

Integer

Provides the number of miles/kilometers included, typically used when Unlimited is false.

RentalRate > RateDistance [DistUnitName]

String

Provides the units in which distance is measured, when applied to the rental of a vehicle (i.e., mil or km).

RentalRate > RateDistance [VehiclePeriodUnitName]

String

Provides the period of time associated with the quantity and distance unit name (e.g. day).

RentalRate > VehicleCharges > VehicleCharge [CurrencyCode]

String

Currency of the rate See Appendix.

RentalRate > VehicleCharges > VehicleCharge [Amount]

Integer

Amount of the rate

RentalRate > VehicleCharges > VehicleCharge [TaxInclusive]

Boolean

If TRUE, taxes are included in this charge.

RentalRate > VehicleCharges > VehicleCharge [Purpose]

String

Shows the different charges of the offer.

RentalRate > VehicleCharges > VehicleCharge [Description]

String

Description of the rate.

RentalRate > VehicleCharges > VehicleCharge [IncludedInEstTotalInd]

Boolean

Describes if the price for the equipment is included in the rate

RentalRate > VehicleCharges > VehicleCharge [RateConvertInd]

Boolean

RentalRate > VehicleCharges > VehicleCharge > Calculation [UnitName]

String

The unit of the rate

RentalRate > VehicleCharges > VehicleCharge > Calculation [Quantity]

Integer

The quantity of the unit

RentalRate > RateRestrictions > MinimumAge

Integer

Show the age restriction

RentalRate > RateRestrictions > MaximumAge

Integer

Show the age restriction

RentalRate > RateRestrictions > NoShowFeeInd

Integer

TotalCharge [CurrencyCode]

TotalCharge [EstimatedTotalAmount]

RateRules > PaymentRules > PaymentRule [PaymentType]

Integer

Id of the Payment type. See appendix

RateRules > PaymentRules > PaymentRule

String

Describes the way of payment of the car rental offer

PricedEquips > PricedEquip > Equipment [EquipType]

Integer

Id of the equipment

PricedEquips > PricedEquip > Equipment > Description

String

Describes the type of equipment

PricedEquips > PricedEquip > Charge [CurrencyCode]

String

Describes the currency in which the equipment has to be paid

PricedEquips > PricedEquip > Charge [Amount]

String

The amount of the equipment. Has to be paid at the rental location.

PricedEquips > PricedEquip > Charge [TaxInclusive]

Boolean

Describes if the tax is inclusive or not

PricedEquips > PricedEquip > Charge [Description]

String

Description of the charge

PricedEquips > PricedEquip > Charge [IncludedInEstTotalInd]

Boolean

Flag indicating if the equipment prices have been already included into the estimated total rate. If false the equipment is optional.

PricedEquips > PricedEquip > Charge > Calculation [UnitCharge]

String

Describes on which base the equipment has to be paid

PricedEquips > PricedEquip > Charge > Calculation [UnitName]

String

Unit if the charge

PricedEquips > PricedEquip > Charge > Calculation [Quantity]

Integer

Quantity of the charged equipment

Fees > Fee [CurrencyCode]

String

Currency of the fee

Fees > Fee [Amount]

String

Amount of the fee

Fees > Fee [TaxInclusive]

String

Describes if the tax is inclusive or not

Fees > Fee [Description]

String

Description of the fee

Fees > Fee [IncludedInRate]

String

Describes if the coverage is included in the rate or not

Fees > Fee [IncludedInEstTotalInd]

String

Flag indicating if the fee prices have been already included into the estimated total rate.

PricedCoverages > PricedCoverage > Coverage [CoverageType]

String

Description of coverage

PricedCoverages > PricedCoverage > Coverage [Code]

String

Code of the priced coverage

PricedCoverages > PricedCoverage > Coverage > Details > Coverage [CoverageType]

String

Shows the timerange of the coverage. Format: yyyy-mm-ddThh:mm:ss_yyyy-mm-ddThh:mm:ss The underscore is the separator of the start and end

PricedCoverages > PricedCoverage > Coverage > Details > Charge [Amount]

String

Cost of the priced coverage

PricedCoverages > PricedCoverage > Coverage > Details > Charge [IncludedInRate]

Boolean

Describes if the coverage is included in the rate or not

PricedCoverages > PricedCoverage > Coverage > Details > Charge [CurrencyCode]

String

Currency of the coverage See Appendix.

PricedCoverages > PricedCoverage > Coverage > Details > Charge [Description]

String

Description of the coverage

PricedCoverages > PricedCoverage > Coverage > Details > Charge [CurrencyCode]

Boolean

Currency of the coverage See Appendix.

LocationDetails [AtAirport]

Boolean

Indicates if the location is at a Airport

LocationDetails [Code]

String

Internal code of the location

LocationDetails [Name]

String

Translated name of the location

LocationDetails [CodeContext]

String

The location code from the supplier

LocationDetails [ExtendedLocationCode]

String

Internal location code

LocationDetails [AssocAirportLocList]

String

Location IATA code. Not returned, in case a City Downtown has not IATA code assign.

LocationDetails > Address [Type]

Integer

LocationDetails > Address > StreetNmbr

String

Street and number of the rental location

LocationDetails > Address > AddressLine

String

LocationDetails > Address > CityName

String

Name of the city of the rental station.

LocationDetails > Address > PostalCode

String

Zip code of the city

LocationDetails > Address > CountryName

String

Name of the country

LocationDetails > Address > CountryName [Code]

String

Short-code of the country

LocationDetails > Telephone [PhoneNumber]

String

Telephone number of the location

LocationDetails > Telephone [PhoneTechType]

String

LocationDetails > AdditionalInfo > ParkLocation [Location]

String

Translated description of the location. Includes directions

LocationDetails > AdditionalInfo > CounterLocation

String

OTA Vehicle Where At Facility code, currently used values:
  • 3 (Shuttle off airport)

  • 7 (City Downtown)

  • 14 (Airport)

LocationDetails > AdditionalInfo > OperationSchedules > OperationSchedule > OperationTimes > OperationTime [Mon|Tue|Weds|Thur|Fri|Sat|Sun]

Boolean

Indicates if the location is open on the specific day of the week

LocationDetails > AdditionalInfo > OperationSchedules > OperationSchedule > OperationTimes > OperationTime [Start]

String

Opening time of the location. Format: HH:MM

LocationDetails > AdditionalInfo > OperationSchedules > OperationSchedule > OperationTimes > OperationTime [End]

String

Closing time of the location. Format: HH:MM

LocationDetails > AdditionalInfo TPA_Extensions > Position

String

Geo coordinates of the location

LocationDetails > AdditionalInfo TPA_Extensions > CityId

Integer

Reference to the city from destination reference data.

LocationDetails > AdditionalInfo TPA_Extensions > AirportId

Integer

Reference to the airport from destination reference data. Only for airport locations.

VendorMessages > VendorMessage [Title]

String

Name of the document. E.g. Rental Terms, Terms & Conditions

VendorMessages > VendorMessage [InfoType]

Integer

VendorMessages > VendorMessage > SubSection > Paragraph [Language]

String

Language of the document

VendorMessages > VendorMessage > SubSection > Paragraph > Text

String

URL of the document

TPA_Extensions > TermsConditions [url]

String

URL of the terms and conditions

TPA_Extensions > ProductInformation [url]

String

URL of the product information document

TPA_Extensions > ProductInformation [temp]

String

URL of the product information as structured data (json) Note: Will be moved to url

TPA_Extensions > SupplierLogo [url]

String

URL of the supplier logo

TPA_Extensions > InsuranceContent [url]

String

URL of the insurance terms and condition

You can find the same information for PricedCoverages, Fees and VehicleCharges as in the AvailRate Reponse. In addition you will find information about PricedEquips (ancillary services of the supplier).

2.2.2.1. Sample VehRateRule response

Sample VehRateRule response
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Header>
    <informationHeader xmlns="http://www.opentravel.org/OTA/2003/05">
      <Successfully>true</Successfully>
      <ProcessingTime>0.0890851 sec</ProcessingTime>
    </informationHeader>
  </soap:Header>
  <soap:Body>
    <VehRateRuleRS EchoToken="1.0" TimeStamp="2017-10-03T15:22:39" Version="3"
    xmlns="http://www.opentravel.org/OTA/2003/05">
      <VehRentalCore PickUpDateTime="2018-06-12T09:00:00" ReturnDateTime="2018-06-16T09:00:00"
      CompanyShortName="Goldcar rental" TravelSector="Car Rental" Code="GR" CodeContext="34" />
      <Vehicle AirConditionInd="true" TransmissionType="Manual" FuelType="Petrol"
      DriveType="Unspecified" PassengerQuantity="4" BaggageQuantity="2" VendorCarType="AA"
      Code="Smart for four/Opel Adam/Fiat Panda" CodeContext="">
        <VehType VehicleCategory="1" DoorCount="2" />
        <VehClass Size="1" />
        <VehMakeModel Name="Smart for four/Opel Adam/Fiat Panda" Code="MCMR" />
        <PictureURL>
        https://static.carhire-solutions.com/images/car/Goldcar/small/EBMR-AA.jpg</PictureURL>
      </Vehicle>
      <RentalRate>
        <RateDistance Unlimited="true" DistUnitName="Km" />
        <VehicleCharges>
          <VehicleCharge CurrencyCode="EUR" Amount="110.74" TaxInclusive="true"
          Purpose="original" RateConvertInd="true">
            <Calculation UnitName="Day" Quantity="4" />
          </VehicleCharge>
          <VehicleCharge CurrencyCode="EUR" Amount="110.74" TaxInclusive="true"
          Purpose="preferred" RateConvertInd="true" />
          <VehicleCharge CurrencyCode="EUR" Amount="97.14" TaxInclusive="true"
          Purpose="baserate" RateConvertInd="true" />
          <VehicleCharge CurrencyCode="EUR" Amount="1100.00" TaxInclusive="true"
          Description="Upon collection of the car usually a security deposit will be blocked on the driver’s credit card. This deposit typically corresponds to the stated amount of the possible excess plus the value of one tank of fuel. This deposit can only be blocked on a valid credit card (prepaid debit cards,prepaid credit cards and cash cannot be accepted).&lt;br /&gt;&lt;br /&gt; For luxury cars two credit cards in the same name are required for all rentals. The credit card must not be from the same issuer. Please note some suppliers will not accept American Express, Visa Premier or Diners Club credit cards, we strongly recommend to use a Visa or Mastercard. &lt;br /&gt;&lt;br /&gt; In the event that you fail to produce a valid credit card or have insufficient funds available the car rental agent may refuse to release the vehicle. In this instance no funds will be reimbursed. Estimated deposit amount: EUR 1100.00"
          IncludedInEstTotalInd="false" Purpose="Estimated deposit amount"
          RateConvertInd="true" />
        </VehicleCharges>
        <RateQualifier VendorRateID="MICAL09">
          <RateComments>
            <RateComment Name="SilverPackage" />
          </RateComments>
        </RateQualifier>
        <RateRestrictions>
          <MinimumAge>21</MinimumAge>
          <MaximumAge>80</MaximumAge>
          <NoShowFeeInd>false</NoShowFeeInd>
        </RateRestrictions>
      </RentalRate>
      <TotalCharge CurrencyCode="EUR" EstimatedTotalAmount="110.74" />
      <RateRules>
        <PaymentRules>
          <PaymentRule PaymentType="4">Prepayment. For the local pick up of your car a valid
          credit card is mandatory. The card holder and driver must be the same person. Prepaid
          or debit cards, such as for instance Maestro, Visa electron or Visa Premier are not
          accepted for pick-up.</PaymentRule>
        </PaymentRules>
      </RateRules>
      <PricedEquips>
        <PricedEquip>
          <Equipment EquipType="13">
            <Description>GPS (Global Positioning System)</Description>
          </Equipment>
          <Charge CurrencyCode="EUR" Amount="10.00" Description="BookingCurrencyPrice"
          IncludedInEstTotalInd="false">
            <MinMax MaxCharge="140.00" />
            <Calculation UnitCharge="10.00" UnitName="1-per day" Quantity="1" />
            <Calculation UnitCharge="140.00" UnitName="PreferedCurrencyMaxPrice-per rental"
            Quantity="1" />
            <Calculation UnitCharge="10.00" UnitName="PreferedCurrencyPrice-per day"
            Quantity="1" />
          </Charge>
        </PricedEquip>
        <PricedEquip>
          <Equipment EquipType="7">
            <Description>Infant Seat (0-1 year)</Description>
          </Equipment>
          <Charge CurrencyCode="EUR" Amount="7.95" Description="BookingCurrencyPrice"
          IncludedInEstTotalInd="false">
            <MinMax MaxCharge="98.00" />
            <Calculation UnitCharge="7.95" UnitName="1-per day" Quantity="1" />
            <Calculation UnitCharge="98.00" UnitName="PreferedCurrencyMaxPrice-per rental"
            Quantity="1" />
            <Calculation UnitCharge="7.95" UnitName="PreferedCurrencyPrice-per day"
            Quantity="1" />
          </Charge>
        </PricedEquip>
        <PricedEquip>
          <Equipment EquipType="8">
            <Description>Child Seat (1-3 years)</Description>
          </Equipment>
          <Charge CurrencyCode="EUR" Amount="7.95" Description="BookingCurrencyPrice"
          IncludedInEstTotalInd="false">
            <MinMax MaxCharge="98.00" />
            <Calculation UnitCharge="7.95" UnitName="1-per day" Quantity="1" />
            <Calculation UnitCharge="98.00" UnitName="PreferedCurrencyMaxPrice-per rental"
            Quantity="1" />
            <Calculation UnitCharge="7.95" UnitName="PreferedCurrencyPrice-per day"
            Quantity="1" />
          </Charge>
        </PricedEquip>
        <PricedEquip>
          <Equipment EquipType="9">
            <Description>Booster Seat (4-12 years)</Description>
          </Equipment>
          <Charge CurrencyCode="EUR" Amount="7.95" Description="BookingCurrencyPrice"
          IncludedInEstTotalInd="false">
            <MinMax MaxCharge="98.00" />
            <Calculation UnitCharge="7.95" UnitName="1-per day" Quantity="1" />
            <Calculation UnitCharge="98.00" UnitName="PreferedCurrencyMaxPrice-per rental"
            Quantity="1" />
            <Calculation UnitCharge="7.95" UnitName="PreferedCurrencyPrice-per day"
            Quantity="1" />
          </Charge>
        </PricedEquip>
        <PricedEquip>
          <Equipment EquipType="222">
            <Description>Additional Driver</Description>
          </Equipment>
          <Charge CurrencyCode="EUR" Amount="7.95" Description="BookingCurrencyPrice"
          IncludedInEstTotalInd="false">
            <MinMax MaxCharge="98.00" />
            <Calculation UnitCharge="7.95" UnitName="1-per day" Quantity="1" />
            <Calculation UnitCharge="98.00" UnitName="PreferedCurrencyMaxPrice-per rental"
            Quantity="1" />
            <Calculation UnitCharge="7.95" UnitName="PreferedCurrencyPrice-per day"
            Quantity="1" />
          </Charge>
        </PricedEquip>
      </PricedEquips>
      <Fees>
        <Fee CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
        Description="Location service charge(LSC)" IncludedInRate="true"
        IncludedInEstTotalInd="true" />
        <Fee CurrencyCode="EUR" Amount="0.00" TaxInclusive="true" Description="VAT(TAX)"
        IncludedInRate="true" IncludedInEstTotalInd="true" />
      </Fees>
      <PricedCoverages>
        <PricedCoverage>
          <Coverage CoverageType="Location service charge" Code="LSC">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="An additional service charge applies at some airports, railway stations and ports- In this offer it is included."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Collision damage waiver" Code="CDW">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="Maximum excess of 1,100 EUR to be paid in the case of damage. Please note that comprehensive insurance does not cover damage to wheels, tires, mirrors and underbody"
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Supplementary Liability Insurance" Code="SLI">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="Legally required, insurance for damages on the adversarial vehicle, persons and objects- In this offer it is included."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Theft protection" Code="TP">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="In case of theft, there is an excess of 1,100 EUR.&#160; Please note: this does not cover loss of personal items."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Unlimited Mileage" Code="UNL">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="No further costs apply for extra miles driven" GuaranteedInd="true"
          IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Airport Service Charge" Code="ASC">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="Some airports charge a service fee- In this offer it is included."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="One way rental" Code="OW">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="possible with additional charges" GuaranteedInd="true"
          IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Fuel Information" Code="F2F">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="Full to Full: Pick up and drop off with a full tank. If the car is not returned with a full tank, suppliers will charge fuel plus refueling charges."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="VAT" Code="TAX">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="The rate corresponds with the VAT-rate of the particular country."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Cancellation fee" Code="CF">
            <Details>
              <Coverage CoverageType="2017-10-03T15:22:39_2018-06-12T09:00:00" />
              <Charge CurrencyCode="EUR" Amount="0.00"
              Description="Cancellation is free of charge. No-show fee: 100% of the rental price."
              IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge IncludedInRate="true" />
        </PricedCoverage>
      </PricedCoverages>
      <LocationDetails AtAirport="true" Code="7664150" Name="Palma de Mallorca Airport"
      CodeContext="PDM53" ExtendedLocationCode="1931-DBPDM53" AssocAirportLocList="PMI">
        <Address Type="3">
          <StreetNmbr>Palma de Mallorca Airport</StreetNmbr>
          <AddressLine>Polígono Son Oms, C / Can Rius 5</AddressLine>
          <CityName>PALMA DE MAJORCA</CityName>
          <PostalCode>07199</PostalCode>
          <StateProv StateCode="TX">Texas</StateProv>
          <CountryName Code="ES">Spain</CountryName>
        </Address>
        <Telephone PhoneTechType="1" PhoneNumber="+34 965 23 31 82" />
        <Telephone PhoneTechType="2" PhoneNumber="+34 971 22 00 49" />
        <AdditionalInfo>
          <ParkLocation Location="The location is in a Resort /Hotel." />
          <CounterLocation>7</CounterLocation>
          <OperationSchedules>
            <OperationSchedule>
              <OperationTimes>
                <OperationTime Mon="true" Start="08:00" End="13:00" />
                <OperationTime Mon="true" Start="16:30" End="18:30" />
                <OperationTime Tue="true" Start="08:00" End="13:00" />
                <OperationTime Tue="true" Start="16:30" End="18:30" />
                <OperationTime Weds="true" Start="08:00" End="13:00" />
                <OperationTime Weds="true" Start="16:30" End="18:30" />
                <OperationTime Thur="true" Start="08:00" End="13:00" />
                <OperationTime Thur="true" Start="16:30" End="18:30" />
                <OperationTime Fri="true" Start="08:00" End="13:00" />
                <OperationTime Fri="true" Start="16:30" End="18:30" />
                <OperationTime Sat="true" Start="08:00" End="13:00" />
              </OperationTimes>
            </OperationSchedule>
          </OperationSchedules>
          <TPA_Extensions>
            <Position Latitude="-22.57" Longitude="17.083611" />
            <CityId>47</CityId>
            <AirportId>99</AirportId>
            <Vendor TravelSector="Car Rental" Code="GR" CodeContext="34">Goldcar rental</Vendor>
          </TPA_Extensions>
        </AdditionalInfo>
      </LocationDetails>
      <LocationDetails AtAirport="true" Code="7664150" Name="Palma de Mallorca Airport"
      CodeContext="PDM53" ExtendedLocationCode="1931-DBPDM53" AssocAirportLocList="PMI">
        <Address Type="3">
          <StreetNmbr>Palma de Mallorca Airport</StreetNmbr>
          <AddressLine>Polígono Son Oms, C / Can Rius 5</AddressLine>
          <CityName>PALMA DE MAJORCA</CityName>
          <PostalCode>07199</PostalCode>
          <StateProv StateCode="TX">Texas</StateProv>
          <CountryName Code="ES">Spain</CountryName>
        </Address>
        <Telephone PhoneTechType="1" PhoneNumber="+34 965 23 31 82" />
        <Telephone PhoneTechType="2" PhoneNumber="+34 971 22 00 49" />
        <AdditionalInfo>
          <ParkLocation Location="The location is in a Resort /Hotel." />
          <CounterLocation>7</CounterLocation>
          <OperationSchedules>
            <OperationSchedule>
              <OperationTimes>
                <OperationTime Mon="true" Start="08:00" End="13:00" />
                <OperationTime Mon="true" Start="16:30" End="18:30" />
                <OperationTime Tue="true" Start="08:00" End="13:00" />
                <OperationTime Tue="true" Start="16:30" End="18:30" />
                <OperationTime Weds="true" Start="08:00" End="13:00" />
                <OperationTime Weds="true" Start="16:30" End="18:30" />
                <OperationTime Thur="true" Start="08:00" End="13:00" />
                <OperationTime Thur="true" Start="16:30" End="18:30" />
                <OperationTime Fri="true" Start="08:00" End="13:00" />
                <OperationTime Fri="true" Start="16:30" End="18:30" />
                <OperationTime Sat="true" Start="08:00" End="13:00" />
              </OperationTimes>
            </OperationSchedule>
          </OperationSchedules>
          <TPA_Extensions>
            <Position Latitude="-22.57" Longitude="17.083611" />
            <CityId>47</CityId>
            <AirportId>99</AirportId>
            <Vendor TravelSector="Car Rental" Code="GR" CodeContext="34">Goldcar rental</Vendor>
          </TPA_Extensions>
        </AdditionalInfo>
      </LocationDetails>
      <VendorMessages>
        <VendorMessage Title="Terms and Conditions of carhiremarket.com" InfoType="2">
          <SubSection>
            <Paragraph Language="EN">
              <Text>
              https://createpdf.carhire-solutions.com/termsandconditions.aspx?reference=54336358022500162837545684&amp;languageId=2</Text>
            </Paragraph>
          </SubSection>
        </VendorMessage>
      </VendorMessages>
      <TPA_Extensions>
        <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo34.png"
        xmlns="" />
        <ProductInformation temp="https://createpdf.carhire-solutions.com/en/products/54336358022500162837545684?format=json"
        xmlns="" />
      </TPA_Extensions>
    </VehRateRuleRS>
  </soap:Body>
</soap:Envelope>

2.2.2.2. PricedEquip

This element contains information about the equipments that can be booked as optional extra for this car such as price, name and quantity. Here an example for PricedEquip:

GPS example
<PricedEquip>
  <Equipment EquipType="13">
    <Description>GPS (Global Positioning System)</Description>
  </Equipment>
  <Charge CurrencyCode="EUR" Amount="8.00" TaxInclusive="true"
  Description="BookingCurrencyPrice" IncludedInEstTotalInd="false">
    <MinMax MaxCharge="80.00" />
    <Calculation UnitCharge="8.00" UnitName="1-per day" Quantity="1" />
    <Calculation UnitCharge="90.40" UnitName="PreferedCurrencyMaxPrice-per rental"
    Quantity="1" />
    <Calculation UnitCharge="9.04" UnitName="PreferedCurrencyPrice-per day" Quantity="1" />
  </Charge>
</PricedEquip>

In this example you can see that there is a GPS available for the offer. The price is 8 € per day. But the maximum price per rental will not exceed 80 €. Note the EquipType that contains the ID (13 for GPS). For more examples of PricedEquip elements see Appendix.

Please see here the price calculation for it:

UnitName=1-per-day is the daily price in original currency that needs to be multiplied by the rental days. For example 8 € x 2 rental days = 16 € total price. This price needs to be paid on arrival at the rental location in the local currency of the destination.

The PreferedCurrencyPrice-per-day is the price per day in the preferred currency. The preferred currency will be either set up by Carnect in their system or you can send your own preferred currency in the AvailRate request. If nothing is sent the preferred currency set by Carnect will be the default value. (9.04 x 2 = 18.08 USD)

It’s recommended to show the extras in the local currency. If you choose to display them in your preferred currency, you would need to make the customer aware about possible changes of the price due to currency conversions.

If there is a max price and if the daily x rental days is greater than the max price, then the max price comes into effect. In the example the Maxcharge = 80 € or 90.40 USD should be considered.

2.2.2.3. Ancillary Insurance

The VehRateRule response will provide information about ancillary insurance for the chosen car rental offer.

<PricedEquip>
                <Equipment EquipType="413">
                                <Description>Full Protection</Description>
                </Equipment>
                <Charge CurrencyCode="GBP" Amount="11.98" Description="PayableNow" IncludedInEstTotalInd="false">
                                <Calculation UnitCharge="11.98" UnitName="2-per rental" Quantity="1"/>
                                <Calculation UnitCharge="11.98" UnitName="PreferedCurrencyPrice-per rental" Quantity="1"/>
                </Charge>
</PricedEquip>

In the example above the Total Policy Price is 11.89 GBP (applicable for the rental period) and it is payable at booking time as mentioned in ‘Description=”PayableNow”’. The corresponsing request example was done for a customer booking in the UK and since the ‘PreferredCurrency’ for the UK as source country Is GBP, the price is to be interpreted as GBP price.

From this Total Policy Price the Policy Price per day can be calculated , which should be displayed along with the Total Policy Price to the customer. It can be calculated by dividing the Total Policy Price by the transmitted number of rental days. See also (insert document for insurance)

2.2.2.4. Rate change - price change

It is possible the price of the specific offer will change after the search has been performed.

In this case the VehRateRuleRS will contain specific Warning (see example below), which should allow calling client to decide what to do.

We suggest to send VehRateRuleRQ to verify if the price still matching the price received at search time and warn the user before creating reservation.

Requested rate change warning
<Warnings>
  <Warning Type="309" Code="67">Requested rate has changed</Warning>
</Warnings>
RateRule response with Requested rate change warning
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Header>
    <informationHeader xmlns="http://www.opentravel.org/OTA/2003/05">
      <Successfully>true</Successfully>
      <ProcessingTime>0.0890851 sec</ProcessingTime>
    </informationHeader>
  </soap:Header>
  <soap:Body>
    <VehRateRuleRS EchoToken="1.0" TimeStamp="2017-10-03T15:22:39" Version="3"
    xmlns="http://www.opentravel.org/OTA/2003/05">
      <Warnings>
        <Warning Type="309" Code="67">Requested rate has changed</Warning>
      </Warnings>
      <VehRentalCore PickUpDateTime="2018-06-12T09:00:00" ReturnDateTime="2018-06-16T09:00:00"
      CompanyShortName="Goldcar rental" TravelSector="Car Rental" Code="GR" CodeContext="34" />
      <Vehicle AirConditionInd="true" TransmissionType="Manual" FuelType="Petrol"
      DriveType="Unspecified" PassengerQuantity="4" BaggageQuantity="2" VendorCarType="AA"
      Code="Smart for four/Opel Adam/Fiat Panda" CodeContext="">
        <VehType VehicleCategory="1" DoorCount="2" />
        <VehClass Size="1" />
        <VehMakeModel Name="Smart for four/Opel Adam/Fiat Panda" Code="MCMR" />
        <PictureURL>
        https://static.carhire-solutions.com/images/car/Goldcar/small/EBMR-AA.jpg</PictureURL>
      </Vehicle>
      <RentalRate>
        <RateDistance Unlimited="true" DistUnitName="Km" />
        <VehicleCharges>
          <VehicleCharge CurrencyCode="EUR" Amount="110.74" TaxInclusive="true"
          Purpose="original" RateConvertInd="true">
            <Calculation UnitName="Day" Quantity="4" />
          </VehicleCharge>
          <VehicleCharge CurrencyCode="EUR" Amount="110.74" TaxInclusive="true"
          Purpose="preferred" RateConvertInd="true" />
          <VehicleCharge CurrencyCode="EUR" Amount="97.14" TaxInclusive="true"
          Purpose="baserate" RateConvertInd="true" />
          <VehicleCharge CurrencyCode="EUR" Amount="1100.00" TaxInclusive="true"
          Description="Upon collection of the car usually a security deposit will be blocked on the driver’s credit card. This deposit typically corresponds to the stated amount of the possible excess plus the value of one tank of fuel. This deposit can only be blocked on a valid credit card (prepaid debit cards,prepaid credit cards and cash cannot be accepted).&lt;br /&gt;&lt;br /&gt; For luxury cars two credit cards in the same name are required for all rentals. The credit card must not be from the same issuer. Please note some suppliers will not accept American Express, Visa Premier or Diners Club credit cards, we strongly recommend to use a Visa or Mastercard. &lt;br /&gt;&lt;br /&gt; In the event that you fail to produce a valid credit card or have insufficient funds available the car rental agent may refuse to release the vehicle. In this instance no funds will be reimbursed. Estimated deposit amount: EUR 1100.00"
          IncludedInEstTotalInd="false" Purpose="Estimated deposit amount"
          RateConvertInd="true" />
        </VehicleCharges>
        <RateQualifier VendorRateID="MICAL09">
          <RateComments>
            <RateComment Name="SilverPackage" />
          </RateComments>
        </RateQualifier>
        <RateRestrictions>
          <MinimumAge>21</MinimumAge>
          <MaximumAge>80</MaximumAge>
          <NoShowFeeInd>false</NoShowFeeInd>
        </RateRestrictions>
      </RentalRate>
      <TotalCharge CurrencyCode="EUR" EstimatedTotalAmount="110.74" />
      <RateRules>
        <PaymentRules>
          <PaymentRule PaymentType="4">Prepayment. For the local pick up of your car a valid
          credit card is mandatory. The card holder and driver must be the same person. Prepaid
          or debit cards, such as for instance Maestro, Visa electron or Visa Premier are not
          accepted for pick-up.</PaymentRule>
        </PaymentRules>
      </RateRules>
      <PricedEquips>
        <PricedEquip>
          <Equipment EquipType="13">
            <Description>GPS (Global Positioning System)</Description>
          </Equipment>
          <Charge CurrencyCode="EUR" Amount="10.00" Description="BookingCurrencyPrice"
          IncludedInEstTotalInd="false">
            <MinMax MaxCharge="140.00" />
            <Calculation UnitCharge="10.00" UnitName="1-per day" Quantity="1" />
            <Calculation UnitCharge="140.00" UnitName="PreferedCurrencyMaxPrice-per rental"
            Quantity="1" />
            <Calculation UnitCharge="10.00" UnitName="PreferedCurrencyPrice-per day"
            Quantity="1" />
          </Charge>
        </PricedEquip>
        <PricedEquip>
          <Equipment EquipType="7">
            <Description>Infant Seat (0-1 year)</Description>
          </Equipment>
          <Charge CurrencyCode="EUR" Amount="7.95" Description="BookingCurrencyPrice"
          IncludedInEstTotalInd="false">
            <MinMax MaxCharge="98.00" />
            <Calculation UnitCharge="7.95" UnitName="1-per day" Quantity="1" />
            <Calculation UnitCharge="98.00" UnitName="PreferedCurrencyMaxPrice-per rental"
            Quantity="1" />
            <Calculation UnitCharge="7.95" UnitName="PreferedCurrencyPrice-per day"
            Quantity="1" />
          </Charge>
        </PricedEquip>
        <PricedEquip>
          <Equipment EquipType="8">
            <Description>Child Seat (1-3 years)</Description>
          </Equipment>
          <Charge CurrencyCode="EUR" Amount="7.95" Description="BookingCurrencyPrice"
          IncludedInEstTotalInd="false">
            <MinMax MaxCharge="98.00" />
            <Calculation UnitCharge="7.95" UnitName="1-per day" Quantity="1" />
            <Calculation UnitCharge="98.00" UnitName="PreferedCurrencyMaxPrice-per rental"
            Quantity="1" />
            <Calculation UnitCharge="7.95" UnitName="PreferedCurrencyPrice-per day"
            Quantity="1" />
          </Charge>
        </PricedEquip>
        <PricedEquip>
          <Equipment EquipType="9">
            <Description>Booster Seat (4-12 years)</Description>
          </Equipment>
          <Charge CurrencyCode="EUR" Amount="7.95" Description="BookingCurrencyPrice"
          IncludedInEstTotalInd="false">
            <MinMax MaxCharge="98.00" />
            <Calculation UnitCharge="7.95" UnitName="1-per day" Quantity="1" />
            <Calculation UnitCharge="98.00" UnitName="PreferedCurrencyMaxPrice-per rental"
            Quantity="1" />
            <Calculation UnitCharge="7.95" UnitName="PreferedCurrencyPrice-per day"
            Quantity="1" />
          </Charge>
        </PricedEquip>
        <PricedEquip>
          <Equipment EquipType="222">
            <Description>Additional Driver</Description>
          </Equipment>
          <Charge CurrencyCode="EUR" Amount="7.95" Description="BookingCurrencyPrice"
          IncludedInEstTotalInd="false">
            <MinMax MaxCharge="98.00" />
            <Calculation UnitCharge="7.95" UnitName="1-per day" Quantity="1" />
            <Calculation UnitCharge="98.00" UnitName="PreferedCurrencyMaxPrice-per rental"
            Quantity="1" />
            <Calculation UnitCharge="7.95" UnitName="PreferedCurrencyPrice-per day"
            Quantity="1" />
          </Charge>
        </PricedEquip>
      </PricedEquips>
      <Fees>
        <Fee CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
        Description="Location service charge(LSC)" IncludedInRate="true"
        IncludedInEstTotalInd="true" />
        <Fee CurrencyCode="EUR" Amount="0.00" TaxInclusive="true" Description="VAT(TAX)"
        IncludedInRate="true" IncludedInEstTotalInd="true" />
      </Fees>
      <PricedCoverages>
        <PricedCoverage>
          <Coverage CoverageType="Location service charge" Code="LSC">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="An additional service charge applies at some airports, railway stations and ports- In this offer it is included."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Collision damage waiver" Code="CDW">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="Maximum excess of 1,100 EUR to be paid in the case of damage. Please note that comprehensive insurance does not cover damage to wheels, tires, mirrors and underbody"
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Supplementary Liability Insurance" Code="SLI">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="Legally required, insurance for damages on the adversarial vehicle, persons and objects- In this offer it is included."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Theft protection" Code="TP">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="In case of theft, there is an excess of 1,100 EUR.&#160; Please note: this does not cover loss of personal items."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Unlimited Mileage" Code="UNL">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="No further costs apply for extra miles driven" GuaranteedInd="true"
          IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Airport Service Charge" Code="ASC">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="Some airports charge a service fee- In this offer it is included."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="One way rental" Code="OW">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="possible with additional charges" GuaranteedInd="true"
          IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Fuel Information" Code="F2F">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="Full to Full: Pick up and drop off with a full tank. If the car is not returned with a full tank, suppliers will charge fuel plus refueling charges."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="VAT" Code="TAX">
            <Details>
              <Charge Amount="0.00" IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
          Description="The rate corresponds with the VAT-rate of the particular country."
          GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
        </PricedCoverage>
        <PricedCoverage>
          <Coverage CoverageType="Cancellation fee" Code="CF">
            <Details>
              <Coverage CoverageType="2017-10-03T15:22:39_2018-06-12T09:00:00" />
              <Charge CurrencyCode="EUR" Amount="0.00"
              Description="Cancellation is free of charge. No-show fee: 100% of the rental price."
              IncludedInRate="true" />
            </Details>
          </Coverage>
          <Charge IncludedInRate="true" />
        </PricedCoverage>
      </PricedCoverages>
      <LocationDetails AtAirport="true" Code="7664150" Name="Palma de Mallorca Airport"
      CodeContext="PDM53" ExtendedLocationCode="1931-DBPDM53" AssocAirportLocList="PMI">
        <Address Type="3">
          <StreetNmbr>Palma de Mallorca Airport</StreetNmbr>
          <AddressLine>olígono Son Oms, C / Can Rius 5</AddressLine>
          <CityName>PALMA DE MAJORCA</CityName>
          <PostalCode>07199</PostalCode>
          <StateProv StateCode="TX">Texas</StateProv>
          <CountryName Code="ES">Spain</CountryName>
        </Address>
        <Telephone PhoneTechType="1" PhoneNumber="+34 965 23 31 82" />
        <Telephone PhoneTechType="2" PhoneNumber="+34 971 22 00 49" />
        <AdditionalInfo>
          <ParkLocation Location="The location is in a Resort /Hotel." />
          <CounterLocation>14</CounterLocation>
          <OperationSchedules>
            <OperationSchedule>
              <OperationTimes>
                <OperationTime Mon="true" Start="08:00" End="13:00" />
                <OperationTime Mon="true" Start="16:30" End="18:30" />
                <OperationTime Tue="true" Start="08:00" End="13:00" />
                <OperationTime Tue="true" Start="16:30" End="18:30" />
                <OperationTime Weds="true" Start="08:00" End="13:00" />
                <OperationTime Weds="true" Start="16:30" End="18:30" />
                <OperationTime Thur="true" Start="08:00" End="13:00" />
                <OperationTime Thur="true" Start="16:30" End="18:30" />
                <OperationTime Fri="true" Start="08:00" End="13:00" />
                <OperationTime Fri="true" Start="16:30" End="18:30" />
                <OperationTime Sat="true" Start="08:00" End="13:00" />
              </OperationTimes>
            </OperationSchedule>
          </OperationSchedules>
          <TPA_Extensions>
            <Position Latitude="-22.57" Longitude="17.083611" />
            <CityId>47</CityId>
            <AirportId>99</AirportId>
          </TPA_Extensions>
        </AdditionalInfo>
      </LocationDetails>
      <LocationDetails AtAirport="true" Code="7664150" Name="Palma de Mallorca Airport"
      CodeContext="PDM53" ExtendedLocationCode="1931-DBPDM53" AssocAirportLocList="PMI">
        <Address Type="3">
          <StreetNmbr>Palma de Mallorca Airport</StreetNmbr>
          <AddressLine>olígono Son Oms, C / Can Rius 5</AddressLine>
          <CityName>PALMA DE MAJORCA</CityName>
          <PostalCode>07199</PostalCode>
          <StateProv StateCode="TX">Texas</StateProv>
          <CountryName Code="ES">Spain</CountryName>
        </Address>
        <Telephone PhoneTechType="1" PhoneNumber="+34 965 23 31 82" />
        <Telephone PhoneTechType="2" PhoneNumber="+34 971 22 00 49" />
        <AdditionalInfo>
          <ParkLocation Location="The location is in a Resort /Hotel." />
          <CounterLocation>14</CounterLocation>
          <OperationSchedules>
            <OperationSchedule>
              <OperationTimes>
                <OperationTime Mon="true" Start="08:00" End="13:00" />
                <OperationTime Mon="true" Start="16:30" End="18:30" />
                <OperationTime Tue="true" Start="08:00" End="13:00" />
                <OperationTime Tue="true" Start="16:30" End="18:30" />
                <OperationTime Weds="true" Start="08:00" End="13:00" />
                <OperationTime Weds="true" Start="16:30" End="18:30" />
                <OperationTime Thur="true" Start="08:00" End="13:00" />
                <OperationTime Thur="true" Start="16:30" End="18:30" />
                <OperationTime Fri="true" Start="08:00" End="13:00" />
                <OperationTime Fri="true" Start="16:30" End="18:30" />
                <OperationTime Sat="true" Start="08:00" End="13:00" />
              </OperationTimes>
            </OperationSchedule>
          </OperationSchedules>
          <TPA_Extensions>
            <Position Latitude="-22.57" Longitude="17.083611" />
            <CityId>47</CityId>
            <AirportId>99</AirportId>
          </TPA_Extensions>
        </AdditionalInfo>
      </LocationDetails>
      <VendorMessages>
        <VendorMessage Title="Terms and Conditions of carhiremarket.com" InfoType="2">
          <SubSection>
            <Paragraph Language="EN">
              <Text>
              https://createpdf.carhire-solutions.com/termsandconditions.aspx?reference=54336358022500162837545684&amp;languageId=2</Text>
            </Paragraph>
          </SubSection>
        </VendorMessage>
      </VendorMessages>
      <TPA_Extensions>
        <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo34.png"
        xmlns="" />
        <ProductInformation temp="https://createpdf.carhire-solutions.com/en/products/54336358022500162837545684?format=json"
        xmlns="" />
      </TPA_Extensions>
    </VehRateRuleRS>
  </soap:Body>
</soap:Envelope>

2.3. Reservation

All the information given here is specified in OTA2007A as the Vehicle Reservation Request/Response.

  • VehResRQ

  • VehResRS

2.3.1. Request

The following table displays the parameter, types and a short description of these functions.

Note

Please note the mandatory parameters in the following table. All mandatory parameters need to be present for a reservation request to succeed.

Parameter

Type

Mandatory

Description

VehResRQ > VehResRQCore

UniqueID [ID]

String

Client partner reservation reference number. Optional field that can be used to retrieve or cancel a booking. This MUST be unique, providing a duplicate will result in error and reservation failure. Maximum length 50 characters.

UniqueID [Type]

Const - ‘14’

Required if ID is provided

VehResRQ > VehResRQCore > VehPref

[Code]

String

Mandatory

Code which is returned after price verification. (value of ID_Context of VehAvailRateRS)

VehResRQ > POS > Source

[ISOCountry]

Enum

Mandatory

Set the language of the request/response. Short-codes in appendix.

[ISOCountry]

Enum

As second Node in POS node: Set the source country of the request/response. Short-codes in appendix.

[PseudoCityCode]

String

Shop Reference / Code. Optional field that can be used to link a reservation to a specific affiliate shop. Passing this in the reservation request will override any value passed in the quote request.

[AgentSine]

String

Agent Code. Optional field that can be used to link a reservation to a travel agent. Passing this in the reservation request will override any value passed in the quote request.

RequestorID [ID_Context]

String

Mandatory

Password of the client partner

RequestorID [Type]

String

Mandatory

Username of the client partner

VehResRQ > VehResRQCore > Customer > Primary

[BirthDate]

String

Mandatory

Birthdate of the driver. Format YYYY-MM-YY

[Gender]

Enum

Male or Female

[Language]

String

Mandatory

Language of the driver, as language code

PersonName > GivenName

String

Mandatory

First-name of the driver

PersonName > Surname

String

Mandatory

Surname of the driver

PersonName > NameTitle

String

2: Dr. 3: Prof. 4: Prof. Dr.

Telephone [PhoneNumber]

String

Mandatory

Telephone number of the customer

Telephone [PhoneTechType]

String

Mandatory

Type of the number. Possible values: 1. Voice 2. Data 3. Fax 6. TTY 8. Voice over IP

Email

String

Mandatory

E-Mail address of the customer

CitizenCountryName [Code]

String

Mandatory

Short-code of the country

CustLoyalty [MembershipID]

String

Indicates the loyalty number or frequent flyer number

CustLoyalty [ProgramID]

String

Only mandatory for airline frequent flying number

Two or three letter code referring to the airline or

Two letter Vendor Code of the supplier.

CustLoyalty [TravelSector]

Integer

Indicates the loyalty number origin. Currently used values:

  1. Airline frequent flyer number

  2. Supplier loyalty number

VehResRQ > VehResRQCore > Customer > Primary > Address

StreetNmbr

String

Mandatory

Street number of the customer (please avoid special characters like: !Ӥ$%&/()=?`;:_>)

AddressLine

String

Extra or second address of the customer (please avoid special characters like: !Ӥ$%&/()=?`;:_>)

CityName

String

Mandatory

City of the customer (please avoid special characters like: !Ӥ$%&/()=?`;:_>)

PostalCode

String

Mandatory

Zip code of the customer (please avoid special characters like: !Ӥ$%&/()=?`;:_>)

StateProv [StateCode]

String

Mandatory

Customer’s address state- only used for USA and Canada. Example: FL (Florida), CA (California)

VehResRQ > VehResRQCore > Customer > Additional

[BirthDate]

String

Mandatory

Birthdate of the driver. Format YYYY-MM-YY

PersonName > GivenName

String

Mandatory

First-name of the second driver (please avoid special characters like: !Ӥ$%&/()=?`;:_>)

PersonName > Surname

String

Mandatory

Surname of the second driver (please avoid special characters like: !Ӥ$%&/()=?`;:_>)

VehResRQ > VehResRQCore > SpecialEquipPrefs > SpecialEquipPref

[EquipType]

Integer

Equipment type ID as returned in VehAvailRateRS

[Quantity]

Integer

Number of equipment of this type to book

VehResRQ > VehResRQInfo > ArrivalDetails

[TransportationCode]

Integer

TransportationCode=14 indicates plane, as given by the OTA Transportation Code table

[Number]

String

The Flight number

2.3.1.1. Equipment

Extra equipments can be booked by providing equipment code (refer to ota2007a equipment table) and equipment quantity as shown below.

<SpecialEquipPrefs>
        <SpecialEquipPref EquipType="7" Quantity="1" />
</SpecialEquipPrefs>

2.3.1.2. Sample requests

Simple request
<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehResRQ Version="0">
      <POS>
        <Source ISOCountry="DE">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
      </POS>
      <VehResRQCore>
        <UniqueID ID="xxxxxxxxxxxx" Type="14"/>
        <Customer>
          <Primary BirthDate="1969-10-10" Gender="Male" Language="DE">
            <PersonName>
              <GivenName>Test</GivenName>
              <Surname>Test</Surname>
            </PersonName>
            <Telephone PhoneNumber="012345" PhoneTechType="1"/>
            <Email>customer@example.com</Email>
            <Address>
              <StreetNmbr>Buceriusstr. 2</StreetNmbr>
              <CityName>Hamburg</CityName>
              <PostalCode>20095</PostalCode>
            </Address>
            <CitizenCountryName Code="DE"/>
          </Primary>
        </Customer>
        <VehPref Code="_JZs0"/>
      </VehResRQCore>
      <VehResRQInfo/>
    </VehResRQ>
  </soap:Body>
</soap:Envelope>
Example showing that agent AnnaH from the Shop20 is sending reservation request on behalf of the CARNECT_EUR client partner (affiliate). This data will be saved with the reservation and can be used for reconciliation
<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehResRQ Version="0">
      <POS>
        <Source AgentSine="AnnaH" ISOCountry="DE" PseudoCityCode="Shop20">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
      </POS>
      <VehResRQCore>
        <Customer>
          <Primary BirthDate="1969-10-10" Gender="Male" Language="DE">
            <PersonName>
              <GivenName>Test</GivenName>
              <Surname>Test</Surname>
            </PersonName>
            <Telephone PhoneNumber="012345" PhoneTechType="1"/>
            <Email>customer@example.com</Email>
            <Address>
              <StreetNmbr>Buceriusstr. 2</StreetNmbr>
              <CityName>Hamburg</CityName>
              <PostalCode>20095</PostalCode>
            </Address>
            <CitizenCountryName Code="DE"/>
          </Primary>
        </Customer>
        <VehPref Code="_JZs0"/>
      </VehResRQCore>
      <VehResRQInfo/>
    </VehResRQ>
  </soap:Body>
</soap:Envelope>

Flight Number (Transportation Code)

The majority of car rental suppliers will allocate you a vehicle before you arrive at the counter for pick-up.

The incoming flight number (transportation code) indicates to the rental car companies what time your flight is estimated to arrive and the terminal of arrival so your booked vehicle is ready for you to collect.

By providing your flight information, rental companies become aware of an up to date with your flights’ arrival time and any delays which may transpire. In addition, if your flight has been delayed or cancelled, suppliers then know to keep your reservation until the delayed time and will not cancel your booking because of a “no show”.

Example with equipment, transportation code and additional driver
<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehResRQ Version="0">
      <POS>
        <Source ISOCountry="DE">
          <RequestorID ID_Context="password" Type="username"/>
        </Source>
      </POS>
      <VehResRQCore>
        <Customer>
          <Primary BirthDate="1969-10-10" Gender="Male" Language="DE">
            <PersonName>
              <GivenName>Test</GivenName>
              <Surname>Test</Surname>
            </PersonName>
            <Telephone PhoneNumber="012345" PhoneTechType="1"/>
            <Email>customer@example.com</Email>
            <Address>
              <StreetNmbr>Buceriusstr. 2</StreetNmbr>
              <CityName>Hamburg</CityName>
              <PostalCode>20095</PostalCode>
            </Address>
            <CitizenCountryName Code="DE"/>
          </Primary>
          <Additional BirthDate="1980-10-10">
            <PersonName>
              <GivenName>testAD</GivenName>
              <Surname>testAD</Surname>
            </PersonName>
          </Additional>
        </Customer>
        <VehPref Code="-OYFAQ2"/>
        <SpecialEquipPrefs>
          <SpecialEquipPref EquipType="7" Quantity="1"/>
          <SpecialEquipPref EquipType="8" Quantity="2"/>
          <SpecialEquipPref EquipType="222" Quantity="1"/>
        </SpecialEquipPrefs>
      </VehResRQCore>
      <VehResRQInfo>
        <!--TransportationCode=14 indicates plane, as given by the OTA Transportation Code table-->
        <ArrivalDetails Number="1234" TransportationCode="14">
          <OperatingCompany Code="AA"/>
        </ArrivalDetails>
      </VehResRQInfo>
    </VehResRQ>
  </soap:Body>
</soap:Envelope>

Note

For the PriceEquip „Additional Driver“ (EquipType = 222) an additional customer name and birthdate of the second driver needs to be submitted in the reservation request!

Frequent flight number or loyalty number

Main airlines and suppliers offer their loyalty programs in order for customers to collect awards and discounts when using their services repeatedly. In some cases. customers can add their frequent flyer numbers/loyalty number when renting a vehicle with an specific suppliers and start earning airline miles, points or credits.

Within the API you will have the option to provide the frequent flyer number or supplier loyalty number from the customers when filling in the reservation date under the string <CustLoyalty MembershipID=”>. This information will only be transmitted to the supplier and will not be verified, the information is also returned within the reservation response. Since this is an optional field, the strings can also be left empty.

Note

For TravelSector=”1”, ProgramID=”LH” is a mandatory field in order to transmit the correct airline frequent flight number. For TravelSector=”2”, ProgramID=”ZE” is an optional field. If this field is left empty, the field will be filed in automatically by the supplier selected at time of reservation. *Applicable only to suppliers who offer loyalty programs.

Example with Frequent flyer number and loyalty number
<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05"
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <VehResRQ Version="0">
      <POS>
        <Source ISOCountry="DE">
          <RequestorID ID_Context="password" Type="username" />
        </Source>
      </POS>
      <VehResRQCore>
        <Customer>
          <Primary BirthDate="1983-10-10" Gender="Male" Language="US">
            <PersonName>
              <GivenName>Carnect</GivenName>
              <Surname>Test</Surname>
            </PersonName>
            <Telephone PhoneNumber="+49401888980" PhoneTechType="1" />
            <Email>test@carnect.com</Email>
            <Address>
              <StreetNmbr>37</StreetNmbr>
              <AddressLine>Am Sandtorkai</AddressLine>
              <CityName>Hamburg</CityName>
              <PostalCode>20457</PostalCode>
              <StateProv StateCode="NY">Hamburg</StateProv>
            </Address>
            <CitizenCountryName Code="US" />
            <CustLoyalty MembershipID="12345678" ProgramID="LH" TravelSector="1" />
            <CustLoyalty MembershipID="4284626824" ProgramID="ZE" TravelSector="2" />
          </Primary>
        </Customer>
        <VehPref Code="nX_0vxJapE2kL9K5sr6kBg-33" />
        <SpecialEquipPrefs>
        </SpecialEquipPrefs>
      </VehResRQCore>
    </VehResRQ>
  </soap:Body>
</soap:Envelope>

2.3.2. Response

Parameter

Type

Description

VehResRS > VehResRSCore

[ReservationStatus]

String

Shows the reservation status See Appendix.

VehResRS > VehResRSCore > VehReservation > Customer > Primary

[BirthDate]

String

Birthdate of the driver. Format YYYY-MM-YY

[Gender]

Enum

Male or Female

[Language]

String

Language of the driver

PersonName > GivenName

String

First-name of the driver

PersonName > Surname

String

Surname of the driver

PersonName > NameTitle

String

2: Dr. 3: Prof. 4: Prof. Dr.

Telephone [PhoneNumber]

String

Telephone number of the customer

Telephone [PhoneTechType]

String

Type of the number. Possible values: 1. Voice 2. Data 3. Fax 5. Mobile 6. TTY 8. Voice over IP

Email

String

E-Mail address of the customer

CitizenCountryName [Code]

String

Shortcode of the country

CustLoyalty [MembershipID]

String

Indicates the loyalty number or frequent flyer number

CustLoyalty [ProgramID]

String

Two or three letter code referring to the airline or

Two letter Vendor Code of the supplier.

CustLoyalty [TravelSector]

Integer

Indicates the loyalty number origin. Currently used values:

  1. Airline frequent flyer number

  2. Supplier loyalty number

VehResRS > VehResRSCore > VehReservation > Customer > Primary > PaymentForm

Voucher [SupplierIdentifier]

String

Reservation number provided by the supplier

Voucher [Identifier]

String

Carnect Reservation number

Voucher [ValueType]

String

URL of the voucher

VehResRS > VehResRSCore > VehReservation > Customer > Primary > Address

StreetNmbr

String

Street number of the customer

AddressLine

String

Extra or second address of the customer

CityName

String

City of the customer

PostalCode

String

Zip code of the customer

StateProv [StateCode]

String

Customer’s address state- only used for USA and Canada. Example: FL (Florida), CA (California)

VehResRS > VehResRSCore > VehReservation > VehSegmentCore

Conf_ID [Type]

String

Always set to 14 to indicate the ID_Context being the Reservation Reference Number

Conf_ID [ID_Context]

String

Reservation Reference Number provided by Carnect

Vendor

String

Reservation Number provided by Supplier

Vendor [CompanyShortName]

String

Supplier name

Vendor [TravelSector]

String

Car Rental (Constant)

Vendor [Code]

String

Code of the supplier

VehResRS > VehResRSCore > VehReservation > VehSegmentCore > VehRentalCore

[PickUpDateTime]

Datetime

The date and time of the pickup time

[ReturnDateTime]

Datetime

The date and time of the return time

[CompanyShortName]

String

The name of the rental company

PickUpLocation [LocationCode]

String

Id of the Pickup location

PickUpLocation [CodeContext]

String

Internal location id of the supplier

PickUpLocation [ExtendedLocationCode]

String

Unique identifier of the location

PickUpLocation [CounterLocation]

String

OTA Vehicle Where At Facility code, currently used values:
  • 3 (shuttle off airport)

  • 7 (city downtown)

  • 14 (Airport)

VehResRS > VehResRSCore > VehReservation > VehSegmentCore > Vehicle

[AirConditionInd]

Boolean

Indicates if the car includes Air-condition

[TransmissionType]

Enum

The VehicleTransmissionSimpleType simple type defines a set of valid values for the transmission type of a vehicle. The valid values are Automatic and Manual.

[FuelType]

Enum

The kind of fuel the vehicle uses.

[PassengerQuantity]

String

Number of passengers that can be accommodated by this vehicle. This may be an exact number or may be a range, i.e., 4-5, 5-6.

[BaggageQuantity]

Integer

Number of bags/suitcases that can be accommodated by this vehicle.

[VendorCarType]

String

An internal car type assigned by the vendor.

VehType [VehicleCategory]

Integer

The type of vehicle, for example, truck, car. Defined in appendix

VehType [DoorCount]

String

The number of doors on a vehicle. This may be an exact number or a range, i.e. 2-4.

VehClass [Size]

Integer

The Size attribute identifies the size of a vehicle. See appendix.

VehMakeModel [Name]

String

The name of the car

VehMakeModel [Code]

String

Provides the code identifying the car type

PictureURL

String

URL of a image of the car type

VehResRS > VehResRSCore > VehReservation > VehSegmentCore > RentalRate

RateDistance [Unlimited]

Boolean

When true there is no mileage/kilometer restriction.

RateDistance [Quantity]

Integer

Provides the number of miles/kilometers included, typically used when Unlimited is false.

RateDistance [DistUnitName]

String

Provides the units in which distance is measured, when applied to the rental of a vehicle (i.e., mil or km).

RateDistance [VehiclePeriodUnitName]

String

Provides the period of time associated with the quantity and distance unit name (e.g. day).

VehResRS > VehResRSCore > VehReservation > VehSegmentCore > RentalRate > VehicleCharges

VehicleCharge [CurrencyCode]

String

Currency of the rate. See Appendix.

VehicleCharge [Amount]

Integer

Amount of the rate

VehicleCharge [TaxInclusive]

Boolean

If TRUE, taxes are included in this charge.

VehicleCharge [Purpose]

String

Shows the different charges of the offer.

VehicleCharge [Description]

String

Description of the rate.

VehicleCharge [IncludedInEstTotalInd]

String

Describes if the price for the equipment is included in the rate

VehicleCharge [RateConvertInd]

Boolean

VehResRS > VehResRSCore > VehReservation > VehSegmentCore > RentalRate > RateQualifier

[RateCategory]

String

Unique ID of the rate group

[RateQualifier]

String

Unique ID of the rate

[ArriveByFlight]

Boolean

Flag indicating whether a flight number is associated to the reservation

VehResRS > VehResRSCore

TPA_Extensions > PaymentUrl

String

URL for the credit card payment iFrame

2.3.2.1. Sample response

Sample response
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Header>
    <informationHeader xmlns="http://www.opentravel.org/OTA/2003/05">
      <Successfully>true</Successfully>
    </informationHeader>
  </soap:Header>
  <soap:Body>
    <VehResRS xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2018-09-28T11:22:51"
    Target="Test" Version="3">
      <VehResRSCore ReservationStatus="Confirmed">
        <VehReservation>
          <Customer>
            <Primary Gender="Male" BirthDate="1983-10-10" Language="DE">
              <PersonName>
                <GivenName>Test</GivenName>
                <Surname>Test</Surname>
              </PersonName>
              <Telephone PhoneTechType="1" PhoneNumber="+49012345678" />
              <Email>test@carnect.com</Email>
              <Address>
                <StreetNmbr>37</StreetNmbr>
                <AddressLine>Am Sandtorkai</AddressLine>
                <CityName>Hamburg</CityName>
                <PostalCode>20457</PostalCode>
              </Address>
              <CitizenCountryName Code="DE" />
              <PaymentForm>
                <Voucher SupplierIdentifier="" Identifier="VRT364873781214"
                ValueType="https://createpdf.carhire-solutions.com/voucher.aspx?bookingReference=VRT364873781214&amp;affiliateId=760&amp;languageId=2&amp;f=65b388f37e539272388574944ad9e5eece29f96d5d2be8c6a4dc6962ae1a12c8c285cf2359adcdf97d4e67b5e74aec39d6e5a78ffc7fc5411fca2c5790b755a4" />
              </PaymentForm>
            </Primary>
          </Customer>
          <VehSegmentCore>
            <ConfID Type="1" ID_Context="VRT364873781214" />
            <ConfID Type="UniqueId" ID="deadbeef-123456" />
            <Vendor CompanyShortName="OK RENT A CAR" TravelSector="Car Rental" Code="OK" />
            <VehRentalCore PickUpDateTime="2018-10-28T10:21:00"
            ReturnDateTime="2018-11-04T10:21:00">
              <PickUpLocation LocationCode="7542416" CodeContext="06"
              ExtendedLocationCode="322-OK06" CounterLocation="14">Barcelona International Airport (BCN), Barcelona
              Airport, Carrer de la Garrotxa 10 - El Prat de Llobregat</PickUpLocation>
              <ReturnLocation LocationCode="7546010" CodeContext="35"
              ExtendedLocationCode="1138-OK35" CounterLocation="14">Madrid Barajas International Airport (MAD),
              Madrid Airport, Calle de lola flores 1</ReturnLocation>
            </VehRentalCore>
            <Vehicle AirConditionInd="true" TransmissionType="Manual" FuelType="Petrol"
            DriveType="Unspecified" PassengerQuantity="5" BaggageQuantity="2"
            VendorCarType="WMAS" Code="Peugeot 308 SW" CodeContext="">
              <VehType VehicleCategory="8" DoorCount="5" />
              <VehClass Size="4" />
              <VehMakeModel Name="Peugeot 308 SW" Code="CWAR" />
              <PictureURL>
              https://static.carhire-solutions.com/images/car/OKRENTACAR/small/CWMR.jpg</PictureURL>
            </Vehicle>
            <RentalRate>
              <RateDistance Unlimited="false" Quantity="0" DistUnitName="Km"
              VehiclePeriodUnitName="Day" />
              <VehicleCharges>
                <VehicleCharge CurrencyCode="EUR" Amount="166.25" TaxInclusive="true"
                Purpose="original" RateConvertInd="true">
                  <Calculation UnitName="Day" Quantity="7" />
                </VehicleCharge>
                <VehicleCharge CurrencyCode="EUR" Amount="166.25" TaxInclusive="true"
                Purpose="preferred" RateConvertInd="true" />
                <VehicleCharge CurrencyCode="EUR" Amount="90.00" TaxInclusive="true"
                Description="Oneway fee" IncludedInEstTotalInd="false" Purpose="2"
                RateConvertInd="true">
                  <MinMax />
                </VehicleCharge>
                <VehicleCharge CurrencyCode="EUR" Amount="0.60"
                Description="Limited mileage of 300 km/day, maximum 3000 Km per rental, Extra mileage is possible and charged locally at 0,60 €/ KM."
                Purpose="8" />
                <VehicleCharge CurrencyCode="EUR" Amount="1350" TaxInclusive="true"
                Description="Upon collection of the car a security deposit will be blocked on the driver’s credit card. This deposit is determined by supplier considering your selected car category. The value of one tank of fuel and possible traffic fines can be additionally blocked on a valid credit card (prepaid debit cards, prepaid credit cards and cash cannot be accepted). For luxury cars two credit cards in the same name are required for all rentals. The credit card must not be from the same issuer. Please note some suppliers will not accept American Express, Visa Premier or Diners Club credit cards, we strongly recommend to use a Visa or Mastercard. In the event that you fail to produce a valid credit card or have insufficient funds available the car rental agent may refuse to release the vehicle. In this instance no funds will be reimbursed.Estimated deposit amount:: EUR 1350"
                IncludedInEstTotalInd="false" Purpose="Estimated deposit amount"
                RateConvertInd="true" />
              </VehicleCharges>
              <RateQualifier RateCategory="MicronNexus" RateQualifier="Carnect FF Standard"
              ArriveByFlight="true" />
            </RentalRate>
            <Fees>
              <Fee CurrencyCode="EUR" Amount="0.00" TaxInclusive="true" Description="VAT(TAX)"
              IncludedInRate="true" IncludedInEstTotalInd="true" />
            </Fees>
            <TotalCharge CurrencyCode="EUR" EstimatedTotalAmount="166.25" />
          </VehSegmentCore>
          <VehSegmentInfo>
            <PaymentRules>
              <PaymentRule PaymentType="4">Prepayment: Full rental price due at time of
              reservation. For the local pick up the card holder (DRIVER) must provide a valid
              credit card. Prepaid or debit cards, such as Maestro, Visa electron, Visa Premier
              or Carte Bleue are not accepted.</PaymentRule>
              <PaymentRule PaymentType="5">Credit Card is required</PaymentRule>
            </PaymentRules>
            <PricedCoverages>
              <PricedCoverage>
                <Coverage CoverageType="Oneway fee" Code="412">
                  <Details>
                    <Charge CurrencyCode="EUR" Amount="90.00" TaxInclusive="true"
                    Description="per rental: 90.00 EUR" IncludedInEstTotalInd="false">
                      <Calculation UnitCharge="90.00" UnitName="PreferredCurrencyPrice"
                      Quantity="1" />
                    </Charge>
                  </Details>
                </Coverage>
                <Charge />
              </PricedCoverage>
              <PricedCoverage>
                <Coverage CoverageType="Limited mileage of 300 km/day, maximum 3000 Km per rental, Extra mileage is possible and charged locally at 0,60 €/ KM."
                Code="416">
                  <Details>
                    <Charge CurrencyCode="EUR" Amount="0.60" TaxInclusive="true"
                    Description="per km: 0.60 EUR" IncludedInEstTotalInd="false">
                      <Calculation UnitCharge="0.6" UnitName="PreferredCurrencyPrice"
                      Quantity="1" />
                    </Charge>
                  </Details>
                </Coverage>
                <Charge />
              </PricedCoverage>
              <PricedCoverage>
                <Coverage CoverageType="Collision damage waiver" Code="CDW">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true" />
                  </Details>
                </Coverage>
                <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
                Description="with excess up to 1,200 EUR" GuaranteedInd="true"
                IncludedInRate="true" IncludedInEstTotalInd="true" />
              </PricedCoverage>
              <PricedCoverage>
                <Coverage CoverageType="Supplementary Liability Insurance" Code="SLI">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true" />
                  </Details>
                </Coverage>
                <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
                Description="Legally required, insurance for damages on the adversarial vehicle, persons and objects- In this offer it is included."
                GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
              </PricedCoverage>
              <PricedCoverage>
                <Coverage CoverageType="Theft protection" Code="TP">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true" />
                  </Details>
                </Coverage>
                <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
                Description="with excess up to 1,200 EUR" GuaranteedInd="true"
                IncludedInRate="true" IncludedInEstTotalInd="true" />
              </PricedCoverage>
              <PricedCoverage>
                <Coverage CoverageType="Airport Service Charge" Code="ASC">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true" />
                  </Details>
                </Coverage>
                <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
                Description="Some airports charge a service fee- In this offer it is included."
                GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
              </PricedCoverage>
              <PricedCoverage>
                <Coverage CoverageType="Fuel Information" Code="F2F">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true" />
                  </Details>
                </Coverage>
                <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
                Description="Full to Full: Pick up and drop off with a full tank. If the car is not returned with a full tank, suppliers will charge fuel plus refueling charges."
                GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
              </PricedCoverage>
              <PricedCoverage>
                <Coverage CoverageType="VAT" Code="TAX">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true" />
                  </Details>
                </Coverage>
                <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true"
                Description="The rate corresponds with the VAT-rate of the particular country."
                GuaranteedInd="true" IncludedInRate="true" IncludedInEstTotalInd="true" />
              </PricedCoverage>
              <PricedCoverage>
                <!-- Please read the comment about the cancellation fee format at
                 http://doc.carnect.com/ota2007/quote.html#cancellation-fee !-->
                <Coverage CoverageType="Cancellation fee" Code="CF">
                  <Details>
                    <Coverage CoverageType="2018-11-29T00:00:00_2018-12-13T15:00:00" />
                    <Charge CurrencyCode="EUR" Amount="24.00"
                    Description="A cancellation fee of 24.00 EUR will be charged from 21 Mar 2015 until 13 Dec 2018. A cancellation fee of 115.80 EUR will be charged from 13 Dec 2018 until 15 Dec 2018. A no show fee of 115.80 EUR will be charged." />
                  </Details>
                  <Details>
                    <Coverage CoverageType="2018-12-13T15:00:00_2018-12-15T15:00:00" />
                    <Charge CurrencyCode="EUR" Amount="115.80"
                    Description="A cancellation fee of 24.00 EUR will be charged from 21 Mar 2015 until 13 Dec 2018. A cancellation fee of 115.80 EUR will be charged from 13 Dec 2018 until 15 Dec 2018. A no show fee of 115.80 EUR will be charged." />
                  </Details>
                  <Details>
                    <Coverage CoverageType="2018-12-15T15:00:00_" />
                    <Charge CurrencyCode="EUR" Amount="115.80"
                    Description="A cancellation fee of 24.00 EUR will be charged from 21 Mar 2015 until 13 Dec 2018. A cancellation fee of 115.80 EUR will be charged from 13 Dec 2018 until 15 Dec 2018. A no show fee of 115.80 EUR will be charged." />
                  </Details>
                </Coverage>
                <Charge IncludedInRate="true" />
              </PricedCoverage>
            </PricedCoverages>
          </VehSegmentInfo>
        </VehReservation>
      </VehResRSCore>
      <VehResRSInfo>
        <TPA_Extensions>
          <ProductInformation xmlns=""
          url="https://createpdf.carhire-solutions.com/en/bookings/VRT364873781214/product"
          temp="https://createpdf.carhire-solutions.com/en/bookings/VRT364873781214/product?format=json" />
          <SupplierLogo xmlns=""
          url="https://static.carhire-solutions.com/images/supplier/logo/logo257.png" />
          <PaymentUrl>
            https://payments-test.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=CARNECTACCOUNT^TES012345678912&amp;Ticket=1234567890ABCDEF&amp;source=https%3A%2F%2Fsecure-test.worldpay.com&amp;successURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Dsuccess&amp;failureURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Dfailure&amp;cancelURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Dcancel&amp;pendingURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Dpending&amp;errorURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Derror&amp;expiryURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Dexpiry
          </PaymentUrl>
        </TPA_Extensions>
      </VehResRSInfo>
    </VehResRS>
  </soap:Body>
</soap:Envelope>

The information in the reservation response are identical to those from the VehAvailRate response (VehicleCharges, Fees, PricedEquips) and the VehRateRule response (PricedEquips).

2.3.3. Voucher

_images/Voucher.png

Below are the reservation details which are relevant to be displayed on the voucher document handed out to the customer:

Parameter

Available endpoint (response)

Mandatory

Description

Reservation reference numbers

Reservation reference number CARNECT

getVehReservation RS

Reservation reference number supplier

getVehReservation RS

Mandatory

client partner reference number must be submitted in the getVehReservation RQ

Supplier vehicle information

Supplier logo

getVehAvailRate RS getVehRateRule RS getVehReservation RS

Supplier name

getVehAvailRate RS getVehRateRule RS getVehReservation RS

Mandatory

Vehicle picture

getVehAvailRate RS getVehRateRule RS getVehReservation RS

Vehicle name

getVehAvailRate RS getVehRateRule RS getVehReservation RS

Mandatory

Acriss/SIPP code

getVehAvailRate RS getVehRateRule RS getVehReservation RS

Mandatory

Number or passengers

getVehAvailRate RS getVehRateRule RS getVehReservation RS

Mandatory

Number of doors

getVehAvailRate RS getVehRateRule RS getVehReservation RS

Mandatory

Number of suitcases

getVehAvailRate RS getVehRateRule RS getVehReservation RS

Mandatory

Vehicle transmission

getVehAvailRate RS getVehRateRule RS getVehReservation RS

Mandatory

Air condition

getVehAvailRate RS getVehRateRule RS getVehReservation RS

Mandatory

Customer

Customer’s name (first and last name)

getVehReservation RS

Mandatory

Customer’s address

getVehReservation RS

Reservation information

Status of the reservation (e.g. confirmed)

getVehReservation RS

Mandatory

Reservation date

getVehReservation RS

Mandatory

Rental pick up date

getVehReservation RS

Mandatory

Rental pick up time

getVehReservation RS

Mandatory

Number of rental days

getVehReservation RS

Pick-up rental station Name

getVehReservation RS

Mandatory

Pick-up rental station Address

getVehRateRule RS

Mandatory

Pick-up rental station Phone number

getVehRateRule RS

Mandatory

Pick-up rental station Opening hours

getVehRateRule RS

Mandatory

Pick-up rental station Location Description

getVehRateRule RS

Mandatory

Pick-up rental station Address

getVehRateRule RS

Mandatory

Flight number

getVehReservation RS

Mandatory

Return date

getVehReservation RS

Mandatory

Return time

getVehReservation RS

Mandatory

Return rental station Name

getVehRateRule RS

Mandatory

Return station address

getVehRateRule RS

Mandatory

Return station Phone number

getVehRateRule RS

Mandatory

Return station Opening hours

getVehRateRule RS

Mandatory

Return station Location Description

getVehRateRule RS

Mandatory

Reservation information

Insurance Ref number (Full protection)

getVehRateRule RS

Key ‘N Go URL

getVehRateRule RS

Mandatory

For the Key’N Go product, the customer’s email address must be submitted in the getVehReservation RQ

Reservation information

Rental price (paid at time of reservation, or no amount mentioned)

getVehRateRule RS getVehReservation RS

Mandatory

Cancellation Policy

getVehRateRule RS getVehReservation RS

Mandatory

Product information

getVehRateRule RS getVehReservation RS

Mandatory

For the voucher needs to be considered the Product Info returned in the VehResRS

Accounting details where applicable

getVehRateRule RS getVehReservation RS

Mandatory

Note

Parameters which are referred to as “mandatory” are obligatory to be included in the voucher document to avoid any customer complaints. They need to be displayed to successfully pass the certification process.

2.3.4. Display of Accounting Details

The accounting details are mandatory values that must be included in the voucher/document that is sent to the end customer and presented at the rental location. These values are passed within the API – only when applicable. The current list of car rental suppliers requiring this information to be displayed involves: Hertz, Avis, Budget and Payless.

Description of how the accounting details will be passed in the API:

The details are returned in 3 endpoints:

  1. getVehRateRule

<TPA_Extensions>
    <TermsConditions url="https://static.carhire-solutions.com/pdf/cnx_tac_en-gb.pdf"/>
    <ProductInformation url="https://createpdf.cnx-uat.com/en-gb/products/sUUbLJKoFkOo5zmjEr7szA-0" temp="https://createpdf.cnx-uat.com/en-gb/products/sUUbLJKoFkOo5zmjEr7szA-0?format=json"/>
    <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo10.png"/>
    <RateInformation PriceType="2" BusinessModel="2"/>
    <AccountingInformation>
         <IATA-No.>0194983C</IATA-No.>
         <AV.No.>872117710006</AV.No.>
    </AccountingInformation>
    <AccountingDetails>
        <Indicator>0194983C</Indicator>
        <Reference>872117710006</Reference>
    </AccountingDetails>
</TPA_Extensions>
  1. getVehReservation

<TPA_Extensions>
    <AccountingInformation>
        <IATA-No.>0194983C</IATA-No.>
        <AV.No.>872117710006</AV.No.>
    </AccountingInformation>
    <AccountingDetails>
        <Indicator>0194983C</Indicator>
        <Reference>872117710006</Reference>
    </AccountingDetails>
</TPA_Extensions>
  1. getVehRetReservation

<TPA_Extensions>
    <AccountingInformation>
        <IATA-No.>0194983C</IATA-No.>
        <AV.No.>872117710006</AV.No.>
    </AccountingInformation>
    <AccountingDetails>
        <Indicator>0194983C</Indicator>
        <Reference>872117710006</Reference>
   </AccountingDetails>
</TPA_Extensions>

These accounting details (in case they are being returned) are mandatory to be displayed on the voucher/rental document handed out to the customer. Without this information the customer could be charged the full rental price on the spot or, in worst case, refused the receipt of the rental car.

Note

Previously, the required information for each supplier was sent within the <AccountingInformation> node. However, because the values in this node varied between suppliers, an individual development was needed for each one. To maintain backward compatibility with the API, we continue to send this node for the majority of suppliers that require it.

Example how it could look in the voucher / rental document

_images/Voucher_AccountingDetails.png

Our advice for the naming of the indicators on the voucher is as follows:

  • <Indicator> => IATA/Agency no.

  • <Reference> => Account Reference

2.3.5. Supplier Specifications

This chapter contains information about supplier partners which require specific display to show the correct product. The according details are being returned in API and need to be read out.

2.3.5.1. Key’n Go by Goldcar (Skip the line)

Goldcar is offering a special product which includes the below concept:

  1. Customer books Skip the Line product

  2. Customer receives URL for online registration https://wsgw.goldcar.es/onlinecheck-in/welcome

  3. Customer receives QR Code (required to pick up car from machine at location)

  4. Customer goes to location and picks up reduced rental contract and keys from machine

  5. The only deposit required for Skip the Line products is for the fuel. This is a Full-to-Full product, Creditcard to be entered for deposit in machine

  6. Car location is being advised by the machine

  7. Customer drops off car and deposits keys at machine or counter

The below items are included in this product:

  • Super Cover Insurance

  • Coverage of all possible damage

  • No excess

  • Roadside assistance

  • Atypical charges that are normally POA charges

  • F2F

  • Environment Fees (UK & FR)

  • Airport fees included (SP & PT)

  • Road Tolls (via Verde-PT)

The benefit for your customer is that the key collection process is quick and clear with no waiting and no need to come to the location office. The product is returned as part of the PricedCoverages in the below endpoints:

  • VehAvailRate

  • VehRateRule

  • VehReservation

  • VehRetReservation

Here is an example how it looks in the getVehAvailRate response:

<PricedCoverage>
    <Coverage CoverageType="Skip-the-Line" Code="74">
        <Details>
            <Charge CurrencyCode="EUR" Amount="0.00" TaxInclusive="true" Description="Use Self-Service at pick-up time to avoid counter queues and accelerate your car rental pick-up." IncludedInRate="true" IncludedInEstTotalInd="true">
                <Calculation UnitCharge="0.00" UnitName="PreferredCurrencyPrice" Quantity="1"/>
            </Charge>
        </Details>
    </Coverage>
</PricedCoverage>

When the product is booked via VehReservation request the response includes the Self-Service URL in the TPA Extension node (static URL):

 <TPA_Extensions>
    <ProductInformation xmlns="" url="https://createpdf.carhire-solutions.com/en-gb/bookings/TES793262568386/product" temp="https://createpdf.carhire-solutions.com/en-gb/bookings/TES793262568386/product?format=json"/>
    <SupplierLogo xmlns="" url="https://static.carhire-solutions.com/images/supplier/logo/logo385.png"/>
    <RateInformation PriceType="2" BusinessModel="2"/>
    <CoverageDetails Code="74">
    <Metadata>
        <Item Name="Url" Value="https://wsgw.goldcar.es/onlinecheck-in/welcome"/>
    </Metadata>
</TPA_Extensions>

Important

It’s mandatory to provide the pre-registration URL (as returned in the VehReservationRS) to the end-customer so they can register themselves before pick-up and effectively use this quick-check service at the rental location.

Here is also an example how the pre-registration URL can be displayed in the voucher:

_images/Voucher_Preregistration.png

2.3.6. Payment

There is an option to let CARNECT collect the end-customer payment for car rentals done via the OTA API reservation endpoint. Two integration options are possible, both using Worldpay as 3rd Party PSP (Payment Service Provider). The payment integration option will depend on the capability of the Client Partner system to capture the end-customers’ credit card data. Your Client Partner’s Account configuration will have to be set-up accordingly.

2.3.6.1. Reservation request with the Payment token

This payment integration option is for Client Partners, who can read the Credit Card data from the end-customer and tokenize it, run the 3DS challenge(s) and then pass all to CARNECT.

The following reservation and payment exchange happens between the end-customer, you as our Client Partner and the CARNECT System:

  • Car rental API reservation request (VehResRQ) is send by the Client Partner containing the Credit card token, 3DS values and an optional Shopper reference (i.e. identifying a Client Partner specific ID for a recurring customer).

  • CARNECT creates a reservation (with payment pending) and then authorizes and captures the payment via the Payment Provider.

  • The API Reservation response (VehResRS) returned will contain the reservation status - depending on payment authorization response and the car rental supplier and 3rd Party insurance reservation responses.

Here the more detailed flow chart:

_images/worldpay_tokenized_process.png
  1. The end-customer makes a reservation and provides credit card data to the Client Partner car rental application.

  2. The Client Partner does the 3DS authentication of the credit card via his own Payment Service Provider (PSP) and receives the 3DS VALUES back.

  3. The Client Partner sends the end-customer’s Credit Card (CC) Information to Worldpay.

  4. Worldpay stores the Credit Card Information and send it back as a PAYMENTTOKENID representing encrypted CC data.

  5. The Client Partner sends OTA API VehResRQ with three information: PAYMENTTOKENID, 3DS VALUES and AUTHENTICATEDSHOPPERID.

  6. The CARNECT OTA System creates the reservation record and sends a purchase request to Worldpay with PAYMENTTOKENID, 3DS VALUES and AUTHENTICATEDSHOPPERID (in addition to the regular reservation flow done with the Car rental supplier).

  7. Worldpay creates a payment transaction (authorizes the CC and triggers automatic capture) and sends back the transaction status with AUTHORISATIONID.

  8. The CARNECT System saves the AUTHORISATIONID associated with the reservation together with a payment transaction status.

  9. CARNECT then sends the reservation response back to the Client partner.

Here the sample XML request:

<soapenv:Envelope xmlns:ns="http://www.opentravel.org/OTA/2003/05" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Header/>
        <soapenv:Body>
                <VehResRQ Version="0" xmlns="http://www.opentravel.org/OTA/2003/05">
                        <POS>
                                <Source ISOCountry="EN">
                                        <RequestorID Type="USERNAME" ID_Context="PASSWORD"/>
                                </Source>
                        </POS>
                        <VehResRQCore>
                                <VehPref Code="abcdefghijkl0123456789-0" />
                                <Customer>
                                        <Primary BirthDate="1981-01-01" Gender="Male" Language="DE">
                                                <Email>sample@mail.com</Email>
                                                <CitizenCountryName Code="DE"/>
                                                <Telephone PhoneNumber="+49401888980" PhoneTechType="1"/>
                                                <PersonName>
                                                        <GivenName>John</GivenName>
                                                        <Surname>Smith</Surname>
                                                </PersonName>
                                                <Address>
                                                        <StreetNmbr>100</StreetNmbr>
                                                        <AddressLine>Main Street</AddressLine>
                                                        <CityName>Hamburg</CityName>
                                                        <PostalCode>20000</PostalCode>
                                                </Address>
                                        </Primary>
                                </Customer>
                        </VehResRQCore>
                        <VehResRQInfo>
                                <RentalPaymentPref>
                                        <PaymentCard>
                                                <TPA_Extensions>
                                                        <PaymentReference>
                                                                <ShopperId>WORLDPAY_SHOPPER</ShopperId>
                                                                <PaymentTokenId>001122334455667788990</PaymentTokenId>
                                                                <ThreeDS>
                                                                        <Version>2.1.0</Version>
                                                                        <TransactionId>c5b808e7-1de1-4069-a17b-f70d3b3b1645</TransactionId>
                                                                        <VerificationValue>MAAAAAAAAAAAAAAAAAAAAAAAAAA=</VerificationValue>
                                                                        <TransactionResult>05</TransactionResult>
                                                                </ThreeDS>
                                                        </PaymentReference>
                                                </TPA_Extensions>
                                        </PaymentCard>
                                </RentalPaymentPref>
                        </VehResRQInfo>
                </VehResRQ>
        </soapenv:Body>
</soapenv:Envelope>

2.3.6.2. Reservation request with Credit Card via Datatrans

This payment integration option is for Client Partners, who can read the Credit Card data from the end-customer and create credit card alias with PCI Proxy provider (DATATRANS), run the 3DS challenge(s) and then pass all to CARNECT.

The following reservation and payment exchange happens between the end-customer, you as our Client Partner and the CARNECT System:

  • Car rental API reservation request (VehResRQ) is send by the Client Partner containing the Credit card alias from pci proxy provider and 3DS values as necessary.

  • CARNECT creates a reservation record and then authorizes and captures the payment via PCI Proxy provider and the Payment Provider

  • The API Reservation response (VehResRS) returned will contain the reservation status - depending on payment authorization response and the car rental supplier and 3rd Party insurance reservation responses.

  • Cvc element in CreditCard is optional*

Here the more detailed flow chart:

_images/worldpay_pciproxy_process.png
  1. The end-customer makes a reservation and provides credit card data to the Client Partner car rental application.

  2. The Client Partner does the 3DS authentication of the credit card via his own Payment Service Provider (PSP) or Datatrans and receives the 3DS values back

  3. The Client Partner sends the end-customer’s Credit Card (CC) Information to DATATRANS

  4. DATATRANS store Credit Card Information, and sent it back as CREDITCARDALIAS (encrypted credict card number, expiry date, card holder name)

  5. The Client Partner sends OTA API VehResRQ with three information: CREDITCARDALIAS, Expiry date and 3DS VALUES if applicable.

  6. The CARNECT OTA System creates the reservation record and sends a purchase request to DATATRANS with CREDITCARDALIAS, 3DS VALUES as necessary.

  7. DATATRANS replaces CREDITCARDALIAS with the raw credit card number and forwards the Purchase request to WorldPay with a raw credit card number, expiry date and 3ds values if applicable.

  8. Worldpay creates a payment transaction (authorizes the CC and triggers automatic capture) and sends back the transaction status with AUTHORISATIONID.

  9. The CARNECT System saves the AUTHORISATIONID associated with the reservation together with a payment transaction status.

  10. CARNECT then sends the reservation response back to the Client partner.

<soapenv:Envelope xmlns:ns="http://www.opentravel.org/OTA/2003/05" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Header/>
        <soapenv:Body>
                <VehResRQ Version="0" xmlns="http://www.opentravel.org/OTA/2003/05">
                        <POS>
                                <Source ISOCountry="EN">
                                        <RequestorID Type="USERNAME" ID_Context="PASSWORD"/>
                                </Source>
                        </POS>
                        <VehResRQCore>
                                <VehPref Code="abcdefghijkl0123456789-0" />
                                <Customer>
                                        <Primary BirthDate="1981-01-01" Gender="Male" Language="DE">
                                                <Email>sample@mail.com</Email>
                                                <CitizenCountryName Code="DE"/>
                                                <Telephone PhoneNumber="+49401888980" PhoneTechType="1"/>
                                                <PersonName>
                                                        <GivenName>John</GivenName>
                                                        <Surname>Smith</Surname>
                                                </PersonName>
                                                <Address>
                                                        <StreetNmbr>100</StreetNmbr>
                                                        <AddressLine>Main Street</AddressLine>
                                                        <CityName>Hamburg</CityName>
                                                        <PostalCode>20000</PostalCode>
                                                </Address>
                                        </Primary>
                                </Customer>
                        </VehResRQCore>
                        <VehResRQInfo>
                                <RentalPaymentPref>
                                        <PaymentCard>
                                                <TPA_Extensions>
                                                        <PaymentReference>
                                                                <CreditCard>
                                                                        <Number>123456789</Number>
                                                                        <ExpiryDate month="01" year="2024" />
                                                                        <HolderName>A Shopper</HolderName>
                                                                        <Cvc>encoded-card-verification-number*</Cvc>
                                                                </CreditCard>
                                                                <ThreeDS>
                                                                        <Version>2.1.0</Version>
                                                                        <TransactionId>c5b808e7-1de1-4069-a17b-f70d3b3b1645</TransactionId>
                                                                        <VerificationValue>MAAAAAAAAAAAAAAAAAAAAAAAAAA=</VerificationValue>
                                                                        <TransactionResult>05</TransactionResult>
                                                                </ThreeDS>
                                                        </PaymentReference>
                                                </TPA_Extensions>
                                        </PaymentCard>
                                </RentalPaymentPref>
                        </VehResRQInfo>
                </VehResRQ>
        </soapenv:Body>
</soapenv:Envelope>

2.3.6.3. Reservation response with hosted payment form URL

This payment integration option shall be used by Client Partners, who are not able to tokenize Credit Card data and therefore use a payment form hosted by an 3rd Party PSP. The following reservation and payment exchange happens between the end-customer, the Client Partner and CARNECT:

  • Car rental API reservation request (VehResRQ) send by the Client Partner contains re-direct URLs (for successful payment, cancelled payment, failed payment), on which the end-customer will be landing after the payment step.

  • CARNECT creates a reservation (with payment pending)

  • CARNECT initiates the payment with the PSP to get HOSTED PAYMENT FORM URL.

  • The API Reservation response (VehResRS) returned to the Client Partner will contain the URL to the HOSTED PAYMENT FORM, so the Client Partner application can present it to the end-customer.

  • Depending on the end-customer’s interaction with the payment form, the PSP triggers the update of the CARNECT reservation and calls the respective re-direct URLs of the Client Partner (which is displayed to the end-customer). In case a 3DS challenge is needed, it will also be managed by the PSP and displayed to the end-customer in the same form.

  • Optional, but strongly recommended is that the Client Partner retrieves the reservation from CARNECT (VehRetResRQ) to be sure about the final reservation status.

The HOSTED PAYMENT FORM can be presented in several ways to the Customer:

  1. Full-page redirect (works with all payment methods)

  2. iFrame integration into the Webpage

  3. Lightbox as overlay of a Webpage (cards only)

For a Full Page Redirect the Client Partner Website will re-direct end-customer simply to the payment form URL as returned by the PSP (the end-customer can see the different URL in the internet browser).


Example of iFrame integration into a dedicated payment step of a CARNECT Whitelabel:

_images/worldpay_hosted_iframe.png

In case of 3DS, the payment form will be replaced by verification page inside PSP hosted iFrame:

_images/worldpay_hosted_3ds.png

Here an example of the Lightbox integration: When the end-customer clicks on “Pay Now” the hosted Payment form is shown in the “light box” (modal overlay), also 3DS will be shown here:

_images/worldpay_hosted_lightbox.png

Here the detailed flow chart of the Reservation and payment interaction:

_images/worldpay_hosted_process.png

  1. The Client Partner website initiates a Reservation request with CARNECT

  2. The Client Partner submits its (dynamic) REDIRECT URLS to which the end-customer will be guided after the payment.

  3. CARNECT creates a reservation record and sends a request to WORLDPAY

  4. WORLDPAY returns a valid HOSTED PAYMENT FORM URL to CARNECT

  5. CARNECT returns in the reservation API response containing the HOSTED PAYMENT FORM.

  6. The Client Partner website will render the payment form and present it to the end-customer in an Full page, an iFrame or Lightbox, possibly applying some style guides for the design.

  7. The end-customer submits the payment form (i.e. enters and sends his credit card details).

  8. The PSP validates the CC (requests 3DS, if applicable) and processes the payment before the calling back the respective CARNECT URL

    • On Success: CARNECT confirms the reservation (reservation status is “confirmed”)

    • On Error: CARNECT fails the reservation, since there has been an payment issue (reservation status is set to “Cancelled during payment”)

    • On Cancel: Due to the aborted payment, CARNECT fails the reservation.

  9. CARNECT re-directs the end-customer to the Client Partner’s Success, Error or Cancel page.

  10. The Client Partner should retrieve the reservation via the CARNECT API and can show the result to the Customer.


Here the sample XML request:

<soapenv:Envelope xmlns:ns="http://www.opentravel.org/OTA/2003/05" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Header/>
        <soapenv:Body>
                <VehResRQ Version="0" xmlns="http://www.opentravel.org/OTA/2003/05">
                        <POS>
                                <Source ISOCountry="EN">
                                        <RequestorID Type="USERNAME" ID_Context="PASSWORD"/>
                                </Source>
                        </POS>
                        <VehResRQCore>
                                <VehPref Code="abcdefghijkl0123456789-0" />
                                <Customer>
                                        <Primary BirthDate="1981-01-01" Gender="Male" Language="DE">
                                                <Email>sample@mail.com</Email>
                                                <CitizenCountryName Code="DE"/>
                                                <Telephone PhoneNumber="+49401888980" PhoneTechType="1"/>
                                                <PersonName>
                                                        <GivenName>John</GivenName>
                                                        <Surname>Smith</Surname>
                                                </PersonName>
                                                <Address>
                                                        <StreetNmbr>100</StreetNmbr>
                                                        <AddressLine>Main Street</AddressLine>
                                                        <CityName>Hamburg</CityName>
                                                        <PostalCode>20000</PostalCode>
                                                </Address>
                                        </Primary>
                                </Customer>
                        </VehResRQCore>
                        <VehResRQInfo>
                                <RentalPaymentPref>
                                        <PaymentCard>
                                                <TPA_Extensions>
                                                        <PaymentDetails>
                                                                <SuccessUrl>http://www.example.com/success.html</SuccessUrl>
                                                                <CancelUrl>http://www.example.com/cancel.html</CancelUrl>
                                                                <ErrorUrl>http://www.example.com/error.html</ErrorUrl>
                            <FailureUrl>http://www.example.com/failure.html</FailureUrl>
                                                        </PaymentDetails>
                                                </TPA_Extensions>
                                        </PaymentCard>
                                </RentalPaymentPref>
                        </VehResRQInfo>
                </VehResRQ>
        </soapenv:Body>
</soapenv:Envelope>

Here is an example of the new node in the response that will contain the payment URL:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <soap:Body>
                <VehResRS Version="3" xmlns="http://www.opentravel.org/OTA/2003/05">
                        <VehResRSCore ReservationStatus="Pending Payment">
                                <VehReservation>
                                        <!-- The Reservation Response -->
                                </VehReservation>
                                <TPA_Extensions>
                                        <PaymentUrl>
                                                https://payments-test.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=CARNECTACCOUNT^TES012345678912&amp;Ticket=1234567890ABCDEF&amp;source=https%3A%2F%2Fsecure-test.worldpay.com&amp;successURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Dsuccess&amp;failureURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Dfailure&amp;cancelURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Dcancel&amp;pendingURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Dpending&amp;errorURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Derror&amp;expiryURL=https%3A%2F%2Fota2007a.carhire-solutions.com%2FWorldPayConfirmation.ashx%3FaffiliateId%3D888%26reservationId%3D999999%26hasRequestDetails%3D1%26type%3Dexpiry
                                        </PaymentUrl>
                                </TPA_Extensions>
                        </VehResRSCore>
                </VehResRS>
        </soap:Body>
</soap:Envelope>

2.3.6.4. JavaScript Integration with hosted payment form

In order to integrate the HOSTED PAYMENT FORM, the Client Partner must use a JavaScript SDK provided by WorldPay. More details can befound in the links below:

2.3.6.5. Reservation request SEPA Payment

This payment integration option is for Client Partners, who are able to read the credit card data from the end customer, either as tokenized payments or with Credit Card via Datatrans. The SEPA Direct Debit is an easy way to take bank payments from shoppers, using an IBAN (International Bank Account Number).

The following reservation and payment exchange happens between the end-customer, you as our Client Partner and the CARNECT System:

  • Car rental API reservation request (VehResRQ) is sent by the Client Partner containing the SEPA Payment Data, which includes IBAN, the account holder name and the billing address.

  • CARNECT creates a reservation with the supplier, the API reservation response (VehResRS) returned will contain the reservation status SEPA Pending Payment.

  • Within 3-5 days Worldpay confirms if the payment has been successful or failed. If successful CARNECT creates a reservation with 3rd Party insurance when applicable.

  • CARNECT modifies the reservation status to ReservationStatus=Confirmed and Confirmation Email is sent out

Given the processing time for SEPA payments, an applicable lead time has been established. If the reservation request is placed before the agreed lead time, the reservation request will be rejected with an indicator for the minimum lead days. Here the more detailed flow chart:

_images/worldpay_sepa_process.png

Explanation about the flow:

  1. The Client Partner website initiates a reservation request with CARNECT’s API. In the reservation request the Client Partner submits the SEPA payment data collected from the end customer.

  2. CARNECT creates a reservation with the supplier, and sends a request to Worldpay with the SEPA payment data.

  3. Worldpay returns payment status SENT_FOR_AUTHORISATION

  4. CARNECT returns in the Reservation API response to the Client Partner the reservation status SEPA Pending Payment

  5. Within 3 to 5 days, Worldpay confirms if the payment has been successful or failed. If successful, Worldpay sends back the payment transaction status AUTHORIZED/CAPTURED.

  6. If Rental Cover Protection has been included in reservation request, CARNECT creates a reservation with supplier Rental Cover.

  7. CARNECT modifies the reservation status to ReservationStatus=Confirmed and Confirmation Email is send out.

  8. The Client Partner can retrieve the reservation via the CARNECT API to show the result to the end-customer.

Here the sample XML request:

<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
        <VehResRQ Version="0">
        <POS>
                <Source ISOCountry="DE">
                        <RequestorID Type="username" ID_Context="password"/>
                </Source>
        </POS>
        <VehResRQCore>
                <Customer>
                <Primary BirthDate="1980-11-11" Gender="Male" Language="DE">
                        <PersonName>
                        <GivenName>Test</GivenName>
                        <Surname>Test</Surname>
                        </PersonName>
                        <Telephone PhoneNumber="12121212121" PhoneTechType="1"/>
                        <Email>testcheck@carnect.com</Email>
                        <Address>
                        <StreetNmbr>Buceriusstrasse 2</StreetNmbr>
                        <AddressLine>Buceriusstrasse 2</AddressLine>
                        <CityName>Hamburg</CityName>
                        <PostalCode>20095</PostalCode>
                        </Address>
                        <CitizenCountryName Code="DE"/>
                </Primary>
                </Customer>
                <VehPref Code="Yi_S9b3BJ06Vo0Uejz1R7Q-383"/>
        </VehResRQCore>
        <VehResRQInfo>
                <RentalPaymentPref>
                <BankAcct BankAcctNumber="DE02120300000000202051" >
                        <BankAcctName>John Test</BankAcctName>>
                        <TPA_Extensions>
                                <street>Worldpay</street>
                                <houseNumber>12</houseNumber>
                                <postalCode>CB4 0WE</postalCode>
                                <city>Cambridge</city>
                                <countryCode>GB</countryCode>
                                <firstName>Mr John</firstName> <!--optional-->
                                <lastName>Test</lastName> <!--optional-->
                                <state>state</state> <!--optional-->
                        </TPA_Extensions>
                </BankAcct>
                </RentalPaymentPref>
        </VehResRQInfo>
        </VehResRQ>
</soap:Body>
</soap:Envelope>

Where

<BankAcct BankAcctNumber=”es123123213213123” > → corresponds to the Account number or IBAN number

<BankAcctName>John Test</BankAcctName>> → corresponds to the account holder name

Note

Line no 34-41 corresponds to the billing address and the requirement for the billing address is that it should match the address linked to the customer’s bank account. Customer should use the correct billing address as it is part of the SEPA validation checks and incorrect information could cause a rejection from SEPA

2.4. Cancellation

All the information given here is specified in OTA2007A as the Vehicle Cancellation Request/Response.

  • VehCancelRQ

  • VehCancelRS

This section describes how to cancel an existing reservation.

A cancellation only can be performed by using the reference number and the customer last name (must be same as original customer name in vehicle reservation request/VehResRQ) by email or telephone to customer service. Additionally the client partner reference number provided at reservation time can be used to cancel the reservation. This is particularly useful in case the Carnect reference number is unavailable. This is optional and can be passed in the UniqueID-ID field.

The cancellation fee will be provided by response of web service (also if cancellation is not charged).

_images/cancelation.png

2.4.1. Request

In order to cancel an existing reservation, the reference number which is returned by VehResRS must be used (ID_Context) in combination with the customer’s surname which can also be obtained from VehResRS.

2.4.2. Response

A cancellation status is responded by vehCancelRS that identifies either cancellation is successful or not (might be pending, rejected, etc.)

2.4.3. Sample request

<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
                <VehCancelResRQ>
                        <POS>
                                <Source ISOCountry="ES">
                                        <RequestorID ID_Context="yyyyy" Type="xxxxx"/>
                                </Source>
                        </POS>
                        <VehCancelRQCore CancelType="Book">
                                <UniqueID ID_Context="MNxxxxxx"/>
                                <!-- OR -->
                                <UniqueID ID="xxxxxxxxxxxx" Type="14"/>
                                <PersonName>
                                        <Surname>xxxxx</Surname>
                                </PersonName>
                        </VehCancelRQCore>
                </VehCancelResRQ>
        </soap:Body>
</soap:Envelope>

2.4.4. Sample Response

<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
                <VehCancelResRS>
                        <VehCancelRSCore CancelStatus="Cancelled">
                                <CancelRules>
                                        <CancelRule Amount="0" />
                                </CancelRules>
                                <UniqueID ID_Context="3" />
                        </VehCancelRSCore>
                        <VehCancelRSInfo>
                                <VehReservation ReservationStatus="Cancelled by Customer NR">
                                        <VehSegmentCore>
                                                <Fees>
                                                        <Fee
                                                                CurrencyCode="EUR" Amount="0.13" TaxInclusive="true" Description="Cancellation fee" IncludedInEstTotalInd="false" />
                                                </Fees>
                                        </VehSegmentCore>
                                </VehReservation>
                        </VehCancelRSInfo>
                </VehCancelResRS>
        </soap:Body>
</soap:Envelope>

2.5. Retrieve Reservation

All the information given here is specified as the VehRetReservation Request.

  • VehRetResRQ

  • VehRetResRQ

With retrieving a reservation you can check the status of an existing reservation. The main purpose for retrieving a reservation is if it shall be cancelled or the status of the reservation was “on request”.

If a reservation is “on request” it means that the offer is not immediately confirmed. Sometimes it can happen that a supplier has to process a reservation manually (offline) for some reason. This happens very rarely. If you decide also to work with “on request offers” you should schedule a periodical job of the VehRetReservation request to constantly check the new status of the reservation. We recommend to do that twice a day. A reservation can be “on request” up to 48 hours. After that the reservation will either turn into status “Confirmed” or status “Cancelled”.

Car offers are already identified as “on request” or “available” in the VehAvailRateRS response:

<VehAvailCore Status="Available"><!--[...]--></VehAvailCore>

<VehAvailCore Status="On request"><!--[...]--></VehAvailCore>

Note

Please don’t mix the staus “On request” with the status “pending – on request”. The latter identifies a reservation as failed (due to any technical reason)!

_images/retrieve.png

2.5.1. Request

To retrieve reservation details the reference number returned within the VehRes Response must be used in combination with the customer’s surname. Additionally the client partner reservation number (itinerary number) provided at time or reservation time can be used for retrieval. This is particulary useful in case the Carnect reference number is unavailable. This is optional and can be passed in the UniqueID field.

2.5.2. Response

By VehRetResRS, customers are able to see the latest status of reservation and a full overview.

2.5.3. Sample Request

<soap:Envelope xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
      <VehRetResRQ EchoToken="1.0" Version="1.0" xmlns="http://www.opentravel.org/OTA/2003/05">
        <POS>
          <Source>
            <RequestorID ID_Context="password" Type="username"/>
          </Source>
        </POS>
        <VehRetResRQCore>
          <UniqueID ID_Context="CNXXXXXXXXXXXX"/>
          <PersonName>
            <Surname>Test</Surname>
          </PersonName>
        </VehRetResRQCore>
      </VehRetResRQ>
</soap:Body>
</soap:Envelope>

2.5.4. Response

In the VehRetResRS response you find similar information like in the VehRateRuleRS response about:

  • Reservation status

  • Car rental supplier

  • Location information

  • VehicleCharges

  • PricedCoverages

  • Product information

2.5.5. Sample Response

Sample response
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Header>
    <informationHeader xmlns="http://www.opentravel.org/OTA/2003/05">
      <Successfully>true</Successfully>
      <ProcessingTime>0.2264572</ProcessingTime>
    </informationHeader>
  </soap:Header>
  <soap:Body>
    <VehRetResRS EchoToken="1.0" Target="Test" TimeStamp="2021-07-22T18:03:08" Version="3" xmlns="http://www.opentravel.org/OTA/2003/05">
      <VehRetResRSCore>
        <VehReservation ReservationStatus="Confirmed">
          <Customer>
            <Primary BirthDate="1980-01-01" Gender="Male">
              <PersonName>
                <GivenName>Max</GivenName>
                <Surname>Mustermann</Surname>
              </PersonName>
              <Telephone PhoneNumber="1122334455" PhoneTechType="1"/>
              <Email>max@mustermann.com</Email>
              <Address>
                <StreetNmbr>Bespielstr. 1</StreetNmbr>
                <CityName>Hamburg</CityName>
                <PostalCode>20457</PostalCode>
              </Address>
              <CitizenCountryName Code="DE"/>
            </Primary>
          </Customer>
          <VehSegmentCore>
            <ConfID ID_Context="CNXXXXXXXXXXXX" Type="2"/>
            <Vendor Code="AL" CompanyShortName="Alamo" TravelSector="Car Rental">1234567XXXXX</Vendor>
            <VehRentalCore PickUpDateTime="2021-10-24T12:00:00" ReturnDateTime="2021-10-27T12:00:00">
              <PickUpLocation CodeContext="CNST72" ExtendedLocationCode="2789-ALCNST72" LocationCode="7545302" CounterLocation="14">CAIRNS INTERNATIONAL AIR</PickUpLocation>
              <ReturnLocation CodeContext="CNST72" ExtendedLocationCode="2789-ALCNST72" LocationCode="7545302" CounterLocation="14">CAIRNS INTERNATIONAL AIR</ReturnLocation>
            </VehRentalCore>
            <Vehicle AirConditionInd="true" BaggageQuantity="4" Code="TOYOTA YARIS" CodeContext="" DriveType="Unspecified" FuelType="Unspecified" PassengerQuantity="5" TransmissionType="Automatic" VendorCarType="CDAR">
              <VehType DoorCount="4" VehicleCategory="1"/>
              <VehClass Size="4"/>
              <VehMakeModel Code="CDAR" Name="TOYOTA YARIS"/>
              <PictureURL>https://static.carhire-solutions.com/images/car/Alamo/small/t_CDAR_AU.jpg</PictureURL>
            </Vehicle>
            <RentalRate>
              <RateDistance DistUnitName="Mile" Unlimited="true"/>
              <VehicleCharges>
                <VehicleCharge Amount="196.93" CurrencyCode="AUD" Purpose="original" RateConvertInd="true" TaxInclusive="true">
                  <Calculation Quantity="3" UnitName="Day"/>
                </VehicleCharge>
                <VehicleCharge Amount="122.87" CurrencyCode="EUR" Purpose="preferred" RateConvertInd="true" TaxInclusive="true"/>
                <VehicleCharge Amount="240.00" CurrencyCode="AUD" Description="Upon collection of the car a security deposit will be blocked on the driver’s credit card. This deposit is determined by supplier considering your selected car category. The value of one tank of fuel and possible traffic fines can be additionally blocked on a valid credit card (prepaid debit cards, prepaid credit cards and cash cannot be accepted).

For luxury cars two credit cards in the same name are required for all rentals. The credit card must not be from the same issuer. At least one of the credit cards must have enough funds for the full deposit amount. Please note some suppliers will not accept American Express, Carte Bleue, Union Pay, Visa Premier or Diners Club credit cards, we strongly recommend to use a Visa or Mastercard. In the event that you fail to produce a valid credit card or have insufficient funds available the car rental agent may refuse to release the vehicle. In this instance no funds will be reimbursed.Estimated deposit amount: excess amount as per selection made plus AUD 240.41" IncludedInEstTotalInd="false" Purpose="Estimated deposit amount" RateConvertInd="true" TaxInclusive="true"/>
              </VehicleCharges>
              <RateQualifier RateCategory="MICAL08" RateQualifier="PD1AU" VendorRateID="MICAL08">
                <RateComments>
                  <RateComment Name="SilverPackage"/>
                </RateComments>
              </RateQualifier>
            </RentalRate>
            <Fees>
              <Fee Amount="0.00" CurrencyCode="EUR" Description="VAT(TAX)" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
            </Fees>
            <TotalCharge CurrencyCode="AUD" EstimatedTotalAmount="196.93"/>
          </VehSegmentCore>
          <VehSegmentInfo>
            <PaymentRules>
              <PaymentRule PaymentType="4">Prepayment: Full rental price due at time of reservation. At pick-up a valid credit card in main driver´s name is required as a guarantee. Prepaid or debit cards, such as Maestro, Visa electron, Visa Premier or Carte Bleue are not accepted.</PaymentRule>
            </PaymentRules>
            <PricedCoverages>
              <PricedCoverage>
                <Coverage Code="418" CoverageType="Other taxes and service charges">
                  <Details>
                    <Charge Amount="39.58" CurrencyCode="AUD" Description="per rental: 39.58 AUD" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true">
                      <Calculation Quantity="1" UnitCharge="24.69" UnitName="PreferredCurrencyPrice"/>
                    </Charge>
                  </Details>
                </Coverage>
                <Charge/>
              </PricedCoverage>
              <PricedCoverage>
                <Coverage Code="CFC" CoverageType="Airport facility charge applicable at some US airports">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true"/>
                  </Details>
                </Coverage>
                <Charge Amount="0.00" CurrencyCode="EUR" Description="Additional airport fee which only occurs at a few airports in the USA- In this offer it is included." GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
              </PricedCoverage>
              <PricedCoverage>
                <Coverage Code="CDW" CoverageType="Collision damage waiver">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true"/>
                  </Details>
                </Coverage>
                <Charge Amount="0.00" CurrencyCode="EUR" Description="with excess according to selected car category" GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
              </PricedCoverage>
              <PricedCoverage>
                <Coverage Code="SLI" CoverageType="Supplementary Liability Insurance">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true"/>
                  </Details>
                </Coverage>
                <Charge Amount="0.00" CurrencyCode="EUR" Description="Legally required, insurance for damages on the adversarial vehicle, persons and objects- In this offer it is included." GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
              </PricedCoverage>
              <PricedCoverage>
                <Coverage Code="TP" CoverageType="Theft protection">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true"/>
                  </Details>
                </Coverage>
                <Charge Amount="0.00" CurrencyCode="EUR" Description="with excess according to selected car category" GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
              </PricedCoverage>
              <PricedCoverage>
                <Coverage Code="UNL" CoverageType="Unlimited Mileage">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true"/>
                  </Details>
                </Coverage>
                <Charge Amount="0.00" CurrencyCode="EUR" Description="No further costs apply for extra miles driven" GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
              </PricedCoverage>
              <PricedCoverage>
                <Coverage Code="ASC" CoverageType="Airport Service Charge">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true"/>
                  </Details>
                </Coverage>
                <Charge Amount="0.00" CurrencyCode="EUR" Description="Some airports charge a service fee- In this offer it is included." GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
              </PricedCoverage>
              <PricedCoverage>
                <Coverage Code="F2F" CoverageType="Fuel Information">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true"/>
                  </Details>
                </Coverage>
                <Charge Amount="0.00" CurrencyCode="EUR" Description="Full to Full: Pick up and drop off with a full tank. If the car is not returned with a full tank, suppliers will charge fuel plus refueling charges. " GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
              </PricedCoverage>
              <PricedCoverage>
                <Coverage Code="TAX" CoverageType="VAT">
                  <Details>
                    <Charge Amount="0.00" IncludedInRate="true"/>
                  </Details>
                </Coverage>
                <Charge Amount="0.00" CurrencyCode="EUR" Description="The rate corresponds with the VAT-rate of the particular country." GuaranteedInd="true" IncludedInEstTotalInd="true" IncludedInRate="true" TaxInclusive="true"/>
              </PricedCoverage>
              <PricedCoverage>
                <Coverage Code="CF" CoverageType="Cancellation fee">
                  <Details>
                    <Coverage CoverageType="2021-07-22T12:05:00_2021-10-23T12:00:00"/>
                    <Charge Amount="0.00" CurrencyCode="EUR" Description="Cancellation is free of charge. A cancellation fee of 100 percent or a maximum of 50.00 EUR will be charged from 23 Oct 2021 12:00 until 24 Oct 2021 12:00. A no show fee of 100 percent will be charged." IncludedInRate="true"/>
                  </Details>
                  <Details>
                    <Coverage CoverageType="2021-10-23T12:00:00_2021-10-24T12:00:00"/>
                    <Charge Amount="50.00" CurrencyCode="EUR" Description="Cancellation is free of charge. A cancellation fee of 100 percent or a maximum of 50.00 EUR will be charged from 23 Oct 2021 12:00 until 24 Oct 2021 12:00. A no show fee of 100 percent will be charged."/>
                  </Details>
                  <Details>
                    <Coverage CoverageType="2021-10-24T12:00:00_2022-01-05T00:00:00"/>
                    <Charge Amount="122.87" CurrencyCode="EUR" Description="Cancellation is free of charge. A cancellation fee of 100 percent or a maximum of 50.00 EUR will be charged from 23 Oct 2021 12:00 until 24 Oct 2021 12:00. A no show fee of 100 percent will be charged."/>
                  </Details>
                </Coverage>
                <Charge IncludedInRate="true"/>
              </PricedCoverage>
            </PricedCoverages>
          </VehSegmentInfo>
        </VehReservation>
      </VehRetResRSCore>
      <VehRetResRSInfo>
        <TPA_Extensions>
          <ProductInformation temp="https://createpdf.carhire-solutions.com/en-gb/bookings/CNXXXXXXXXXXXX/product?format=json" url="https://createpdf.carhire-solutions.com/en-gb/bookings/CNXXXXXXXXXXXX/product" xmlns=""/>
          <SupplierLogo url="https://static.carhire-solutions.com/images/supplier/logo/logo36.png" xmlns=""/>
          <RateInformation BusinessModel="2" PriceType="2"/>
        </TPA_Extensions>
      </VehRetResRSInfo>
    </VehRetResRS>
  </soap:Body>
</soap:Envelope>

2.6. Cargo Vans Product

The Cargo Vans Endpoint is a new OTA VehAvailRateRQ endpoint dedicated exclusively to the Cargo Vans product, to facilitate the separation between fleets for Cargo Vans (VehicleCategory="23") and Passenger Vehicles. This new Web-Service URL is only intended to be used for Availability of Car Offers (described in chapter 2.1) where the XML request schema remains the same.

For the rest of the other methods: Raterules, Reservation, Cancellation and Retrieve; the already known Production Web-service URL is required.

Web-service URL for Cargo Vans: https://api.carhire-solutions.com/cargo-van.asmx

2.6.1. Response

VehAvails > VehAvail > VehAvailCore > TPA_Extensions > Vehicle > Payload

[Value]

Decimal

Estimated load amount

[Unit]

String

Load unit name (kg)

VehAvails > VehAvail > VehAvailCore > TPA_Extensions > Vehicle > LoadingVolume

Total [Value]

Decimal

Estimated total loading volume

Total [Unit]

String

Volume unit (m3)

Length [Value]

Decimal

Estimated length

Length [Unit]

String

Length unit (m)

Width [Value]

Decimal

Estimated width

Width [Unit]

String

Width unit (m)

Height [Value]

Decimal

Estimated height

Height [Unit]

String

Height unit (m)

VehAvails > VehAvail > VehAvailCore > TPA_Extensions > Vehicle > DrivingLicense

Class

String

Driving license class (e.g “B” type)

2.6.2. Cargo Vans Attributes

Cargo Vans Attributes example
<VehAvailCore Status="Available">
    <Vehicle AirConditionInd="true" TransmissionType="Manual" FuelType="Unspecified" DriveType="Unspecified" PassengerQuantity="2" VendorCarType="CKMR" Code="Volkswagen Crafter Kastenwagen" CodeContext="">
        <VehType VehicleCategory="23" DoorCount="4"></VehType>
        <VehClass Size="4"></VehClass>
        <VehMakeModel Name="Volkswagen Crafter Kastenwagen" Code="CKMR"></VehMakeModel>
        <PictureURL>https://vehicles.carhire-solutions.com/473/original/1992006_CKMR.jpg</PictureURL>
    </Vehicle>
    <RentalRate>
      ...
    </RentalRate>
    <TotalCharge CurrencyCode="EUR" EstimatedTotalAmount="137.99" RateConvertInd="false"></TotalCharge>
    <Fees>
        <Fee CurrencyCode="EUR" Amount="0.00" TaxInclusive="true" Description="VAT(TAX)" IncludedInRate="true" IncludedInEstTotalInd="true"></Fee>
    </Fees>
    <Reference Type="16" ID_Context="lVN1zM7PYkemOEmwU37mtQ-7"></Reference>
    <Vendor TravelSector="Car Rental" Code="ZV" CodeContext="473">Avis Vans</Vendor>
    <VendorLocation LocationCode="7681213" CodeContext="H2E" ExtendedLocationCode="47-ZVH2E" CounterLocation="7" Name="Hamburg Harburg">53.46583,9.988611</VendorLocation>
    <DropOffLocation LocationCode="7681213" CodeContext="H2E" ExtendedLocationCode="47-ZVH2E" CounterLocation="7" Name="Hamburg Harburg">53.46583,9.988611</DropOffLocation>
    <TPA_Extensions>
        <Vehicle xmlns="">
            <Payload Unit="kg" Value="750.00"></Payload>
            <LoadingVolume>
                <Total Unit="m3" Value="20.00"></Total>
                <Length Unit="m" Value="2.05"></Length>
                <Width Unit="m" Value="3.05"></Width>
                <Height Unit="m" Value="3.14"></Height>
            </LoadingVolume>
            <DrivingLicense Class="B"></DrivingLicense>
        </Vehicle>
    </TPA_Extensions>
</VehAvailCore>

In the example above you can see different attributes for Cargo Vans (VehicleCategory="23"). The Vehicle TPA Extension contains the following elements:

  • Payload: the maximum weight or load that a vehicle, such as a van, can safely carry in addition to its own weight.

  • Loading Volume: loading volume refers to is the space available inside and designed for the van to carry the load.

  • Driver License Class: driving licence required for rental. The Driving License Class ‘B’ is automatically returned within our API and displayed for all Cargo Vans offers with destination Europe.

Car Rentals suppliers can provide Payload and Loading Volume information. In the example above, the Cargo Van has an estimated payload of 750 kg and a total loading volume of 20 cubic meters (~ length × width × height).

For the following endpoints, when the VehicleCategory="23", the Payload and Volume will be returned (when available) within the Payload and LoadingVolume elements of TPA Extension VehAvails > VehAvail > VehAvailCore > TPA_Extensions > Vehicle >:

  1. Availability (VehAvailRate)

  2. RateRule (VehRateRule)

  3. Reservation (VehReservation)

  4. Retrieve (VehRetRes)

Note

The Payload, LoadingVolume and DrivingLicense are also available on the Product Information and Voucher Confirmation.