Check the Hotel Release Notes for updates across all Hotel APIs.

Create Reservation Full Payload API Reference

POST

book/reservations/build

Use this base path if you have not yet received or not migrated to the new credentials from Travelport:

Pre-production https://api.pp.travelport.com/11/hotel/ | Production https://api.travelport.com/11/hotel/

Use this base path after you have migrated to the new credentials from Travelport (using .net instead of .com):

Pre-production https://api.pp.travelport.net/11/hotel/ | Production https://api.travelport.net/11/hotel/

Related Content: JSON Hotel APIs Guide, Hotel Workflows, Hotel Availability API Reference, SearchComplete API Reference

Use the Create Reservation full payload request to book a room by sending complete stay details and the booking code from the Availability response, along with traveler, form of payment, and payment information. Alternately, you can use the Create Reservation reference payload request to send a shorter payload that includes an offer identifier from the Availability response, or from a SearchComplete response.

Multi-room sell requests

When making a reservation, Travelport attempts to sell the number of rooms requested, but the supplier may not be able to accommodate the total number of rooms. Each room sold creates a unique hotel segment on the Travelport reservation. A traveler name will be associated with each room with these limitations:

  • If the number of rooms requested is equal to the number of traveler names in the request, each room is associated with a unique traveler name.

  • If the number of rooms requested is not equal to the number of traveler names in the request, all rooms are associated with the first traveler name.


Request

As part of the request requirements, also see Authentication and Common Hotel API Headers.

Query Parameters

All Hotel APIs that create a new reservation or add a segment to an existing reservation verify the reservation request with the guarantee type and price returned in the preceding Availability or SearchComplete response. If there is any difference, the API does not yet create the reservation but instead returns an error notifying you of the change. To accept the change, send the request a second time with the appropriate query parameter/s below. Do not send either of these query parameters in the first reservation request.

If you do not want to proceed with the booking because of the changes, sending a second booking request is not necessary, however, you can simply start a new booking and let these offers expire.

Object Description

acceptPriceChangeInd

Boolean. Behaviors are as follows:

true: Accepts any difference in the current sell price from the total price returned in the Availability response.

false: Terminates the sell process without making a reservation. Default if not sent is false.

acceptGuaranteeChangeInd

Boolean. Behaviors are as follows:

true: Accepts any difference in the guarantee type from the guarantee type returned in the Availability response. Guarantee types checked for differences are guarantee required, deposit required, prepay required.

false: Terminates the sell process without making a reservation. Default if not sent is false.

Request Body

For additional examples, download the developer toolkits and see Using Postman and Developer Toolkits.
The red asterisk at the end of an object name below, as in Traveler*, marks that object as required in the request.

ReservationDetail*

Top level object for the request.

May include the Offer, Traveler, FormOfPayment, Payment, and ReservationComment objects.


Offer object

Offer*

Top level object for reservation details.

May include Identifier, Product, Price, and TermsAndConditionsFull.


Identifier*

Top level object for room rate source.

authority*: String. Send the value from the Availability response in CatalogOffering/Identifier/authority for the instance you want to book.


Product*

Array. Details about the property, dates, and number of guests.

Includes PropertyKey and DateRange; may include GuestCounts.

bookingCode*: String. Send the value from ProductOptions/ProductBooking in the Availability response for the offer (aka rate) to book.

guests*: String. Total number of guests. Numeric values 1-9 inclusive supported.

Quantity: Number. The number of rooms requested; 1-9 inclusive supported. If not provided, default quantity is 1.


GuestCounts* if children are part of the request.

Top level object.

Includes GuestCount object.


GuestCount* if children are part of the request.

Array of qualifying codes and ages.

count* if using GuestCount object: Number. Number of travelers.

ageQualifyingCode* if using GuestCount object: String. Required only for children or if traveler age is relevant, such as for a senior discount.

Supported values and meanings:

  • 10: Traveler in this GuestCount is an adult

  • 8: Traveler in this GuestCount is a child

age* for the children in the request: String. Age of traveler. Required only when request includes a child in room.


DateRange*

Reservation date range.

start*: String. Check-in date in YYYY-MM-DD format.

end*: String. Check-out date in YYYY-MM-DD format.

specific* if not sending start and end date pair: String. Same day check-in and -out date in YYYY-MM-DD format.

Send specific only when a check-in and check-out both happen on the same day.

PropertyKey*

Property ID information.

chainCode*: String. Two-character chain code to book.

propertyCode*: String. Property code of the property within the hotel chain.


Price*

Top level object for price details.

Includes CurrencyCode, Base, TotalTaxes, and TotalPrice.

Find the values to send in the Price objects as follows from either Availability or Rules:

  • Availability: Send the values returned in CatalogOffering/Price of the offer to book

  • Rules: Send the value returned in Offer/Price

Although you can send the price returned in either API, the Rules pricing may be more accurate. If you sent a Rules request, send the value from that response.

CurrencyCode*

Top level object.

value*: String. Three-character currency code for the offer as returned in either the Availability or Rules response.


Base*

Number. Send the Base price amount for the offer as returned in either the Availability or Rules response.


TotalTaxes*

Number. Send the TotalTaxes amount for the offer as returned in either the Availability or Rules response.


TotalPrice*

Number. Sends the TotalPrice amount for the offer as returned in either the Availability or Rules response.


TermsAndConditionsFull* when returned in the Availability response.

Terms and conditions top level object.

Includes the ProductRateCodeInfo object.


ProductRateCodeInfo* when returned in the Availability response.

Top level object for information associated with any negotiated rate plan code for the offer to book, if a rate code was returned for that offer in the Availability response.

Includes RateCodeInfo.


RateCodeInfo* when returned in the Availability response.

Rate code details from the Availability response as follows:

value* when returned in the Availability response. String. Send the value from ProductRateCodeInfo/RateCodeInfo/value

rateID* when returned in the Availability response String. Send the value from ProductRateCodeInfo/RateCodeInfo/rateID

rateCategory: String. Send the value from ProductRateCodeInfo/RateCodeInfo/rateCategory

rateName: String. Send the value from ProductRateCodeInfo/RateCodeInfo/rateName


Traveler object

Traveler*

Traveler details.

Includes PersonName, Telephone, Email, and CustomerLoyalty objects.


PersonName*

Traveler details.

Given*: String. Traveler first name.

Surname*: String. Traveler last name.

Prefix: String. Salutation of honorific (e.g. Mr., Mrs., Ms., Miss, Dr.)

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.

Telephone*

Traveler telephone details.

countryAccessCode: String. Phone country code.

phoneNumber*: String. Phone number.

areaCityCode*: String. Phone local area code.

cityCode: String. Phone city code.


Email* for certain suppliers

Traveler email address.

value*: String. Traveler email address.

Booking.com requires a traveler email address in the Create Reservation and Add Reservation requests. A system-generated confirmation email is sent to the traveler after the booking completes.

CustomerLoyalty

One frequent guest number and / or one frequent flyer number.

programId* if object used: String. Two character hotel or air supplier code or brand code of the loyalty program.

value* if object used: String. Number on loyalty card.

supplierType* if object used: String. “hotel” for designating frequent guest or “air” for designating frequent flyer.


FormOfPayment object

FormOfPayment*

Top level object for form of payment details. Includes PaymentCard object.


PaymentCard*

Form of payment details.

expireDate*: String. Credit card expiration date in MMYY format.

CardType*: String. Type of card including Credit, Debit, and Gift.

CardCode* : String. Code for credit card type.

CardHolderName*: String. Name on credit card.

Includes CardNumber, SeriesCode, Telephone, and Address objects.


CardNumber*

Card number details.

PlainText*: String. Credit card number.


SeriesCode

Security code of card.

PlainText* for certain suppliers: String. The credit card three- or four-digit CVV code.

Booking.com requires the CVV code.

Telephone

Telephone information associated with card.

countryAccessCode: String. Phone country code.

phoneNumber: String. Phone number.

areaCityCode: String. Phone local area code.

cityCode: String. Agency city code.


Address

Billing address details. Includes Number, Street, AddressLine, City, StateProv, Country, and PostalCode objects.


Number

Top level object for street number of billing address.

value: String. Street number value.


Street

String. Street name.


AddressLine

String. Address number and street name.


City

String. The city of the billing address.


County

String. The county of the billing address.


StateProv

Top level state or province object.

value: String. State or province of billing address.

name: String. Full state or province name.


Country

Country of billing address.

Value: String. Standard two-letter coded value for country.

Id: String. Custom user-assigned identifier for the country.

Name: String. Full country name.

codeContext: String. Organization that provided the Id number.


PostalCode

String. Postal code of billing address.


Email

Billing email address.

value: String. Billing email address.


Payment, TravelAgency objects

Payment*

Top level object for payment details.

The Payment object explicitly denotes the amount expected to be charged for the hotel reservation as follows:

  • For Prepay Required rates, the full total amount is used. This amount will be charged to the credit card on this transaction. Indicators should be set as: depositInd = true; guaranteeInd = false.

  • For Deposit Required rates, the deposit amount is used. This amount will be charged to the credit card on this transaction. Indicators should be set as: depositInd = true; guaranteeInd = false.

  • For Guarantee Required rates, the full total amount is used. This amount is expected to be charged to the credit card at check in. Indicators should be set as: depositInd = false; guaranteeInd = true.

id: String. Customer-assigned identifier for the payment.

PaymentRef: String. Customer-assigned name for the payment.

depositInd*: Boolean (true/false). If set to true, user expects credit card to be charged to support deposit or prepay rate.

guaranteeInd*: Boolean (true/false). If set to true, user expects payment due at check in at the hotel.

Includes Amount object.


Amount*

Amount of payment.

code*: String. Currency code.

value*: String. Amount to pay.


TravelAgency

Optional top level object for travel agency information. Includes AgencyPCC and Telephone objects.


AgencyPCC

Top level object.

agencyCode: String. Agency PCC code.


Telephone

Top level object for agency telephone information.

phoneNumber: String. Agency telephone number.

areaCityCode: String. Agency phone local area code.

phoneUseType: String. Agency code for how phone is used. (e.g., Home, Business, Emergency Contact, Travel Arranger, Day, Evening)

cityCode: String. Agency city code.


ReservationComment (optional)

Create Reservation supports the following types of remarks:

  • Notepad remarks (general, historical, and confidential)

  • Unassociated remarks

  • Special Instruction remarks

  • Accounting remarks

The following objects noted as required are required only if ReservationComment is sent.

ReservationComment

Optional top level object for remarks. Includes Comment object.

commentSource*: Originator of comment. Supported value is Agency.

shareWith*: Designates visibility of remark. Send the following for each type of remark:

  • Notepad remarks: Agency

  • Unassociated remarks: Traveler

    Special instructions: Supplier


Comment*

Array of name/value pairs.

name*: Type of remark. Send the following for each type of remark:

  • Notepad remarks: Two-character code. Use asterisk for any placeholder. (HS, CR, R*, **)

  • Unassociated remarks: ITIN COMMENTS

  • Special instruction remarks: SI

value*: String. Remark text. Character limits for each type of remark:

  • Notepad remarks: 87

  • Unassociated remarks: 70

  • Special instruction remarks: 50


Accounting

Optional top level object used for all DOCI remarks.

dataType*: Accounting remark designator. Accepted value: DOCI.

Includes NameValuePair object.


NameValuePair*

Array of name/value pairs.

name* : Type of remark. Supported values and meanings:

DYO Design Your Own Itinerary
FS Fare Saver
CR Canned Remarks
TK Ticket Number Details
AC Agent, Account, or Branch Details
AR Replace Sign On Code
X* Back Office Accounting Details
FT Free Text

value*: String. Text to pair with name values above. Note the following character limits for each name value:

DYO 2 digit, numeric
FS 9 characters total limit in format 1 (all numeric) or format 2 (numeric “–“ two alpha)
CR 42 characters total limit in format (two numeric “.” two numeric “.” etc)
TK 8 to 12 characters in format 1 (all numeric) or format 2 (numeric “-“ three numeric)
AC 42 characters, alphanumeric and some special characters
AR 10 characters, alphanumeric
X* 84 characters, alphanumeric and some special characters
FT 84 characters, alphanumeric and some special characters

 

Example

{
 "ReservationDetail": {
  "Offer": [
   {
    "@type": "Offer",
    "Identifier": {
     "authority": "TVPT"
    },
    "Product": [
     {
      "@type": "ProductHospitality",
      "bookingCode": "A03A0Q",
      "Quantity": "1",
      "guests": 1,
      "PropertyKey": {
       "@type": "PropertyKey",
       "propertyCode": "99461",
       "chainCode": "HL"
      },
      "DateRange": {
       "start": "2025-10-16",
       "end": "2025-10-17"
      }
     }
    ],
    "Price": {
     "@type": "PriceDetail",
     "CurrencyCode": {
      "value": "EUR"
     },
     "Base": 897.25,
     "TotalTaxes": 152.56,
     "TotalPrice": 765
    }
   }
  ],
  "Payment": [
   {
    "@type": "Payment",
    "Amount": {
     "code": "USD",
     "value": 122.13
    },
    "guaranteeInd": true,
    "depositInd": false
   }
  ],
  "FormOfPayment": [
   {
    "@type": "FormOfPaymentPaymentCard",
    "PaymentCard": {
     "@type": "PaymentCardDetail",
     "expireDate": "0825",
     "CardType": "Credit",
     "CardCode": "VI",
     "CardHolderName": "Frank Sinatra",
     "CardNumber": {
      "@type": "CardNumber",
      "PlainText": "4111111111111111"
     },
     "SeriesCode": {
      "@type": "SeriesCode",
      "PlainText": "123"
     },
     "Address": {
      "@type": "AddressDetail",
      "AddressLine": [
       "125 Billing Address Street"
      ],
      "City": "Claremont",
      "StateProv": {
       "value": "CA"
      },
      "Country": {
       "value": "US"
      },
      "PostalCode": "91711-3323"
     },
     "Telephone": [
      {
       "@type": "TelephoneDetail",
       "countryAccessCode": "1",
       "areaCityCode": "909",
       "phoneNumber": "1231234"
      }
     ]
    }
   }
  ],
  "Traveler": [
   {
    "@type": "Traveler",
    "PersonName": {
     "@type": "PersonName",
     "Given": "Sainik",
     "Surname": "Das"
    },
    "Telephone": [
     {
      "@type": "TelephoneDetail",
      "countryAccessCode": "91",
      "phoneNumber": "9891766469"
     }
    ],
    "Email": [
     {
      "value": "matt.singh@nope.com"
     }
    ]
   }
  ]
 }
}

 

 

 


Response

The Create Reservation Full Payload response uses the same format as the reference payload response. The only difference is that the reference payload response returns Reservation/id, which is the offer ID sent in that request. The full payload response does not return this information. See the Create Reservation Reference Payload API Reference for documentation.