Booking Format

The full booking format is documented below. Please pay special attention to which fields are required to be implemented.

Most fields are optional. This specification lists only the minimum required
fields to be eligible for a successful Build-To-Us integration.

Prices: Send us sell rates (rates including taxes and fees). The sum of all
room prices should equal the TotalPrice field. Day rates should be per
unit, so the sum of all day rates multiplied by the number of units should
equal the room price.

Country codes: For CustomerCountry and CustomerNationality (if you include
those fields) make sure to pass the country code as uppercase Alpha-2
ISO-3166 codes.

Currency codes: Make sure they are valid ISO-4217 (uppercase).

Make sure to provide OrderDate and OrderTime. They have to be provided in
UTC.

Guest's credit/debit card details can be provided with the Payments field.

Implementation suggestions: when testing make sure the Cloudbeds test
property has "download bookings" enabled on the Cloudbeds channel manager or
the booking will be saved in a
queue and not visible during testing. To enable login and go to MANAGE /
General Details / Download new bookings from channels. Default setting
is "Off". Once enabled please allow 30 minutes for the backend to start
processing bookings. Also there may be a normal 1-2 minute period after a
GetBookingId response before the booking is visible in
the Cloudbeds channel manager UI (the bookings are held in a temporary queue
on our backend).

Root elements

FieldRequiredTypeDescription
CustomersYesCustomer[]See below in the Customer section
IsCancellationYesEnum(0,1)1 if booking is cancelled.
IsModificationYesEnum(0,1)1 if booking is modified.
OrderAdultsYesInt >= 0Total number of unique adults. Adult age threshold is defined by the channel. Should equal sum of Adults in each room if this breakdown is given.
OrderChildrenYesInt >= 0Total number of unique children or babies. Child/baby age threshold is defined by the channel. Should equal sum of Children plus Babies in each room if this breakdown is given.
OrderCustomersYesInt >= 0Total number of unique customers. Should equal sum of Occupancy in each room if this breakdown is given. Should also equal the sum of OrderAdults and OrderChildren if those fields are present.
OrderDateYesYYYY-MM-DDDate of booking creation, in UTC (not date when modified!).
OrderIdYesStringUnique booking ID on your channel. Maximum of 64 characters.
OrderModifDateYes*YYYY-MM-DDDate of booking modification, in UTC. *Do not pass if booking has not been modified.
OrderModifTimeYes*HH:MM:SSTime of booking modification, in UTC. *Do not pass if booking has not been modified. If seconds are not provided, set value to ":00".
OrderTimeYesHH:MM:SSTime of booking creation, in UTC. If seconds are not provided, set value to ":00". Presence of OrderTime requires presence of OrderDate.
PaymentCollectYesEnum('Property', 'Channel')Who collects outstanding balance from the guest? Property means that the property takes the payment, either by charging the credit card, or on arrival. Channel means that the channel will take the payment, and the property is paid by the channel. Do not set this to Channel if you are only collecting the commission/deposit.
RoomsYesRoom[]See below in the Room section
TotalCurrencyYesCurrencyCodeCurrency code for the TotalPrice field.
TotalPriceYesCurrencyTotal price of the booking, including taxes, commission and deposit, after discounts. It should reflect the price the guest will have to pay in total (or has already paid).
NetTotalPriceCurrencyTotal price of the booking less commission, including taxes. Equals TotalPrice - Commission.
NetTotalCurrencyCurrencyCodeCurrency code for the NetTotalPrice field. Required if NetTotalPrice is present.
BalanceCurrencyThe outstanding amount to be paid by the customer. This should be the same as TotalPrice - Deposit.
BalanceCurrencyCurrencyCodeCurrency code for the Balance field. Required if Balance is present.
DiscountsDiscount[]See below in the Discount section
CancellationFeeCurrencyThe total amount of cancellation fees a guest has to pay because the cancellation was out of the cancellation policy.
CancellationFeeCurrencyCurrencyCodeCurrency code for the CancellationFee field. Always provide if CancellationFee is present.
CancellationIdStringCancellation ID provided by the channel.
CancellationReasonStringOnly provide when IsCancellation = 1. Reason given by property or guest as to why booking was cancelled.
GuestNoShowBooleanOnly present when IsCancellation = true and if a guest is reported as not showing up.
CommissionCurrencyAmount of commission on the booking, included in the TotalPrice. Commission is an absolute amount of currency to be paid to the channel. This field does not indicate whether the commission is already paid or not.
CommissionCurrencyCurrencyCodeCurrency code for the Commission field. Required if Commission is present.
CommissionPercentageFloatPercentage of commission on the booking.
CommissionableAmountCurrencyAmount of commissionable revenue. The percentage defined in CommissionPercentage is applied to CommissionableAmount to calculate the final commission Commission.
CustomerAssociationsCustomerAssociation[]See below in the CustomerAssociation section
DepositCurrencyAmount of deposit this booking has already received. Included in TotalPrice
DepositCurrencyCurrencyCodeCurrency code for the Deposit field. Required if Deposit is present.
DepositTypeEnum(...)Possible deposit types are: ota, vcc, manual, cc, bank_transfer, voucher, directbill
ExternalReferencesExternalReference[]See below in the ExternalReference section
MessageThreadIdStringSome channels provide communication between host and guest in the form of message threads. A reservation-associated message thread ID can be stored here.
ExtraServicesExtraService[]See below in the ExtraService section
ExtraTaxesExtraTax[]See below in the ExtraTax section
IsTentativeEnum(0,1)1 if the booking is not yet confirmed and availability should not yet be reduced. This can apply to booking enquiries where the property owner needs to confirm the booking first.
LoyaltiesLoyalty[]See below in the Loyalty section
MembershipsMembership[]See below in the Membership section
OrderFemalesInt >= 0Total number of unique female guests.
OrderMalesInt >= 0Total number of unique male guests.
OrderPetsInt >= 0Number of pets (animals) the guest will bring.
OrderSourceStringOriginating source of guest booking, usually a website. For example, Expedia passes bookings from multiple websites (hotels.com, Travelocity, Orbtiz, etc.). May also refer to travel agent/agency who created the booking. Do NOT provide this field if the value is the same as your channel name. This field is informational only.
OrderSourceIdStringThis field is used by build-to-us channel brokers (channels that pass us reservations made on one of their partner channels). This field should contain the channel ID you use to identify the third party or the Cloudbeds Channel Manager channel ID (e.g., exp for Expedia). If you plan to use your channel's third-party channel ids, please provide us with your list of identifiers and their associated channel names so we can internalize them. Cloudbeds will use or translate this to an internal ID so that the end user knows the reservation origin source. For example, if OrderSource is Expedia, then OrderSourceId is the ID used by your channel (or ours) to identify Expedia. To use Cloudbeds' channel IDs directly please use Build-To-Us API ChannelList call to get the current list of all available channels. Important: It is required to use the ExternalReferences section to provide us with the corresponding reservation origin OrderId when brokering reservations. Make sure Type is set to OTA.
PaymentsPayment[]See below in the Payment section
PaymentTransactionsPaymentTransaction[]See below in the PaymentTransaction section
PolicyStringTerms and conditions that apply to this booking. For example it could contain the cancellation terms.
SourceTreeSourceTree[]A list of reservation sources for brokered reservations. This list always includes an intermediary, such as a channel, CRS, or GDS, and can contain a guest-facing entity, such as a travel agency or rewards program. See more below in SourceTree section
TaxBreakdownTaxBreakdown[]See below in the TaxBreakdown section
TotalTaxesCurrencyAmount of taxes for this booking. The amount is included in TotalPrice. If there are different types of taxes applicable to a booking then this is the sum of those taxes.
TotalTaxesCurrencyCurrencyCodeCurrency code for the TotalTaxes field. Required if TotalTaxes is present.
TravelAgenciesTravelAgency[]See below in the TravelAgency section
VouchersVoucher[]See below in the Voucher section

Relation of fields

TotalPrice = Totals of all rooms + extra services + extra taxes - discounts
           = Total of day rates  + extra services + extra taxes - discounts

Balance    = TotalPrice - Deposit

Room

FieldRequiredTypeDescription
AdultsYesInt >= 0Number of adults staying in this room. Adult age threshold is defined by the channel.
BabiesYesInt >= 0Number of babies staying in this room. Baby age threshold is defined by the channel.
ChannelRoomTypeYesStringThe ID of the room on the channel.
ChildrenYesInt >= 0Number of children staying in this room. Child age threshold is defined by the channel.
CurrencyYesCurrencyCodeCurrency code for the Price field. Required if Price is present.
DayRatesYesDayRate[]See below in the DayRate section.
EndDateYesYYYY-MM-DDThe date of the last night of stay (equal to departure date minus one).
OccupancyYesInt >= 0Total number of persons staying in this room, including children and babies. Should be the sum of Adults, Children and Babies if those are present.
PriceYesCurrencyTotal price of the room, for all units and all days, including taxes and fees. Example: stay is for two days and three units and a single night costs €10 (including tax), then Price is 2 3 10 = 60.
RateDescYesStringDescription of the booked rate plan, as provided by the channel.
RateIdYesStringApplicable rate plan ID for this booking. Normally there is only one. If there are multiple, list them comma-separated.
StartDateYesYYYY-MM-DDArrival date of the customer.
UnitsYesInt > 0Number of rooms booked (for private rooms) or number of beds booked (for dorms/shared rooms).
BreakfastEnum(0,1)Whether breakfast was booked.
ExtraServicesExtraService[]See below in the ExtraService section
ExtraTaxesExtraTax[]See below in the ExtraTax section
RoomDescStringDescription of the room, as provided by the channel.
OccupantFNameStringFirst name(s) of the main occupant of this room. If name is not able to be provided separated by first and last name, provide the full name in OccupantLName and omit this field.
OccupantLNameStringLast (family) name or full name of the main occupant of this room.
OccupantNoteStringText provided by the guest at time of booking, intended to be read by the property.
OccupantSmokerEnum(0,1)Whether one of the occupants is a smoker.
PolicyStringText describing the booking conditions, like cancellation conditions.
NonRefundableRateBooleanIndicates whether or not the booked rate is non-refundable.
PromotionDescStringDescribes the promotion applicable to the booked room.

Relation of fields

Price = sum of day rates + room-specific extra taxes

DayRate

DayRates contain as many DayRate objects as the number of nights of the room stay. They need to be sorted by date.

FieldRequiredTypeDescription
CurrencyYesCurrencyCodeCurrency code for the Rate field.
DateYesYYYY-MM-DDDate of day rate.
DescriptionYesStringName or short description of the rate plan booked. Example: "Non-refundable rate" or "10% festival discount".
RateYesCurrencyPrice for this day, including Commission and Tax.
RateAfterTaxCurrencyGross price for this day (what the guest pays), including taxes.
RateBeforeTaxCurrencyGross price for this day (what the guest pays), excluding taxes.
NetRateAfterTaxCurrencyNet price for this day (what the property receives, after channel commission), including taxes.
NetRateBeforeTaxCurrencyNet price for this day (what the property receives, after channel commission), excluding taxes.
RateIdYesStringApplicable channel rate plan ID for this day rate.
CommissionCurrencyAmount of commission included in the Rate.
IsRatePerUnitBooleanWhether the rate is per unit. Defaults to true if not present.
TaxCurrencyAmount of tax included in the Rate.

Relation of fields

The four optional rate fields form a 2×2 matrix over two independent axes —
commission (gross vs net) and tax (before vs after):

                  Before tax          After tax
  Gross (guest)   RateBeforeTax       RateAfterTax
  Net   (hotel)   NetRateBeforeTax    NetRateAfterTax

Net = gross − channel commission. Provide whichever combination the channel
exposes; all four are optional. When both sides of a comparison are present:

RateBeforeTax    <= RateAfterTax
NetRateBeforeTax <= NetRateAfterTax
NetRateBeforeTax <= RateBeforeTax
NetRateAfterTax  <= RateAfterTax

The legacy Rate field is independent of these fields.

Customer

The first entry in the Customers array should refer
to the person that has made the booking, who may not necessarily be the
person staying at the property.

FieldRequiredTypeDescription
CustomerCountryYesISO 3166-1 alpha-2Country code in which the customer resides, corresponding to their address. Value is uppercase.
CustomerEmailYesEmail-AddressEmail address of the customer.
CustomerFNameYesStringFirst name(s) of the customer. If the name is not stored separated by first and last name, provide full name in CustomerLName.
CustomerLNameYesStringLast (family) name or full name of the customer.
CustomerAddressStringAddress of the customer. This usually refers to the street name and house number, apartment name or similar. Multiple address lines should be comma-separated (not with newlines).
CustomerAgeInt >= 0Customer age at the time of booking. Use if you only store the age, not the birthday.
CustomerArrivalTimeHH:MMEstimated time of arrival to the property as given by the customer. In the property's timezone.
CustomerBirthdayYYYY-MM-DDDate of birth of the customer.
CustomerCityStringCity/town/village/locality of the customer.
CustomerCompanyStringName of the company of the customer.
CustomerCompanyDepartmentStringName of the department within the company of the customer. Example: "Sales".
CustomerDepartureTimeHH:MMEstimated time of departure from the property as given by the customer. In the property's timezone.
CustomerFaxStringPshhhkkkkkkrrrrkakingkakingkakingtshchchchchchchchcch*ding*dingding.
CustomerGenderEnum(MA,FE,MI)Gender of the customer. MA = male, FE = female, MI = mixed (multiple customers, or gender neutral).
CustomerIPIPv4 or IPv6IP of the customer.
CustomerNationalityISO 3166-1 alpha-2Country Code of guest birthplace (or Country Code listed on guest passport). Value is uppercase.
CustomerNoteStringText provided by the guest at time of booking, intended to be read by the property.
CustomerPhoneStringPhone number of the customer. If mobile phone number is provided separately then this is the landline or alternative phone number.
CustomerPhoneMobileStringMobile phone number of the customer.
CustomerPostCodeStringPostcode (ZIP) of the customer.
CustomerSmokerEnum(0,1)Whether customer is a smoker.
CustomerStateStringState (province, etc.) of the customer.
CustomerTitleStringSomething like "Mr", "Mrs", "Miss", "Herr", "Frau", "Fräulein"
MarketingOptInEnum(0,1)Whether the customer has agreed to receive marketing communications.

Discount

FieldRequiredTypeDescription
CurrencyYesCurrencyCodeCurrency code for the Discount field.
DescriptionYesStringDescription of the discount.
DiscountYesCurrencyAmount of discount as a positive value.
EndDateYesYYYY-MM-DDEnd date for the date range of when this discount is applicable. Often the same as the booking's EndDate.
StartDateYesYYYY-MM-DDStart date for the date range of when this discount is applicable. Often the same as the booking's StartDate.
IncludedInDayRatesEnum(0,1)Whether the discount is included in the day rates. If not present assumed to be 1.
IncludedInRoomPriceEnum(0,1)Whether the discount is included in the room price (Price in Rooms array). If not present assumed to be 1.
IncludedInTotalEnum(0,1)Whether the discount is included in the total. We strongly recommend to set this to 1 whenever possible.

ExternalReference

List of further identifiers for the booking. For example, the booking ID a travel
agency or reservation broker provides might be different from the build-to-us channel's booking ID.
If brokering reservations for other online travel agencies, it is required to provide an external
reference object with Type OTA and the reservation origin order ID as the Reference. This way,
if the property needs to get in contact with the reservation source, they know the correct reservation ID.

FieldRequiredTypeDescription
TypeYesStringIdentifies which system the booking reference refers to (eg. IATA, OTA, or CRS). There is no predefined list for this.
ReferenceYesStringID on the system referred to by Type.

ExtraService

Extra services can contain extra fees like breakfasts, extra beds or any other
service booked.

FieldRequiredTypeDescription
EndDateYesYYYY-MM-DDEnd date for the date range of when this extra service is applicable. Often the same as the booking's EndDate.
StartDateYesYYYY-MM-DDStart date for the date range of when this extra service is applicable. Often the same as the booking's StartDate.
UnitsYesInt > 0Quantity of the extra services booked.
AdultsInt >= 0Number of adults the extra service is booked for. Adult age threshold is defined by the channel.
BabiesInt >= 0Number of babies the extra service is booked for. Baby age threshold is defined by the channel.
CategoryEnum(...)What type of extra service is this? Can be fee, meal or service.
ChildrenInt >= 0Number of children the extra service is booked for. Child age threshold is defined by the channel.
CurrencyCurrencyCodeCurrency code for the Price field. Ideally always present if Price is present, but if channel doesn't provide it it's best not to guess it.
LabelStringShort free-form name for the type of extra service (eg. Conference Room ).
DescriptionStringDescription of the extra service.
IncludedInDayRatesEnum(0,1)Whether the discount is included in the day rates. If not present assumed to be true.
IncludedInRoomPriceEnum(0,1)Whether the discount is included in the room price (Price in Rooms array). If not present assumed to be true.
IncludedInTotalEnum(0,1)Whether the extra service is included in the total. Ideally always 1 unless there is a very specific reason not to do that.
PriceCurrencyPrice of the extra service (price per unit of service, not the total for all Units). Some services do not have a price, in which case this can also be left out.

ExtraTax

Lists additional taxes that do not fit into the general Tax field in the day
rates, because the tax is not related to per-night rates. Per-person rates for
example do not fit well into the Room section.

If a tax is specific to a specific room put it in the Rooms section.

FieldRequiredTypeDescription
AmountYesFloat >= 0Tax amount used for calculation. Can refer to an absolute value or percentage. If percentage needs to be a value between 0 and 100.
AppliesPerYesTaxAppliesPerWhat does the tax apply to? E.g. booking, guest, room. For codes see below in the TaxAppliesPer section.
CategoryYesEnum(...)What type of tax is it? Can be authority_fee or tax.
CurrencyYesCurrencyCodeCurrency code for the Amount and TotalAmount field.
EndDateYesYYYY-MM-DDEnd date for the date range of when this extra tax is applicable.
IsInclusiveYesEnum(0,1)Whether the tax is included in the rates provided by the channel.
IsPercentYesEnum(0,1)Whether value in Amount refers to a percentage.
IsPerNightYesEnum(0,1)Whether the value in Amount applies for each night. Only really matters if IsPercent is 0.
StartDateYesYYYY-MM-DDStart date for the date range of when this extra tax is applicable.
TotalAmountYesCurrencyTotal amount of tax applicable to the booking. The result of applying the rules below to the booking.
RemittedByEnum(...)Who is responsible for remitting this tax to the tax-collecting agency? Can be Property or Channel.
DescriptionStringDescription of the tax as provided by the channel.

SourceTree

Lists chain of reservation sources from guest to Cloudbeds, in that order. Each
source is an object with the following fields:

FieldRequiredTypeDescription
NameYesStringName of source, provided by channel.
TypeYesStringOpen Travel Booking Channel Type. Can be 1-7. Examples: 1 = GDS, 5 = CRS, 7 = Internet (e.g., channel).
ExternalIdStringReservation broker provided ID for the source. Same type of ID as used in OrderSourceId. Please provide Cloudbeds with a list, unless Cloudbeds Channel Manager channel IDs are used.
InternalIdStringCloudbeds Channel Manager ID for the source if the source already exists within Cloudbeds. Can be the same as ExternalId if Cloudbeds Channel Manager channel IDs are used.

TaxBreakdown

Provides a breakdown of which taxes are contained in TotalTaxes. See
ExtraTax section above for the format.

TaxCategory

If the tax category doesn't fit our existing codes please let us know and we'll
extend them.

  • Resort Tax
  • Tourism Tax
  • VAT

TaxAppliesPer

  • adult
  • all-adults
  • booking
  • child
  • children
  • guest
  • pet
  • pets
  • rateplan
  • room
  • room-type
  • service

TravelAgency

This object holds information about involved travel agencies.

FieldRequiredTypeDescription
AddressStringAddress of the travel agency.
CityStringCity of the travel agency.
CompanyNameStringCompany name.
CountryISO 3166-1 alpha-2Country code of the travel agency. Value is uppercase.
EmailEmail-AddressEmail address of the travel agency.
FaxStringFax number of travel agency.
NameStringName of the travel agency.
PhoneStringPhone number of the travel agency.
PhoneMobileStringMobile phone number of the travel agency.
PhonesPhone[]Phone numbers of the travel agency.
PostCodeStringPostcode (ZIP) of the travel agency.
ProfileIdStringTravel agency ID. The ID may come from different sources, see ProfileIdType
ProfileIdTypeStringSource of the profile ID belongs. e.g. 'ABTA','CLIA','IATA','TIDS','TRUE', 'TRAVEL', 'PRIVE'
StateStringState (province, etc.) of the travel agency.

Payment

This object holds credit/debit card details of the customer.

Important: CardNumber and SeriesCode must be encoded as JSON strings
(quoted values). Bookings with card data pass through a PCI-compliant
tokenization proxy that replaces the card number and CVV in place with
non-numeric tokens; if these values are sent as bare JSON numbers the
substituted payload is no longer valid JSON and the values cannot be
tokenized.

FieldRequiredTypeDescription
CardNumberYesStringCredit card number. Should really only contain numbers but spaces are fine too. Must be encoded as a JSON string (quoted), never as a bare number.
CardCodeYesCardTypeSee below in the CardType section.
Card3DSecureCAVVString3D-Secure Authentication Validation Value. Contains the AAV for Mastercard or CAVV for Visa.
Card3DSecureCAVVAlgorithmStringAlgorithm used to generate the CAVV. A single digit or letter.
Card3DSecureDSTransactionIdStringThe 3D-Secure Directory Server transaction ID that is used for the 3D Authentication. Mandatory for MasterCard.
Card3DSecureECIInt >= 0Electronic Commerce Indicator provides authentication validation results returned. 0 = Non-3D-Secure transaction (no liability shift), 1 = Authentication attempted (MasterCard), 2 = Successful authentication (MasterCard), 5 = Successful authentication (Visa, Diners Club, Amex), 6 = Authentication attempted (Visa, Diners Club, Amex), 7 = Non-3D-Secure transaction (no liability shift)
Card3DSecureCardNotPresentBooleanFalse indicates that 3D-Secure authentication was bypassed because the cardholder information was passed verbally.
Card3DSecureVersionStringThe 3D Secure version used for the authentication. A three part version like so: 1.0.2, 2.1.0, 2.2.0. Mandatory for MasterCard.
Card3DSecureXIDStringThe transaction ID that is used for the 3D Authentication.
AddressCreditCardAddressSee below in the CreditCardAddress section.
CardHolderNameStringFull name of the card holder as it appears on the card.
ExpireDateMMYYCredit card expiration month (first two digits) and year (second two digits). Single digit months need a leading zero.
SeriesCodeStringCVV (CV2) number from the back of the credit/debit card. Usually three or four digits. Must be encoded as a JSON string (quoted, e.g. "SeriesCode": "143"), never as a bare number. Most properties will need this field to process the card.
CardBalanceCurrencyBalance on the card. Usually just for virtual cards.
CardBalanceCurrencyCurrencyCodeCurrency of the CardBalance field.
CardActivationDateYYYY-MM-DDThe card can be charged starting on this date. Relates to virtual cards that cannot be charged right away.
CardExpirationDateYYYY-MM-DDThe card can be charged until on this date. Relates to virtual cards.
DayRatesCommissionIncludedBooleanIn cases where a reservation is paid for by virtual credit card (VCC), this flag indicates whether or not the rates for each date of stay already has channel commission/compensation subtracted or not.
IsBankTransferBooleanUsed to indicate whether or not the reservation was paid for by bank transfer (meant for VCCs).
IsVCCBooleanTrue if the payment card is a virtual credit card (VCC).
TaxIdStringIn some regions (like Brazil) a tax ID of the card holder is required to charge a card.
TotalPriceCommissionIncludedBooleanIn cases where a reservation is paid for by virtual credit card (VCC), this flag indicates whether or not the reservation total price already has channel commission/compensation subtracted or not.

CardType

CodeName
AXAmerican Express
BCBC Card
CAMasterCard
CBCarte Blanche
CLCabal
CUChina Union Pay
DSDiscover
DCDiners Club
EElectron
ECEuroCard
ELElo Creditcard
ERenRoute
FBForbrugsforeningskort
HCHipercard
ITItalCred
JAJAL
JCJapan Credit Bureau
LDelta
LALaser
MUMaestro UK
NDankort
NRNaranja
NTNativa
RCarte Bleue
SSwitch
SOSolo
TCarta Si
TOMaestro
TPUniversal Air Travel Card
VIVisa

ContactPerson

Contact person information.

FieldAlways PresentTypeDescription
AddressStringContact person address.
CityString
CountryISO 3166-1 alpha-2Country code.
EmailEmail-AddressEmail address.
FNameStringFirst name.
LNameStringLast name.
LoyaltyMembershipsLoyaltyMembership[]Loyalty program memberships assigned to the contact person.
PhoneStringPhone number.
PostCodeStringPostcode (ZIP).
StateStringState (province, etc.).

CreditCardAddress

FieldRequiredTypeDescription
AddressLineStringAddress of the card holder. This usually refers to the street name and house number, apartment name or similar. Multiple lines should be added comma-separated (not with newlines).
CityNameStringCity/town/village/locality of the card holder.
CountryCodeISO 3166-1 alpha-2Resident country code of card holder, as part of their address. Value should be uppercase.
PostalCodeStringPostcode (ZIP) of the card holder.
StateCodeStringState (province, etc.) of the card holder.

CustomerAssociation

Reservation customers can sometimes be associated with entities that have some
meaning to the property or arrange the reservation. These associations (minus
travel agencies, which are handled separately) include companies (a customer's
company employer may have a special deal with the property enabling different
rates or capabilities that can, for example, trigger during reservation
cancellation), wholesalers, or groups (customer can
book as part of a group block for special events). Each association will have
indicators of type as well as a contact person. Group associations will also
contain a GroupCode, which indicates to the property manager the group block
to which they belong.

Provided by channel module

FieldRequiredTypeDescription
TypeIdYesEnum(3,5,6,21)Refer Profile Type (PRT).
AddressStringAddress line for association contact person.
CityStringCity for association contact person.
CompanyNameStringCompany name.
ContactPersonContactPersonContact person information.
CountryISO 3166-1 alpha-2Country code for association contact person.
EmailEmail-AddressEmail address for the association contact person.
FaxStringFax number for association contact person.
GroupCodeStringOnly found in group block associations. Enables property manager to tie reservation back to group block. This value is sent to the channel when creating the block.
NameStringName for association contact person.
PhoneStringPhone number for association contact person.
PhoneMobileStringMobile phone for the association / contact person.
PhonesPhone[]Phone numbers for the association / contact person.
PostCodeStringPostal code for association contact person.
ProfileIdStringUnique ID for this association profile. Probably channel-specific.
StateStringState (province, etc.) of the travel agency.

Loyalty

Some properties (usually bigger hotel chains) have loyalty programs that
can help guests accumulate monetary perks toward future stays with the
chain. Loyalties form a type of deposit, which go towards the total
reservation price affecting the Deposit and Balance fields in a
reservation payload. Loyalties have a name, a member ID, quantity, and
total amount.

Provided by channel module

FieldRequiredTypeDescription
DescriptionYesStringName of loyalty program.
MemberIdYesStringLoyalty program member ID (usually an email address).
CurrencyCurrencyCodeCurrency of the Total field.
TotalAmountCurrencyTotal amount deposited for the reservation.
UnitsStringNumber of loyalty points used.

LoyaltyMembership

Guests can have membership details for loyalty programs stored in their profile.
Loyalty program details in a guest profile indicate what membership details a customer
has stored on their profile but not which loyalty program is selected for the booking.

FieldRequiredTypeDescription
EffectiveDateYYYY-MM-DDStarting date.
ExpireDateYYYY-MM-DDEnding date.
LoyalLevelStringIndicates special privileges in a program assigned to an individual.
MembershipIdStringUnique identifier of the member in the program.
ProgramIdStringThe company of the loyalty program.
SignupDateYYYY-MM-DDThe date that the member signed up for the loyalty program.
VendorCodeStringThe identifier for the vendor in the program.

Membership

Some properties have "frequent guest" programs that allow for guests to
accrue points or get perks. Each membership will contain a ProgramCode
(membership program name) and optionally an AccountId (guest's membership ID).

Provided by channel module

FieldRequiredTypeDescription
ProgramCodeYesStringName of the membership program
AccountIdStringGuest's membership ID for this program
BonusCodeStringThe code or name of the bonus program.

Voucher

Vouchers are a form of deposit. Sometimes, when a guest books as part
of a company, the company may have an account with the property. In
some cases, if one of these customers cancels their reservation booked
through their company, instead of getting a refund, the property keeps
the money in an account and can apply it to future reservations as a
voucher. It is applied towards the total reservation price affecting
the Deposit and Balance fields in a reservation payload.

Provided by channel module

FieldRequiredTypeDescription
TotalAmountYesCurrencyTotal amount deposited for the reservation.
VoucherIdYesStringThe transaction ID.
CurrencyCurrencyCodeCurrency of the Total field.
SupplierIdStringSource/Provider of the voucher.

Reference Tables

CRSs refer to OTA codes in different sections of the payload which in turn have designated values.
The below tables documents different codes -> values mappings.

Profile Type (PRT)

Code ValueCode Name
3Company
5Wholesaler
6Group
21Arranger