Free cancellation up to 48h on most bookings · Use code SS10 for 10% off

+91 86885 69723 WhatsApp Us

S.S. Travels

Partner XML API

For brokers, aggregators and travel partners: search, book, change and cancel S.S. Travels rental cars with OpenTravel (OTA 2015B) XML messages.

Live inventory

Availability and prices come from the same engine as our website, so partners always see the same rental cars and the same totals.

Your own API key

Each partner gets a private key. Bookings are tagged to your account and can only be read, changed or cancelled by you.

Pay at the desk

Partner bookings are confirmed straight away. The customer pays at the rental desk. Commission terms are agreed with each partner.

SOAP or REST? How our XML API works

New to travel APIs? You don’t need to be a developer to follow this. Here is what the two common styles mean, why the travel industry uses XML, and exactly how our API works.

SOAP: a fixed envelope

SOAP is a protocol. Every request is wrapped in a fixed XML “envelope” with a header part for things like security and reliable delivery, and a body part with the actual message. It has long been the standard in large enterprise and airline systems.

REST: plain web requests

REST is an architectural style, not a protocol. It uses ordinary web (HTTP) methods such as GET to read and POST to send, and the data can be XML or JSON. REST with JSON is lighter and works well for simple data.

Why travel uses XML

Travel data is deeply nested: one booking holds the rental car, pick-up and return places and times, the drivers, insurance and extras. The OpenTravel Alliance (OTA) chose XML because it describes this structure clearly, and a strict schema (XSD) lets both sides check a message before it reaches a booking system, so mistakes are caught early. For simple data, JSON is lighter; for complex travel transactions, XML’s structure wins.

What OTA messages are

OTA messages are SOAP-style XML sent over HTTP: each request is one XML document with a known root element (for example OTA_VehAvailRateRQ) and each reply is a matching XML response (OTA_VehAvailRateRS).

How our API works, in four steps

  1. Send: POST your OTA XML message to https://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/ota, or to its own per-message URL (see Messages). Use the header Content-Type: application/xml.
  2. Identify yourself: put your API key in the X-API-Key header, or in the message’s POS / RequestorID (see Authentication).
  3. Get XML back: we reply with the matching OTA response in XML: rental cars and prices, a confirmed booking, or clear error codes.
  4. Already use SOAP? You can wrap your message in a SOAP envelope; we accept it and read the message inside. Our replies are plain OTA XML.

The location list is a simple GET request with no key: https://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/locations.xml.

Endpoint

POSThttps://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/ota

One URL for every message: we read the root element. Header Content-Type: application/xml. A SOAP envelope around the message is also accepted.

Per-message URLs work too, for example https://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/ota/OTA_VehAvailRateRQ or the short forms in the table below.

GEThttps://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/locations.xml public list of locations (no key). Filter with ?city=Hyderabad or ?code=HYD.

GEThttps://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/ota service description.

Authentication

Send your API key in either place:

  • HTTP header X-API-Key: sstp_… (recommended), or
  • inside the message: <POS><Source><RequestorID Type="22" ID="YOURCODE" MessagePassword="sstp_…"/></Source></POS>. With this form, ID must be your partner code.

Keys are issued by S.S. Travels and shown once. We store only a hash; if a key is lost or exposed we issue a new one and the old one stops working at once. Each key is limited to 60 requests per minute unless agreed otherwise.

To become a partner, contact us or apply for a business account.

Messages

RequestResponseShort URLWhat it does
OTA_VehAvailRateRQOTA_VehAvailRateRS/api/partner/ota/availAvailability and rates for a pick-up location and dates, cheapest first. Same prices as the website.
OTA_VehResRQOTA_VehResRS/api/partner/ota/bookCreate a booking. Returns our reference (ConfID Type 14) and your reference (ConfID Type 16).
OTA_VehRetResRQOTA_VehRetResRS/api/partner/ota/retrieveRead a booking you made, with status, car, prices and driver.
OTA_VehModifyRQOTA_VehModifyRS/api/partner/ota/modifyChange dates, locations, car class, extras, protection or driver details. Repriced and availability checked.
OTA_VehCancelRQOTA_VehCancelRS/api/partner/ota/cancelCancel a booking (CancelType="Book") or preview the charge (CancelType="Quote").
OTA_VehLocSearchRQOTA_VehLocSearchRS/api/partner/ota/locationsPick-up and return locations: airports and hotel pick-up points.

Codes and conventions

Dates and times

XML uses the OpenTravel format YYYY-MM-DDThh:mm:ss in local branch time (India, IST). For example, a pick-up on 10-12-2026 at 10:00 is sent as 2026-12-10T10:00:00. Any time-zone offset you add is ignored, so the time on the voucher is the time you sent.

Locations

Airport codes such as HYD, BLR, DEL, BOM, MAA, GOI, GOX, JAI, COK, plus hotel pick-up points served from their airport. Get the full list from locations.xml.

Car classes (Vehicle/@Code)

MINI, ECON, COMP, SUVC, SUVL, MPV7, VAN, LUX. The ACRISS code is in VehMakeModel/@Code.

Extras and protection

Extras (SpecialEquipPref/@Code): CHILD_SEAT, GPS, ADD_DRIVER, WIFI, ROOF_CARRIER, FASTAG. Protection (CoveragePref/@Code): BASIC (included), CDW, FULL. Promotion codes go in RateQualifier/@PromotionCode.

Prices

All amounts are in INR. RateTotalAmount is the car rental only; EstimatedTotalAmount is the full price including fees, extras, protection, discount and tax. Results are sorted cheapest first.

Booking references

Our reference is ConfID Type="14" (for example SSAB12CD). Send yours in TPA_Extensions/PartnerReference; it is returned as ConfID Type="16" and the same reference cannot be booked twice.

HTTP status codes

200Success (search, retrieve, modify, cancel)
201Booking created
400Malformed XML, missing required element, unsupported message
401Missing or invalid API key
403Partner deactivated, or RequestorID does not match the key
404Unknown location or booking reference
409Car class no longer available, duplicate partner reference, booking already cancelled or started
413 / 415Body over 256 KB / Content-Type is not XML
422Business rule: dates in the past, return before pick-up, minimum or maximum rental days, unknown extra
429Rate limit reached (Retry-After: 60)
500Unexpected error. Retry with the same PartnerReference: duplicates are refused, so retries are safe

OTA error codes

TypeCodeMeaning
4497Authentication: missing or invalid API key
6497Authorisation: partner deactivated or RequestorID mismatch
7448Protocol: malformed XML, DOCTYPE not allowed, wrong Content-Type
10321Required field missing
315Invalid or past date, return before pick-up, rental length
3361Unknown or inactive location
3182Unknown vehicle class
3322No availability
3320Unknown extra or protection plan
395Booking already cancelled, started, or reference already used
397Booking reference not found for your account
12448Rate limit or internal error

Errors come back as the matching response element (for example OTA_VehResRS) with an <Errors> block. Non-blocking notes, such as an expired promotion code, come in <Warnings> next to <Success/>.

Check your request logs

See your own recent calls (time in IST, message, HTTP status, error, duration and booking reference) from the command line. Your API key only ever shows your requests. Up to 30 log requests per minute.

GEThttps://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/logs?format=text filters: from and to (DD-MM-YYYY, IST days, default last 7 days), errors=1, limit (default 50, max 1000), format=text or xml.

GEThttps://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/logs/<id> the stored request and response XML for one call (the ID column). Stored for 30 days, with API keys and drivers' personal details (names, email, phone, address, date of birth, licence) masked.

curl (macOS, Linux, Windows 10+)

curl -H "X-API-Key: sstp_…"   "https://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/logs?format=text&errors=1&from=01-11-2026&to=07-11-2026"

curl -H "X-API-Key: sstp_…"   "https://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/logs/<id>"

PowerShell

$h = @{ "X-API-Key" = "sstp_…" }
(Invoke-WebRequest -UseBasicParsing -Headers $h `
  "https://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/logs?format=text&errors=1").Content

(Invoke-WebRequest -UseBasicParsing -Headers $h `
  "https://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/logs/<id>").Content

Ready-made scripts: partner-logs.sh (bash) and partner-logs.ps1 (PowerShell). Set SST_API_KEY first, then run for example ./partner-logs.sh --errors or .\partner-logs.ps1 -Errors.

Try it

curl
curl -X POST https://client18-sstravels-hyderabad-india.panyacomputech.com/api/partner/ota \
  -H "Content-Type: application/xml" \
  -H "X-API-Key: $SST_API_KEY" \
  --data-binary @OTA_VehAvailRateRQ.xml

Sample messages

Responses below are real responses from the API with test data. Schema: ss-travels-ota-2015B.xsd (profile of the OpenTravel 2015B vehicle messages).

Availability request OTA_VehAvailRateRQ.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_VehAvailRateRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" EchoToken="avail-001" PrimaryLangID="en">
  <POS>
    <Source>
      <RequestorID Type="22" ID="YOURCODE" MessagePassword="YOUR_API_KEY"/>
    </Source>
  </POS>
  <VehAvailRQCore Status="Available">
    <VehRentalCore PickUpDateTime="2026-12-10T10:00:00" ReturnDateTime="2026-12-13T10:00:00">
      <PickUpLocation LocationCode="HYD"/>
      <ReturnLocation LocationCode="HYD"/>
    </VehRentalCore>
    <!-- Optional: only these classes. Omit VehPrefs to get every available class. -->
    <!-- <VehPrefs><VehPref Code="ECON"/><VehPref Code="SUVC"/></VehPrefs> -->
    <!-- Optional promotion code, priced exactly as on the website -->
    <!-- <RateQualifier PromotionCode="SS10"/> -->
    <DriverType Age="30"/>
  </VehAvailRQCore>
  <VehAvailRQInfo>
    <!-- Optional protection plan: BASIC (default), CDW or FULL -->
    <CoveragePrefs><CoveragePref Code="BASIC"/></CoveragePrefs>
  </VehAvailRQInfo>
</OTA_VehAvailRateRQ>
Availability response (first car shown) OTA_VehAvailRateRS.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_VehAvailRateRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2026-10-29T06:55:32Z" EchoToken="avail" Target="Production" PrimaryLangID="en">
  <Success/>
  <VehAvailRSCore>
    <VehRentalCore PickUpDateTime="2026-12-10T10:00:00" ReturnDateTime="2026-12-13T10:00:00">
      <PickUpLocation LocationCode="HYD" CodeContext="SSTravels"/>
      <ReturnLocation LocationCode="HYD" CodeContext="SSTravels"/>
    </VehRentalCore>
    <VehVendorAvails>
      <VehVendorAvail>
        <Vendor Code="SST" CompanyShortName="S.S. Travels"/>
        <VehAvails>
          <VehAvail>
            <VehAvailCore Status="Available" RPH="1">
              <Vehicle PassengerQuantity="4" BaggageQuantity="1" AirConditionInd="true" TransmissionType="Manual" FuelType="Petrol" DriveType="Unspecified" Code="MINI" CodeContext="SSTravels">
                <VehType VehicleCategory="1" DoorCount="5"/>
                <VehClass Size="1"/>
                <VehMakeModel Name="Renault Kwid or similar" Code="MBMR"/>
                <PictureURL>https://client18-sstravels-hyderabad-india.panyacomputech.com/cars/mini.svg</PictureURL>
              </Vehicle>
              <RentalRate>
                <RateDistance Unlimited="true" DistUnitName="Km" VehiclePeriodUnitName="RentalPeriod"/>
                <VehicleCharges>
                  <VehicleCharge Purpose="1" Description="Car rental" Amount="4200" CurrencyCode="INR" TaxInclusive="false" GuaranteedInd="true" IncludedInRate="true">
                    <Calculation UnitCharge="1400" UnitName="Day" Quantity="3"/>
                  </VehicleCharge>
                </VehicleCharges>
                <RateQualifier RateQualifier="SSWEB" RateCategory="3"/>
              </RentalRate>
              <TotalCharge RateTotalAmount="4200" EstimatedTotalAmount="5251" CurrencyCode="INR"/>
              <Fees>
                <Fee Purpose="5" Code="AIRPORT_FEE" Description="Airport service fee" Amount="250" CurrencyCode="INR" TaxInclusive="false" IncludedInRate="false"/>
                <Fee Purpose="7" Code="TAX" Description="Tax 18%" Amount="801" CurrencyCode="INR" IncludedInRate="false"/>
              </Fees>
              <Reference Type="16" ID="own:MINI:HYD" ID_Context="SSTravels"/>
              <TPA_Extensions>
                <Availability Count="1"/>
                <Deposit Amount="5000" CurrencyCode="INR"/>
                <FreeCancellation Hours="48"/>
              </TPA_Extensions>
            </VehAvailCore>
            <VehAvailInfo>
              <PaymentRules>
                <PaymentRule RuleType="2" Amount="5251" CurrencyCode="INR">Pay at the rental desk</PaymentRule>
              </PaymentRules>
            </VehAvailInfo>
          </VehAvail>
          <!-- … more VehAvail elements, cheapest first … -->
        </VehAvails>
        <Info>
          <LocationDetails Code="HYD" Name="Rajiv Gandhi International Airport (HYD)" CodeContext="SSTravels" AtAirport="true">
            <Address>
              <AddressLine>Rajiv Gandhi International Airport, Shamshabad, Hyderabad 500409</AddressLine>
              <CityName>Hyderabad</CityName>
              <CountryName Code="IN">India</CountryName>
            </Address>
            <Position Latitude="17.2403" Longitude="78.4294"/>
            <AdditionalInfo>
              <OperationSchedules>
                <OperationSchedule>
                  <OperationTimes>
                    <OperationTime Text="mon_fri: 00:00-23:59"/>
                    <OperationTime Text="sat: 00:00-23:59"/>
                    <OperationTime Text="sun: 00:00-23:59"/>
                  </OperationTimes>
                </OperationSchedule>
              </OperationSchedules>
            </AdditionalInfo>
          </LocationDetails>
        </Info>
      </VehVendorAvail>
    </VehVendorAvails>
  </VehAvailRSCore>
</OTA_VehAvailRateRS>
Booking request OTA_VehResRQ.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_VehResRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" EchoToken="book-001">
  <POS>
    <Source>
      <RequestorID Type="22" ID="YOURCODE" MessagePassword="YOUR_API_KEY"/>
    </Source>
  </POS>
  <VehResRQCore Status="Available">
    <VehRentalCore PickUpDateTime="2026-12-10T10:00:00" ReturnDateTime="2026-12-13T10:00:00">
      <PickUpLocation LocationCode="HYD"/>
      <ReturnLocation LocationCode="HYD"/>
    </VehRentalCore>
    <Customer>
      <Primary BirthDate="1990-05-14">
        <PersonName>
          <GivenName>Ravi</GivenName>
          <Surname>Kumar</Surname>
        </PersonName>
        <Telephone PhoneTechType="1" PhoneNumber="+919876543210"/>
        <Email>ravi.kumar@example.com</Email>
        <Address>
          <AddressLine>12 MG Road</AddressLine>
          <CityName>Hyderabad</CityName>
          <CountryName Code="IN">India</CountryName>
        </Address>
        <!-- Driving licence: DocType 4 -->
        <Document DocType="4" DocID="TS0920190012345" DocIssueCountry="IN" ExpireDate="2031-05-13"/>
      </Primary>
    </Customer>
    <!-- Vehicle class code from the availability response (Vehicle/@Code) -->
    <VehPref Code="ECON" CodeContext="SSTravels"/>
    <DriverType Age="35"/>
    <!-- Optional extras: CHILD_SEAT, GPS, ADD_DRIVER, WIFI, ROOF_CARRIER, FASTAG -->
    <SpecialEquipPrefs>
      <SpecialEquipPref Code="GPS" Quantity="1"/>
    </SpecialEquipPrefs>
    <!-- <RateQualifier PromotionCode="SS10"/> -->
  </VehResRQCore>
  <VehResRQInfo>
    <SpecialReqPref>Flight AI 544 lands 09:30</SpecialReqPref>
    <CoveragePrefs><CoveragePref Code="CDW"/></CoveragePrefs>
    <!-- Optional: the offer reference returned by OTA_VehAvailRateRS -->
    <Reference Type="16" ID="own:ECON:HYD"/>
  </VehResRQInfo>
  <TPA_Extensions>
    <!-- Your own booking reference; returned as ConfID Type 16 and blocked from being booked twice -->
    <PartnerReference>BRK-100245</PartnerReference>
  </TPA_Extensions>
</OTA_VehResRQ>
Booking response OTA_VehResRS.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_VehResRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2026-10-29T06:55:32Z" EchoToken="book" Target="Production" PrimaryLangID="en">
  <Success/>
  <VehResRSCore ReservationStatus="Reserved">
    <VehReservation CreateDateTime="2026-10-29T06:55:32" LastModifyDateTime="2026-10-29T06:55:32" ReservationStatus="Reserved">
      <Customer>
        <Primary BirthDate="1990-05-14">
          <PersonName>
            <GivenName>Ravi</GivenName>
            <Surname>Kumar</Surname>
          </PersonName>
          <Telephone PhoneNumber="+919876543210" PhoneTechType="1"/>
          <Email>ravi.kumar@example.com</Email>
          <Document DocID="TS0920190012345" DocType="4" ExpireDate="2031-05-13" DocIssueCountry="IN"/>
        </Primary>
      </Customer>
      <VehSegmentCore>
        <ConfID Type="14" ID="SSAB12CD" ID_Context="SSTravels"/>
        <ConfID Type="16" ID="BRK-100245" ID_Context="Partner"/>
        <Vendor Code="SST">S.S. Travels</Vendor>
        <VehRentalCore PickUpDateTime="2026-12-10T10:00:00" ReturnDateTime="2026-12-13T10:00:00">
          <PickUpLocation LocationCode="HYD" CodeContext="SSTravels"/>
          <ReturnLocation LocationCode="HYD" CodeContext="SSTravels"/>
        </VehRentalCore>
        <Vehicle PassengerQuantity="5" BaggageQuantity="2" AirConditionInd="true" TransmissionType="Manual" FuelType="Petrol" DriveType="Unspecified" Code="ECON" CodeContext="SSTravels">
          <VehType VehicleCategory="1" DoorCount="5"/>
          <VehClass Size="3"/>
          <VehMakeModel Name="Maruti Suzuki Swift or similar" Code="EDMR"/>
          <PictureURL>https://client18-sstravels-hyderabad-india.panyacomputech.com/cars/econ.svg</PictureURL>
        </Vehicle>
        <RentalRate>
          <RateDistance Unlimited="true" DistUnitName="Km" VehiclePeriodUnitName="RentalPeriod"/>
          <VehicleCharges>
            <VehicleCharge Purpose="1" Description="Car rental" Amount="6150" CurrencyCode="INR" TaxInclusive="false" GuaranteedInd="true" IncludedInRate="true">
              <Calculation UnitCharge="2050" UnitName="Day" Quantity="3"/>
            </VehicleCharge>
          </VehicleCharges>
          <RateQualifier RateQualifier="SSWEB" RateCategory="3"/>
        </RentalRate>
        <PricedEquips>
          <PricedEquip>
            <Equipment EquipType="0" Code="GPS" Quantity="1">
              <Description>GPS navigation</Description>
            </Equipment>
            <Charge Amount="600" CurrencyCode="INR" IncludedInRate="false" TaxInclusive="false">
              <Calculation UnitCharge="200" Quantity="3"/>
            </Charge>
          </PricedEquip>
        </PricedEquips>
        <Fees>
          <Fee Purpose="5" Code="AIRPORT_FEE" Description="Airport service fee" Amount="250" CurrencyCode="INR" TaxInclusive="false" IncludedInRate="false"/>
          <Fee Purpose="7" Code="TAX" Description="Tax 18%" Amount="1449" CurrencyCode="INR" IncludedInRate="false"/>
        </Fees>
        <TotalCharge RateTotalAmount="6150" EstimatedTotalAmount="9499" CurrencyCode="INR"/>
      </VehSegmentCore>
      <VehSegmentInfo>
        <PaymentRules>
          <PaymentRule RuleType="2" Amount="9499" CurrencyCode="INR">Pay at the rental desk</PaymentRule>
        </PaymentRules>
        <PricedCoverages>
          <PricedCoverage>
            <Coverage CoverageType="7" Code="CDW">
              <Details CoverageTextType="Description">Standard cover (CDW + theft)</Details>
            </Coverage>
            <Charge Amount="1050" CurrencyCode="INR" IncludedInRate="false" TaxInclusive="false">
              <Calculation UnitCharge="350" UnitName="Day" Quantity="3"/>
            </Charge>
          </PricedCoverage>
        </PricedCoverages>
        <LocationDetails Code="HYD" Name="Rajiv Gandhi International Airport (HYD)" CodeContext="SSTravels" AtAirport="true">
          <Address>
            <AddressLine>Rajiv Gandhi International Airport, Shamshabad, Hyderabad 500409</AddressLine>
            <CityName>Hyderabad</CityName>
            <CountryName Code="IN">India</CountryName>
          </Address>
          <Position Latitude="17.2403" Longitude="78.4294"/>
          <AdditionalInfo>
            <OperationSchedules>
              <OperationSchedule>
                <OperationTimes>
                  <OperationTime Text="mon_fri: 00:00-23:59"/>
                  <OperationTime Text="sat: 00:00-23:59"/>
                  <OperationTime Text="sun: 00:00-23:59"/>
                </OperationTimes>
              </OperationSchedule>
            </OperationSchedules>
          </AdditionalInfo>
        </LocationDetails>
      </VehSegmentInfo>
    </VehReservation>
  </VehResRSCore>
</OTA_VehResRS>
Retrieve request OTA_VehRetResRQ.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_VehRetResRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" EchoToken="ret-001">
  <POS>
    <Source>
      <RequestorID Type="22" ID="YOURCODE" MessagePassword="YOUR_API_KEY"/>
    </Source>
  </POS>
  <VehRetResRQCore>
    <UniqueID Type="14" ID="SSAB12CD"/>
    <!-- Optional extra check -->
    <PersonName><Surname>Kumar</Surname></PersonName>
  </VehRetResRQCore>
</OTA_VehRetResRQ>
Modify request OTA_VehModifyRQ.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_VehModifyRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" EchoToken="mod-001">
  <POS>
    <Source>
      <RequestorID Type="22" ID="YOURCODE" MessagePassword="YOUR_API_KEY"/>
    </Source>
  </POS>
  <VehModifyRQCore Status="Available" ModifyType="Modify">
    <UniqueID Type="14" ID="SSAB12CD"/>
    <!-- Send only what changes. Dates/locations: -->
    <VehRentalCore PickUpDateTime="2026-12-10T10:00:00" ReturnDateTime="2026-12-15T10:00:00">
      <PickUpLocation LocationCode="HYD"/>
      <ReturnLocation LocationCode="HYD"/>
    </VehRentalCore>
    <!-- Change class: <VehPref Code="COMP"/> -->
    <!-- Replace extras (send an empty SpecialEquipPrefs to remove all): -->
    <SpecialEquipPrefs>
      <SpecialEquipPref Code="GPS" Quantity="1"/>
      <SpecialEquipPref Code="CHILD_SEAT" Quantity="1"/>
    </SpecialEquipPrefs>
    <!-- Update driver details: -->
    <Customer><Primary><Telephone PhoneNumber="+919800000000"/></Primary></Customer>
  </VehModifyRQCore>
</OTA_VehModifyRQ>
Modify response OTA_VehModifyRS.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_VehModifyRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2026-10-29T06:55:32Z" EchoToken="mod" Target="Production" PrimaryLangID="en">
  <Success/>
  <VehModifyRSCore ModifyStatus="Modified">
    <VehReservation CreateDateTime="2026-10-29T06:55:32" LastModifyDateTime="2026-10-29T06:55:32" ReservationStatus="Reserved">
      <Customer>
        <Primary BirthDate="1990-05-14">
          <PersonName>
            <GivenName>Ravi</GivenName>
            <Surname>Kumar</Surname>
          </PersonName>
          <Telephone PhoneNumber="+919800000000" PhoneTechType="1"/>
          <Email>ravi.kumar@example.com</Email>
          <Document DocID="TS0920190012345" DocType="4" ExpireDate="2031-05-13" DocIssueCountry="IN"/>
        </Primary>
      </Customer>
      <VehSegmentCore>
        <ConfID Type="14" ID="SSAB12CD" ID_Context="SSTravels"/>
        <ConfID Type="16" ID="BRK-100245" ID_Context="Partner"/>
        <Vendor Code="SST">S.S. Travels</Vendor>
        <VehRentalCore PickUpDateTime="2026-12-10T10:00:00" ReturnDateTime="2026-12-15T10:00:00">
          <PickUpLocation LocationCode="HYD" CodeContext="SSTravels"/>
          <ReturnLocation LocationCode="HYD" CodeContext="SSTravels"/>
        </VehRentalCore>
        <Vehicle PassengerQuantity="5" BaggageQuantity="2" AirConditionInd="true" TransmissionType="Manual" FuelType="Petrol" DriveType="Unspecified" Code="ECON" CodeContext="SSTravels">
          <VehType VehicleCategory="1" DoorCount="5"/>
          <VehClass Size="3"/>
          <VehMakeModel Name="Maruti Suzuki Swift or similar" Code="EDMR"/>
          <PictureURL>https://client18-sstravels-hyderabad-india.panyacomputech.com/cars/econ.svg</PictureURL>
        </Vehicle>
        <RentalRate>
          <RateDistance Unlimited="true" DistUnitName="Km" VehiclePeriodUnitName="RentalPeriod"/>
          <VehicleCharges>
            <VehicleCharge Purpose="1" Description="Car rental" Amount="10250" CurrencyCode="INR" TaxInclusive="false" GuaranteedInd="true" IncludedInRate="true">
              <Calculation UnitCharge="2050" UnitName="Day" Quantity="5"/>
            </VehicleCharge>
          </VehicleCharges>
          <RateQualifier RateQualifier="SSWEB" RateCategory="3"/>
        </RentalRate>
        <PricedEquips>
          <PricedEquip>
            <Equipment EquipType="0" Code="GPS" Quantity="1">
              <Description>GPS navigation</Description>
            </Equipment>
            <Charge Amount="1000" CurrencyCode="INR" IncludedInRate="false" TaxInclusive="false">
              <Calculation UnitCharge="200" Quantity="5"/>
            </Charge>
          </PricedEquip>
          <PricedEquip>
            <Equipment EquipType="0" Code="CHILD_SEAT" Quantity="1">
              <Description>Child seat</Description>
            </Equipment>
            <Charge Amount="1250" CurrencyCode="INR" IncludedInRate="false" TaxInclusive="false">
              <Calculation UnitCharge="250" Quantity="5"/>
            </Charge>
          </PricedEquip>
        </PricedEquips>
        <Fees>
          <Fee Purpose="5" Code="AIRPORT_FEE" Description="Airport service fee" Amount="250" CurrencyCode="INR" TaxInclusive="false" IncludedInRate="false"/>
          <Fee Purpose="7" Code="TAX" Description="Tax 18%" Amount="2610" CurrencyCode="INR" IncludedInRate="false"/>
        </Fees>
        <TotalCharge RateTotalAmount="10250" EstimatedTotalAmount="17110" CurrencyCode="INR"/>
      </VehSegmentCore>
      <VehSegmentInfo>
        <PaymentRules>
          <PaymentRule RuleType="2" Amount="17110" CurrencyCode="INR">Pay at the rental desk</PaymentRule>
        </PaymentRules>
        <PricedCoverages>
          <PricedCoverage>
            <Coverage CoverageType="7" Code="CDW">
              <Details CoverageTextType="Description">Standard cover (CDW + theft)</Details>
            </Coverage>
            <Charge Amount="1750" CurrencyCode="INR" IncludedInRate="false" TaxInclusive="false">
              <Calculation UnitCharge="350" UnitName="Day" Quantity="5"/>
            </Charge>
          </PricedCoverage>
        </PricedCoverages>
        <LocationDetails Code="HYD" Name="Rajiv Gandhi International Airport (HYD)" CodeContext="SSTravels" AtAirport="true">
          <Address>
            <AddressLine>Rajiv Gandhi International Airport, Shamshabad, Hyderabad 500409</AddressLine>
            <CityName>Hyderabad</CityName>
            <CountryName Code="IN">India</CountryName>
          </Address>
          <Position Latitude="17.2403" Longitude="78.4294"/>
          <AdditionalInfo>
            <OperationSchedules>
              <OperationSchedule>
                <OperationTimes>
                  <OperationTime Text="mon_fri: 00:00-23:59"/>
                  <OperationTime Text="sat: 00:00-23:59"/>
                  <OperationTime Text="sun: 00:00-23:59"/>
                </OperationTimes>
              </OperationSchedule>
            </OperationSchedules>
          </AdditionalInfo>
        </LocationDetails>
      </VehSegmentInfo>
    </VehReservation>
  </VehModifyRSCore>
</OTA_VehModifyRS>
Cancel request OTA_VehCancelRQ.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_VehCancelRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" EchoToken="cxl-001">
  <POS>
    <Source>
      <RequestorID Type="22" ID="YOURCODE" MessagePassword="YOUR_API_KEY"/>
    </Source>
  </POS>
  <!-- CancelType="Book" cancels. CancelType="Quote" only shows the cancellation charge. -->
  <VehCancelRQCore CancelType="Book">
    <UniqueID Type="14" ID="SSAB12CD"/>
    <PersonName><Surname>Kumar</Surname></PersonName>
  </VehCancelRQCore>
</OTA_VehCancelRQ>
Cancel response OTA_VehCancelRS.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_VehCancelRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2026-10-29T06:55:32Z" EchoToken="cxl" Target="Production" PrimaryLangID="en">
  <Success/>
  <VehCancelRSCore CancelStatus="Cancelled">
    <UniqueID Type="14" ID="SSAB12CD"/>
    <CancelRules>
      <CancelRule Amount="0" CurrencyCode="INR">Free cancellation: no charge</CancelRule>
    </CancelRules>
  </VehCancelRSCore>
  <VehCancelRSInfo>
    <VehReservation CreateDateTime="2026-10-29T06:55:32" LastModifyDateTime="2026-10-29T06:55:32" ReservationStatus="Cancelled">
      <Customer>
        <Primary BirthDate="1990-05-14">
          <PersonName>
            <GivenName>Ravi</GivenName>
            <Surname>Kumar</Surname>
          </PersonName>
          <Telephone PhoneNumber="+919800000000" PhoneTechType="1"/>
          <Email>ravi.kumar@example.com</Email>
          <Document DocID="TS0920190012345" DocType="4" ExpireDate="2031-05-13" DocIssueCountry="IN"/>
        </Primary>
      </Customer>
      <VehSegmentCore>
        <ConfID Type="14" ID="SSAB12CD" ID_Context="SSTravels"/>
        <ConfID Type="16" ID="BRK-100245" ID_Context="Partner"/>
        <Vendor Code="SST">S.S. Travels</Vendor>
        <VehRentalCore PickUpDateTime="2026-12-10T10:00:00" ReturnDateTime="2026-12-15T10:00:00">
          <PickUpLocation LocationCode="HYD" CodeContext="SSTravels"/>
          <ReturnLocation LocationCode="HYD" CodeContext="SSTravels"/>
        </VehRentalCore>
        <Vehicle PassengerQuantity="5" BaggageQuantity="2" AirConditionInd="true" TransmissionType="Manual" FuelType="Petrol" DriveType="Unspecified" Code="ECON" CodeContext="SSTravels">
          <VehType VehicleCategory="1" DoorCount="5"/>
          <VehClass Size="3"/>
          <VehMakeModel Name="Maruti Suzuki Swift or similar" Code="EDMR"/>
          <PictureURL>https://client18-sstravels-hyderabad-india.panyacomputech.com/cars/econ.svg</PictureURL>
        </Vehicle>
        <RentalRate>
          <RateDistance Unlimited="true" DistUnitName="Km" VehiclePeriodUnitName="RentalPeriod"/>
          <VehicleCharges>
            <VehicleCharge Purpose="1" Description="Car rental" Amount="10250" CurrencyCode="INR" TaxInclusive="false" GuaranteedInd="true" IncludedInRate="true">
              <Calculation UnitCharge="2050" UnitName="Day" Quantity="5"/>
            </VehicleCharge>
          </VehicleCharges>
          <RateQualifier RateQualifier="SSWEB" RateCategory="3"/>
        </RentalRate>
        <PricedEquips>
          <PricedEquip>
            <Equipment EquipType="0" Code="GPS" Quantity="1">
              <Description>GPS navigation</Description>
            </Equipment>
            <Charge Amount="1000" CurrencyCode="INR" IncludedInRate="false" TaxInclusive="false">
              <Calculation UnitCharge="200" Quantity="5"/>
            </Charge>
          </PricedEquip>
          <PricedEquip>
            <Equipment EquipType="0" Code="CHILD_SEAT" Quantity="1">
              <Description>Child seat</Description>
            </Equipment>
            <Charge Amount="1250" CurrencyCode="INR" IncludedInRate="false" TaxInclusive="false">
              <Calculation UnitCharge="250" Quantity="5"/>
            </Charge>
          </PricedEquip>
        </PricedEquips>
        <Fees>
          <Fee Purpose="5" Code="AIRPORT_FEE" Description="Airport service fee" Amount="250" CurrencyCode="INR" TaxInclusive="false" IncludedInRate="false"/>
          <Fee Purpose="7" Code="TAX" Description="Tax 18%" Amount="2610" CurrencyCode="INR" IncludedInRate="false"/>
        </Fees>
        <TotalCharge RateTotalAmount="10250" EstimatedTotalAmount="17110" CurrencyCode="INR"/>
      </VehSegmentCore>
      <VehSegmentInfo>
        <PaymentRules>
          <PaymentRule RuleType="2" Amount="17110" CurrencyCode="INR">Pay at the rental desk</PaymentRule>
        </PaymentRules>
        <PricedCoverages>
          <PricedCoverage>
            <Coverage CoverageType="7" Code="CDW">
              <Details CoverageTextType="Description">Standard cover (CDW + theft)</Details>
            </Coverage>
            <Charge Amount="1750" CurrencyCode="INR" IncludedInRate="false" TaxInclusive="false">
              <Calculation UnitCharge="350" UnitName="Day" Quantity="5"/>
            </Charge>
          </PricedCoverage>
        </PricedCoverages>
        <LocationDetails Code="HYD" Name="Rajiv Gandhi International Airport (HYD)" CodeContext="SSTravels" AtAirport="true">
          <Address>
            <AddressLine>Rajiv Gandhi International Airport, Shamshabad, Hyderabad 500409</AddressLine>
            <CityName>Hyderabad</CityName>
            <CountryName Code="IN">India</CountryName>
          </Address>
          <Position Latitude="17.2403" Longitude="78.4294"/>
          <AdditionalInfo>
            <OperationSchedules>
              <OperationSchedule>
                <OperationTimes>
                  <OperationTime Text="mon_fri: 00:00-23:59"/>
                  <OperationTime Text="sat: 00:00-23:59"/>
                  <OperationTime Text="sun: 00:00-23:59"/>
                </OperationTimes>
              </OperationSchedule>
            </OperationSchedules>
          </AdditionalInfo>
        </LocationDetails>
      </VehSegmentInfo>
    </VehReservation>
  </VehCancelRSInfo>
</OTA_VehCancelRS>
Location search request OTA_VehLocSearchRQ.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_VehLocSearchRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" EchoToken="loc-001">
  <POS>
    <Source>
      <RequestorID Type="22" ID="YOURCODE" MessagePassword="YOUR_API_KEY"/>
    </Source>
  </POS>
  <!-- Optional filter by city or location code. Omit VehLocSearchCriterion for all locations. -->
  <VehLocSearchCriterion>
    <Address><CityName>Hyderabad</CityName></Address>
  </VehLocSearchCriterion>
  <Vendor Code="SST"/>
</OTA_VehLocSearchRQ>
Error response (malformed XML) OTA_ErrorRS.xml
<?xml version="1.0" encoding="UTF-8"?>
<OTA_ErrorRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2026-10-29T06:55:32Z" Target="Production" PrimaryLangID="en">
  <Errors>
    <Error Type="7" Code="448" ShortText="Malformed XML: Expected closing tag 'VehAvailRQCore' (opened in ">Malformed XML: Expected closing tag 'VehAvailRQCore' (opened in line 1, col 21) instead of closing tag 'OTA_VehAvailRateRQ'. (line 1, column 37)</Error>
  </Errors>
</OTA_ErrorRS>