|booking_id||Booking ID (Always present)
|channel_name||Company brand name, e.g. "Example Tours"|
|made_date_time||Date and time the booking was made, in the local time of the channel account. Format is YYYY-MM-DD HH:MM:SS (24 hr)|
|start_date||Date the booking starts, generally based on the local time of the item being booked. Format is YYYY-MM-DD|
|end_date||Date the booking ends, generally based on the local time of the item being booked. Format is YYYY-MM-DD|
|booking_name||Name for the booking (not the customer). Often this is the same as the main item being booked however it can be changed (for example on Tailor made / personalised bookings)|
|booking_name_custom||If a custom booking name has been set it will be returned here (and will also be returned in <booking_name>) otherwise blank|
|voucher_url||If the account is using the standard voucher system, this link will point to the page showing the voucher.|
When the URL is visited the voucher will only be displayed if the booking is Confirmed status, if it is Quotation or Provisional status an alternative message will be displayed.
|barcode_data||Barcode value used on TourCMS standard vouchers if a supplier has not provided their own subsytem reference. Not used often, please see the following page regarding vouchers and barcodes: Learn more about operator references, barcodes and vouchers in TourCMS|
|lead_customer_id||ID number for the lead customer|
|lead_customer_name||Lead customer full name. Built from other name components|
|lead_customer_contact_note||E.g. "Call after 7pm"|
|lead_customer_travelling||1 if the lead customer is travelling on the booking, 0 if they aren't|
|customer_count||Number of customers on the booking. E.g. 2|
There will be a customers node containing...
... a customer node for each customer, contaiing:
|customer_name||E.g. "Mr Joe Bloggs"|
|title||Title (e.g. Mr, Mrs, Miss etc)|
|agent_customer_ref||A travel agent reference number / ID for this customer, e.g. perhaps the ID for this customer in their own system|
|If Permission Level 3 or above ?
|customer_contact_note||E.g. "Call after 7pm"|
|gender||"m" if male, "f" if female, blank if unknown|
|dob||Date of birth YYYY-MM-DD|
Of the customer at time of return / end of booking. Not returned if <dob> is available.
||Either days, months, weeks or years
||Customer age at end of booking / return travel specified by age_unit, will be a whole integer
|agecat||Age category - 1 digit code (i-Infant, c-Child, a-Adult, s-Senior). Based on age at end of booking|
|insurance_number||Travel insurance number|
|insurance_supplier_name||Travel insurance supplier|
|insurance_note||Travel insurance note|
|If API called by Tour Operator ?
|insurance_supplier_id||Internal supplier ID number for the travel insurance|
|(Revenue and deposit information)
|sale_currency||3 digit sale currency, e.g. "USD"|
|sales_revenue||Amount of revenue (in the sale_currency but excluding any currenct information)|
|sales_revenue_display||Display version of the revenue, includes currency symbol where applicable (e.g. US$100.00)|
|deposit||Deposit amount for the booking, regardless of whether it has been paid e.g. 100|
|deposit_display||Display version of the deposit, includes currency symbol where applicable e.g. US$100.00|
|(Booking status information)
|status||Status of the booking|
0 - Quote
1 - Provisional
2 - Confirmed
3 - Confirmed & archived
NB: If cancel_reason reason is set then the booking may be cancelled, for example it's possible to have a "Provisional" booking that is cancelled. You must check that cancel_reason is 0 if you want to ensure the booking is not cancelled
|status_text||Textual representation of the booking status.|
E.g. "Confirmed (A)"
|cancel_reason||If a booking is cancelled this field will indicate the reason, if a booking is not cancelled this will be 0.|
0 - Not cancelled
1 - Cancelled by customer request, see notes
2 - Cancelled by customer request, booked another tour
3 - Cancelled by staff, see notes
4 - Cancelled by staff, boook another tour
5 - Cancelled by staff, payment not received
6 - Cancelled by staff, tour not reached min. numbers
7 - Cancelled by staff, booking made in error
8 - Cancelled by staff, capacity exceeded
9 - Cancelled by staff, operational reasons
10 - Cancelled by staff, booking reopened for editing
11 - Cancelled by staff, bad weather
20 - Cancelled by system, expired quotation
21 - Cancelled by system, expired provisional booking
22 - Cancelled by customer (via website)
23 - Cancelled by agent (via website)
|cancel_text||Textual representation of the cancellation status.|
E.g. "Not cancelled"
|final_check||Will be 1 if the booking has had the "final check" completed by staff, 0 if it hasn't.|
|expiry_date||The date the quotation or provisional booking will expire (not show on confirmed or cancelled bookings)|
|booking_has_net_price||Whether the booking has Net rates|
|commission||Amount of commission|
|commission_tax||Amount of commission tax|
|commission_currency||3 digit commission currency, e.g. "USD"|
|commission_display||Display version of the commission, includes currency symbol where applicable (e.g. US$20.00)|
|commission_tax_display||Display version of the commission tax, includes currency symbol where applicable (e.g. US$2.50)|
|tracking_miscid||A numeric value that can be set on the tracked links to divide up online tracking into sections (e.g. specific online marketing campaigns)|
|agent_ref||Could be a booking reference for the booking in the agent's own system. May be blank|
|agent_ref_components||Could be a booking reference for the booking in the agent's own system, at a ticket level. May be blank|
|payment_status||Numeric representation of the booking payment status.|
0 - No payment
1 - Deposit paid
2 - Deposit paid #2
3 - Full balance paid
4 - Refunded
|payment_status_text||Textual representation of the payment status.|
E.g. "Full balance paid"
|balance_owed_by||Either C if the balance is owed by the customer (e.g. affiliate type booking), or A if the balance is owed by the Agent|
|balance||Amount remaining to be paid on the booking (in the sale_currency)|
|balance_display||Display version of the amount remaining to be paid on the booking, includes currency symbol where applicable (e.g. US$200.00)|
|balance_due||When the remaining balance is due. YYYY-MM-DD|
A component represents a line item in a booking (e.g. a tour or option). Components will be listed in the display order that is as the booking tokens / user interface
There will be a component node for each
|component_id||Internal ID for the component|
|linked_component_id||Options are added to tours. If an option, this will be the ID of the tour component it is associated with|
|product_id||e.g. tour_id if a tour|
|product_code||e.g. the tour code if a tour|
|product_note||e.g. pickup transfer zone (the note on a departure)|
|date_type||departure, freesale, hotel, option, fee|
|date_id||e.g departure id if a departure|
|date_code||e.g. the departure code (if a departure)|
|start_time||HH:MM (24hr) (Tours only)|
|end_time||HH:MM (24hr) (Tours only)|
|component_name||e.g. the tour name|
1 - Accommodation (hotel/campsite/villa/ski chalet/lodge)|
2 - Transport/Transfer
3 - Tour/cruise including overnight stay
4 - Day tour/trip/activity/attraction (No overnight stay)
5 - Tailor made
6 - Event
7 - Training/education
8 - Other
9 - Restaurant / Meal alternative
In the case of "2" (Transport/Transfer) there will be an attribute on the XML element indicating the direction of travel.
0 - Other / not set
1 - Airport to City
2 - City to Airport
3 - Two way return
E.g. for a return transfer <product_type direction="3">2<product_type>
Also there may be an airport code
E.g. for London Gatwick <product_type direction="3" airport_code="LGW">2<product_type>
|local_payment||Whether the component is a local payment (i.e. due to be paid in destination rather than pre-paid) or not|
|note||For an airport transfer will contain terminal and flight info|
|supplier_note||Supplier note (can be used for holding date specific IDs from 3rd party reservation systems)|
|operator_reference||The reference for this booking/component in the operators subsystem (if applicable). Learn more about supplier references, barcodes and vouchers in TourCMS.|
|barcode_symbology||If the operator has a specific requirement for voucher barcodes a symbology can be specified here. Currently supported values are QR_CODE and CODE_128. Where not provided QR_CODE is strongly preferred. Learn more about supplier references, barcodes and vouchers in TourCMS|
If the supplier has provided individual ticket references for this component they will be listed here. Learn more about supplier references, barcodes and vouchers in TourCMS
There will be an ticket node for each ticket, containing:
|value||The ticket value/reference. Display this and place in any barcode (see "barcode_symbology").
|label||An optional label that can add extra information to the ticket details beyond the name of the tour, for example "Entry to museum".
If the supplier has provided individual urls for this component they will be listed here. Learn more about supplier references, barcodes and vouchers in TourCMS
There will be a url node for each urls, containing:
|type||Currently the only supported type is "voucher", indicating the URL is a voucher to be presented to the customer for this booking component.
|mime_type||The mime-type for the document that will be served by the URL. Currently valid are "text/html" or "application/pdf".
|link||The link to present to the customer.
|label||Optionally a label may be provided, which can be displayed alongside the voucher
If any questions were configured when this component was booked then a questions node will be returned containing:
There will be an q node for each question, containing:
|question_key||If answering using Update Booking Component this key will be used to identify which question is being answered.
|question||The primary question text to display to the customer, e.g. Please provide the approximate weights for each member of your party in kilograms (Kg)
|explanation||Additional explanation text for the question, perhaps detailing why it is being requested or how it will be used
|placeholder||Placeholder text, usually an example of the type of input required
|question_internal||A shortened label for the text, largely intended for staff use, e.g. Weight (kg)
|repeat||Integer. How many answers are expected. Some questions should be answered once per tour booking, others should be answered once per person, this field will display the correct number of answers expected, e.g. "2"
|repeat_type||String. The value of the setting that drives the quantity, currently either 'Q' (if the question is set to be answered per person/quantity) or '1' (if the question is set to be answered once per tour booking)
|answer_type||An indication of the type of input expected, e.g. 'text', 'number', 'date' (and possibly more in future). Note that as far as the API goes this a suggestion only, TourCMS does not validate that the correct type of data is provided in an answer.
|answer_mandatory||Whether the answer is mandatory (required). Note that as far as the API goes this is a suggestion only, TourCMS allows mandatory questions to be omitted or left unanswered
An answers node containing:
An answer node for each answer to the question:
If guide languages have been loaded on this departure (if this node doesn't exist, none have been loaded, asssume all languages from the tour level are supported on this departure) a guide_language node will be returned containing the following:
Tour guide language, 2 digit, e.g. "fr".
|redeem||Voucher redemption instructions|
|receipt_info||Additional text to be printed on receipts, perhaps indicating additions a base tour includes|
|pickup_id||Hotel pickup id (-1 for an on request pickup)||pickup_name||Hotel pickup name
|pickup_time||Hotel pickup time|
|pickup_note||Hotel pickup note|
|pickup_description||Hotel pickup description|
|pickup_route_code||Hotel pickup route code|
||Whether this particular component has already been redeemed. "0" = Not redeemed yet, "1" = Already redeemed
||If the tour operator (supplier) has bus checkins switched on this field will be returned and will indicate whether this particular component has already been checked in. "0" = Not checked in by the bus driver yet, "1" = Already checked in by the bus driver
|rate_description||Rate note (freetext) (e.g. Adult)|
e.g r1|a means rate 1 / adult
(s-senior, a-adult, y-youth, c-child, i-infant)
(r1 is the rate_id from show tour)
|sale_tax_inclusive||1 - tax inclusive, 0 tax added to sale price to create increased total|
|sale_quantity_rule||PERSON - sale_price is per person|
GROUP - sale_price is per group
|sale_currency||Currency the booking was actually taken in (e.g. "USD"). Duplicate of sale_currency, on booking, above, repeated for convenience|
|sale_price||Price, in sale_currency, that was sold in. CAN be per person or per GROUP (depending upon sale_quantity_rule)|
|tax_total||Tax total, in sale_currency|
|sale_price_inc_tax_total||Total sale price (in sale_currency) for this component, including tax|
|net_price||Net Price, in sale_currency, that was sold in. CAN be per person or per GROUP (depending upon net_price_quantity_rule)|
|net_price_quantity_rule||PERSON - net_price is per person|
GROUP - net_price is per group
|net_price_tax_total||Net Tax total, in sale_currency|
|net_price_inc_tax_total||Total Net price (in sale_currency) for this component, including tax|
|sale_exchange_rate||Exchange rate FROM sale_currency to currency_base|
|currency_base||Base currency of the account (e.g. "GBP")|
|sale_price_base||Price, currency_base, that was sold in. CAN be per person or per GROUP (depending upon sale_quantity_rule)|
|tax_total_base||Tax total, in currency_base|
|sale_price_inc_tax_total_base||Total sale price (in currency_base) for this component, including tax|
|If API called by Tour Operator (not Agent) ?
||Additional field for cross sytem mapping
|supplier_tour_code||Supplier tour code|
|cost_quantity||Quantity (Normally the same as sale_quantity but you can get situations where the cost is say per vehicle, but the sale price is per person)|
|cost_tax_inclusive||1 - tax inclusive, 0 tax added to cost price to create increased total|
|cost_quantity_rule||PERSON - sale_price is per person|
GROUP - sale_price is per group
|cost_currency||Currency of the cost. Can be different per component (i.e NOT set at booking level)|
|cost_price||Price, in cost_currency. CAN be per person or per GROUP (depending upon cost_quantity_rule)|
|cost_tax_total||Tax total, in cost_currency|
|cost_price_inc_tax_total||Total cost price (in cost_currency) for this component, including tax|
|cost_exchange_rate||Exchange rate FROM cost_currency to currency_base|
|cost_price_base||Price, currency_base. CAN be per person or per GROUP (depending upon cost_quantity_rule)|
|cost_tax_total_base||Tax total, in currency_base|
|cost_price_inc_tax_total_base||Total cost price (in currency_base) for this component, including tax|
|component_added_datetime||Date and time the component was added to the booking YYYY-MM-DD HH:MM:SS|
|upsell_username||If the booking was an upsell, the username of the staff member that carried out the upsell|
|If Permission Level 3 or above ?
|customer_special_request||Text containing any special requests the customer has made|
|customers_agecat_breakdown||E.g. "2 Adults"|
If any payments have been made there will be a payments node containing the following child nodes.
There will be a payment node for each
|payment_date_time||Date and Time for payment in the channel accounts local time. YYYY-MM-DD HH:MM:SS (24 Hr)|
|payment_value||Value of the payment, e.g. 100.00|
|payment_currency||Currency of the payment, e.g. EUR|
|payment_value_display||Display version including currency symbol/code|
e.g. "Credit card"
|gateway_mode||The gateway mode used, 'web', 'pos', 'moto'|
|payment_reference||Freetext reference number (possibly from the payment gateway)|
|payment_transaction_reference||Reference number in a specific format (to enable us to refund a payment later, if a credit card payment) e.g. WORL|1224|
|paid_by||C if customer, A if agent|
|paid_by_id||Either a customer or agent ID|
If a promo code has been provided when starting the booking, a promo node will be returned containing:
||The promo/gift code that was provided, e.g. "10PERCENT"
||Whether the promotional code was valid or not. Will be "OK" if valid, otherwise will be "INVALID PROMO CODE"
||The value of the promotional code (e.g. "100")
||What the value is expressed as. Will be "PERCENT" for promo codes or "FIXED_VALUE" to indicate a fixed amount in the sale currency.
||Only returned for "FIXED_VALUE" gift codes, currently matches sale currency.
||Membership number (if present)
|If API called by Tour Operator (not Marketplace Partner) ?
|important_note||The staff entered "pinned note" on the booking|
|workflow_note||The staff entered note form the "workflow" tab on the booking|
|agent_name||Agent name (if an agent is set on the booking)|
|agent_code||Agent code (if an agent is set on the booking)|
|agent_id||TourCMS internal ID for agent (if an agent is set on the booking)|
|marketplace_agent_id||TourCMS Marketplace agent ID. Consistent for the same travel agent, between TourCMS accounts. Can be zero, even when agent_id is set, if the booking is assigned to a travel agent but did not originate from the TourCMS Marketplace|
|agent_type||The type of agent, relates to who pays the balance, what that balance is and the status of bookings coming in|
TRACK - No commission, customer pays balance
AFFILIATE - Commission, customer pays balance
RETAIL - Commission or net rates, agent pays balance
TRUSTED - Commission or net rates, agent pays balance, booking confirmed without payment
Will be blank if no agent
If any custom fields are configured then a custom_fields node will be returned containing the following:.
If any custom fields are configured then a custom_fields node will be returned containing the following:.
|name||Custom field name E.g. PickupPoint
|value||Value for the custom field E.g. Hilton Hotel