Attention: Please check the Hotel Release Notes page for the latest updates and enhancements.
Sync Hotel Reservation API Reference
POST |
book/reservations/ Base path: Pre-production https://api.pp.travelport.com/11/hotel/ Production https://api.travelport.com/11/hotel/ |
Related Content: Hotel Guide, Hotel Workflow Diagram, Hotel Availability API Reference
Use the Sync Reservation request to synchronize a Booking.com or Expedia hotel reservation to a Travelport PNR whenever particular sell failures occur. The Sync Reservation request is a scaled down re-try of a previous Create or Add Reservation, namely with the Traveler email address of the original sell request and the addition of Booking.com or Expedia booking information. The Sync message attempts to add the reservation information into a Travelport PNR as a standard aggregator segment without re-selling the segment in the aggregator system.
Booking.com and Expedia require the traveler’s email address in a hotel sell request. If the sell completes within the Booking.com/Expedia system, the traveler receives a confirmation email containing information needed to synchronize the Travelport PNR if the user receives one of two specific error messages on the original sell attempt. See Sell Failure discussion below for error message explanation and proper sync message handling.
Sell failures
Error returned: Hotel sell unconfirmed from supplier. Check for confirmation email from supplier. Use SYNC message with confirmation number to complete PNR.
Action: Check with Traveler to determine if email received. In this case, Traveler will not receive an email confirmation. No further action is required.
Neither the aggregator system (Booking.com/Expedia) nor Travelport has a record of a reservation for the attempted hotel segment sell request. In this case, the aggregator system (Booking.com/Expedia) did not send a confirmation email message. When that occurs, there was no completed sell and the user does not have to follow any synchronization process. The key is no confirmation email message received.
Action |
Original Create or Add message |
Sync message |
---|---|---|
Confirmation email sent |
No |
N/A |
Credit card charged |
No |
N/A |
Commission generated |
No |
N/A |
Commission tracked (Booking.com) |
N/A |
N/A |
Commission tracked (Expedia) |
N/A |
N/A |
Agency activity segment information tracked by Travelport |
No |
N/A |
Error returned: Hotel sell unconfirmed from supplier. Check for confirmation email from supplier. Use SYNC message with confirmation number to complete PNR.
Action: Check with Traveler to determine if email received. In this case, Traveler will receive an email confirmation. Using the confirmation number in the Traveler’s email, complete the SYNC message to properly construct the segment within the PNR.
The aggregator system (Booking.com/Expedia) booked the hotel reservation but did not return the response to Travelport within the message time limit. The aggregator system has a record of the reservation, but Travelport does not. In this case, the aggregator system (Booking.com/Expedia) did send a confirmation email message. The confirmation information used in the Receipt object of the Sync message must be retrieved from the traveler’s email confirmation message.
Solution Option 1: To synchronize the Travelport system to the aggregator system, use the Sync request message. This will not create a duplicate sold segment with the aggregator, but will create an aggregator segment within a PNR at Travelport. Once the PNR update is completed, all other Reservation messages (Modify, Cancel, Add, Retrieve) will work as normal.
Action |
Original Create or Add message |
Sync message |
---|---|---|
Confirmation email sent |
Yes |
N/A |
Credit card charged |
Yes |
N/A |
Commission generated |
Yes |
N/A |
Commission tracked (Booking.com) |
Yes |
N/A |
Commission tracked (Expedia) |
No |
Yes |
Agency activity segment information tracked by Travelport |
No |
Yes |
Solution Option 2: To cancel the hotel booking within the aggregator system, use the confirmation information in the confirmation email to access the booking within the aggregator reservation system. After the cancellation is completed, all systems are again in sync. A new Create or Add Reservation request can be initiated to begin the booking process again.
Action |
Original Create or Add message |
Cancel with aggregator |
---|---|---|
Confirmation email sent |
Yes |
Cancel notification sent |
Credit card charged |
Yes |
Charge canceled |
Commission generated |
Yes |
Commission canceled |
Commission tracked (Booking.com) |
Yes |
Commission canceled |
Commission tracked (Expedia) |
No |
N/A |
Agency activity segment information tracked by Travelport |
No |
N/A |
Solution Option 3: No action taken. A valid reservation in aggregator system (Booking.com/Expedia) exists. Traveler uses confirmation email for all reservation details.
Action |
Original Create or Add message |
Ramifications |
---|---|---|
Confirmation email sent |
Yes |
Yes |
Credit card charged |
Yes |
Yes |
Commission generated |
Yes |
Yes |
Commission tracked (Booking.com) |
Yes |
Yes, if user is associated with ONYX reporting. |
Commission tracked (Expedia) |
No |
No |
Agency activity segment information tracked by Travelport |
No |
No |
Error returned: Hotel sell confirmed from supplier. Travelport PNR processing did not complete. Use SYNC message with confirmation number to complete PNR.
Action: Using the confirmation number returned in the sell response, complete the SYNC message to properly construct the segment within the PNR.
The aggregator system (Booking.com/Expedia) booked the hotel reservation but Travelport did not process the response correctly. The aggregator system has a record of the reservation, but Travelport does not. In this case, Travelport will return the aggregator segment information in the Create or Add response (Receipt object), but no Travelport PNR locator.
Solution Option 1: To synchronize the Travelport system to the aggregator system, use the Sync request message. This will not create a duplicate sold segment with the aggregator, but will create an aggregator segment within a PNR at Travelport. Once the PNR update is completed, the other Reservation messages (Modify, Cancel, Add, Retrieve) will work as normal.
Action |
Original Create or Add message |
Sync message |
---|---|---|
Confirmation email sent |
Yes |
N/A |
Credit card charged |
Yes |
N/A |
Commission generated |
Yes |
N/A |
Commission tracked (Booking.com) |
Yes |
N/A |
Commission tracked (Expedia) |
No |
N/A |
Agency activity segment information tracked by Travelport |
No |
Yes |
Solution Option 2: To cancel the hotel booking within the aggregator system, use the confirmation information in the Create or Add response to access the booking within the aggregator reservation system. After the cancelation is completed, all systems are again in sync. A new Create or Add Reservation request can be initiated to begin the booking process again.
Action |
Original Create or Add message |
Cancel with aggregator |
---|---|---|
Confirmation email sent |
Yes |
Cancel notification sent |
Credit card charged |
Yes |
Charge canceled |
Commission generated |
Yes |
Commission canceled |
Commission tracked (Booking.com) |
Yes |
Commission canceled |
Commission tracked (Expedia) |
No |
N/A |
Agency activity segment information tracked by Travelport |
No |
N/A |
Solution Option 3: No action taken. A valid reservation in aggregator system (Booking.com/Expedia) exists. Traveler uses confirmation email for all reservation details.
Action |
Original Create or Add message |
Ramifications |
---|---|---|
Confirmation email sent |
Yes |
Yes |
Credit card charged |
Yes |
Yes |
Commission generated |
Yes |
Yes |
Commission tracked (Booking.com) |
Yes |
Yes, if user is associated with ONYX reporting. |
Commission tracked (Expedia) |
No |
No |
Agency activity segment information tracked by Travelport |
No |
No |
Request
Also see Authorization and Common Headers.
Query Parameters
None.
Request Body
Object |
Description |
Required/Optional |
---|---|---|
ReservationDetail |
Top level object for the request. Includes the Offer, Traveler, and Receipt objects. |
Required |
Offer object
Object |
Description |
Required/Optional |
---|---|---|
Offer |
Top level object for sync request. Includes the Identifier object. |
Required |
|
Indicates aggregator segment built into PNR. Always set to true. |
Required |
Identifier |
Top level object for room rate source. |
Required |
|
String. Send the value from CatalogOffering/Identifier/authority in the Availability response. |
Required |
Traveler object
Object |
Description |
Required/Optional |
---|---|---|
Traveler |
Traveler details. Includes PersonName, Telephone, Email, and CustomerLoyalty objects. |
Required |
PersonName |
Traveler details. Travelport+ limits the combination of Given and Surname to 22 characters. Given name must have at least one character. PersonName exceeding 22 characters is truncated in the response.
|
Required |
|
String. Traveler first name. |
Required |
|
String. Traveler last name. |
Required |
|
String. Salutation of honorific (e.g. Mr., Mrs., Ms., Miss, Dr.) |
Optional |
Telephone |
Traveler telephone details. |
Required |
|
String. Phone country code. |
Optional |
|
String. Phone number. |
Required |
|
String. Phone local area code. |
Required |
|
String. Phone city code. |
Optional |
|
Traveler email address. Booking.com and Expedia require a traveler email address in the Create Reservation and Add Reservation requests. Both systems send a confirmation email to the traveler moments after the booking completes.
|
Required for certain suppliers |
|
String. Traveler email address. |
Required |
CustomerLoyalty |
One frequent guest number and / or one frequent flyer number. |
Optional |
|
String. Two character hotel or air supplier code or brand code of the loyalty program. |
Required if object used. |
|
String. Number on loyalty card. |
Required if object used. |
|
String. “hotel” for designating frequent guest or “air” for designating frequent flyer. |
Required if object used. |
Receipt object
Object |
Description |
Required/Optional |
---|---|---|
Receipt |
Mandatory top level object for confirmation details. Includes Confirmation object. |
Required |
Confirmation |
Confirmation details. Includes Locator object. |
Required |
Locator |
Locator information for the reservation. |
Required |
|
String. Content source. Two-character Supplier code. If source matches chain code, the offer is directly with the supplier. If source is XZ, the offer is with Expedia. If source is BO, the offer is with Booking.com. |
Required |
|
String. Either Travelport or Supplier. |
Required |
|
String. Reference number for locatorType. Booking.com returns a PIN number along with the confirmation number for each sold hotel segment. If the agent/traveler needs to reconcile the booking with Booking.com, both the PIN number and confirmation number are needed for Booking.com to locate the segment in their system.
|
Required |
Response
The response for the Sync request is a smaller version of the response for the Create reference payload request. All available information for the reservation will be returned.
See the Create Reservation Reference Payload API Reference for the response table and examples.
Example Request
{
"ReservationDetail": {
"Offer": [
{
"Identifier": {
"authority": "EXPE"
},
"passiveOfferInd": true
}
],
"Receipt": [
{
"@type": "ReceiptConfirmation",
"Confirmation": {
"@type": "ConfirmationHold",
"Locator": {
"locatorType": "Confirmation Number",
"source": "XZ",
"sourceContext": "Supplier",
"value": "7555249349974"
}
}
}
],
"Traveler": [
{
"@type": "Traveler",
"Email": [
{
"value": test@travelport.com
}
]
}
]
}
}
Example Response
{
"ReservationResponse": {
"Reservation": {
"@type": "ReservationDetail",
"id": "f1ecd79d-198c-4fe3-ae91-a9ca9cd10637",
"Offer": [
{
"@type": "Offer",
"Identifier": {
"authority": "BKNG"
},
"Product": [
{
"@type": "ProductHospitality",
"Quantity": 1,
"bookingCode": "147245306_307884210_1_1_0",
"guests": 1,
"PropertyKey": {
"chainCode": "CN",
"propertyCode": "B6381"
},
"DateRange": {
"start": "2022-02-22",
"end": "2022-02-25"
}
}
],
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"value": "USD",
"decimalPlace": 2
},
"TotalPrice": 150,
"TotalTaxes": 50,
"TotalFees": 30,
"Base": 100,
"PriceBreakdown": [
{
"@type": "PriceBreakdownHospitality",
"roomPricingType": "Per night",
"NightlyRate": [
{
"startDate": "2022-02-22",
"nights": 1,
"Amount": {
"CurrencyCode": {
"value": "USD"
},
"Base": 40,
"Total": 60,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 20,
"Tax": [
{
"currencyCode": "USD",
"taxCode": "CITYTAX",
"Description": "Tax and Service fee",
"includedInBase": "No",
"value": 16
},
{
"currencyCode": "USD",
"taxCode": "VAT",
"Description": "VAT",
"includedInBase": "No",
"value": 4
}
]
}
}
},
{
"startDate": "2022-02-23",
"nights": 3,
"Amount": {
"CurrencyCode": {
"value": "USD"
},
"Base": 60,
"Total": 90,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 30,
"Tax": [
{
"currencyCode": "USD",
"taxCode": "CITYTAX",
"Description": "Tax and Service fee",
"includedInBase": "No",
"value": 24
},
{
"currencyCode": "USD",
"taxCode": "VAT",
"Description": "VAT",
"includedInBase": "No",
"value": 6
}
]
}
}
},
{
"startDate": "2022-02-26",
"nights": 1,
"Amount": {
"CurrencyCode": {
"value": "USD"
},
"Base": 60,
"Total": 90,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 30,
"Tax": [
{
"currencyCode": "USD",
"taxCode": "CITYTAX",
"Description": "Tax and Service fee",
"includedInBase": "No",
"value": 24
},
{
"currencyCode": "USD",
"taxCode": "VAT",
"Description": "VAT",
"includedInBase": "No",
"value": 6
}
]
}
}
}
],
"AverageNightlyRate": [
{
"code": "USD",
"value": 50,
"approximateInd": true
}
],
"AmenitySurcharges": {
"@type": "AmenitySurchargesDetail",
"Surcharge": [
{
"currencyCode": "USD",
"description": "Crib Surcharge",
"value": 0
},
{
"currencyCode": "USD",
"description": "Rollaway Surcharge",
"value": 25
}
]
}
},
{
"@type": "PriceBreakdownHospitality",
"roomPricingType": "Per stay",
"Amount": {
"CurrencyCode": {
"value": "USD"
},
"Base": 100,
"Total": 150,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 50,
"Tax": [
{
"currencyCode": "USD",
"taxCode": "CITYTAX",
"Description": "Tax and Service fee",
"includedInBase": "No",
"value": 40
},
{
"currencyCode": "USD",
"taxCode": "VAT",
"Description": "VAT",
"includedInBase": "No",
"value": 10
}
]
},
"Fees": {
"@type": "FeesDetail",
"TotalFees": 30,
"Fee": [
{
"feeCode": "RESORT",
"feeApplication": "PerAccommodation",
"feeFrequency": "PerStay",
"FeeAmountOrPercent": {
"Amount": {
"code": "USD",
"value": 15
}
}
}
]
},
"Commission": {
"@type": "CommissionAmount",
"application": "Non-paying "
}
}
}
]
},
"TermsAndConditionsFull": [
{
"@type": "TermsAndConditionsFullHospitality",
"Guarantee": [
{
"GuaranteeType": "PrepayRequired"
}
],
"CancelPenalty": [
{
"Deadline": {
"SpecificDate": {
"start": "2022-01-19",
"end": "2022-02-14"
},
"Time": "23:59:59.000"
},
"HotelPenalty": {
"@type": "HotelPenaltyAmount",
"Amount": [
{
"value": 0,
"code": "INR"
}
]
},
"Refundable": "Yes"
},
{
"Deadline": {
"SpecificDate": {
"start": "2022-02-15",
"end": "9999-12-31"
},
"Time": "23:59:59.000"
},
"HotelPenalty": {
"@type": "HotelPenaltyAmount",
"Amount": [
{
"value": 9000,
"code": "INR"
}
]
}
}
]
}
]
}
],
"Traveler": [
{
"@type": "Traveler",
"id": "T1",
"PersonName": {
"Given": "John",
"Surname": "Smith"
},
"Telephone": [
{
"countryAccessCode": "1",
"areaCityCode": "909",
"phoneNumber": "1231234",
"cityCode": "DEN"
}
],
"Email": [
{
"value": smith@example.com
}
]
}
],
"TravelerProduct": [
{
"@type": "TravelerProduct",
"TravelerRef": "T1",
"OfferRef": "O1"
}
],
"Receipt": [
{
"@type": "ReceiptConfirmation",
"OfferRef": [
"O1"
],
"Confirmation": {
"@type": "ConfirmationHold",
"confirmationStatus": {
"@type": "OfferStatusHospitality",
"Status": "Confirmed"
},
"Locator": {
"value": "T9RY0-WQ842",
"locatorType": "Confirmation Number",
"source": "BO",
"sourceContext": "Supplier"
},
"OfferStatus": {
"@type": "OfferStatusHospitality",
"Status": "Confirmed"
}
}
},
{
"@type": "ReceiptConfirmation",
"OfferRef": [
"O1"
],
"Confirmation": {
"@type": "ConfirmationHold",
"Locator": {
"value": "4619",
"locatorType": "Pin code",
"source": "BO",
"sourceContext": "Supplier"
},
"OfferStatus": {
"@type": "OfferStatusHospitality",
"Status": "Confirmed"
}
}
},
{
"@type": "ReceiptConfirmation",
"Confirmation": {
"@type": "ConfirmationHold",
"confirmationStatus": {
"@type": "OfferStatusHospitality",
"Status": "Confirmed"
},
"Locator": {
"value": "0GQ9HS",
"sourceContext": "Travelport"
},
"OfferStatus": {
"@type": "OfferStatusHospitality",
"Status": "Confirmed"
}
}
}
]
}
}
}
Error Messages
Error messages for Hotel Sync API.
SourceCode | StatusCode (HTTP code) | Message |
---|---|---|
|
400 |
Hotel sell unconfirmed from supplier. Check for confirmation email from supplier. Use SYNC message with confirmation number to complete PNR. |
|
400 |
Hotel sell confirmed from supplier. Travelport PNR processing did not complete. Use SYNC message with confirmation number to complete PNR. |