Booking On Hold

Please note that this is experimental and may be subject to change.

With airline suppliers it is possible to put the booking on hold and finish the payment later via the Travelfusion XML API. 

This functionality is not currently available on all suppliers. However, for suppliers that do support it, the command and syntax of the requests and responses are almost identical to that of the normal booking flow. 

In order to indicate the Booking-On-Hold feature is available there is a special CustomSupplierParameter called BookingOnHold found in ProcessDetails response.

Step 1: Retrieving booking-on-hold details.  

ProcessDetails

If booking-on-hold is available for the selected result, then the BookingOnHold parameter will be found in the RequiredParameterList:

RequiredParameterList XML example

<RequiredParameterList>
<RequiredParameter>
<Name>BookingOnHold</Name>
<Type>boolean</Type>
<DisplayText>Request booking-on-hold (y/n). Please note the booking will expire in: 3 days, 1 hour, 59 minutes</DisplayText> // example values: 1 day; 1 day 10 hours; 24 hours; 24 hours 30 minutes
<PerPassenger>false</PerPassenger>
<IsOptional>true</IsOptional>
</RequiredParameter>
</RequiredParameterList>

Additionallyin the SupplierInfoList a remark will be found, showing the duration before this booking-on-hold expires:

SupplierInfoList XML example

<SupplierInfoList>
<SupplierInfo>
<DisplayName>Booking-On-Hold expiry period</DisplayName>
<InfoType>remark</InfoType>
<Info>3d1h59m</Info> // example values: 1d, 1d10h, 24h, 24h30m
</SupplierInfo>
</SupplierInfoList>

Step 2: Requesting booking-on-hold.

ProcessTerms

In order to request booking-on-hold, the BookingOnHold parameter needs to be sent in the ProcessTerms request with the boolean value 'y' or 'true', in the similar way that other CustomSupplierParameter's are submitted:

CustomSupplierParameterList XML example

<CustomSupplierParameterList>
<CustomSupplierParameter>
<Name>BookingOnHold</Name>
<Value>y</Value>
</CustomSupplierParameter>
</CustomSupplierParameterList>

Check here to find more details on how to handle the CustomSupplierParameter's.

StartBooking and CheckBooking

The StartBookingCheckBooking requests remaining the same as for the normal booking flow. 

The only difference is related to status. The successful holding booking process sets the booking status as 'BookingOnHold'.

StartBooking and CheckBooking XML example

// request
<StartBooking>
<XmlLoginId>***</XmlLoginId>
<LoginId>***</LoginId>
<TFBookingReference>P11O4X3QB</TFBookingReference>
</StartBooking>

// response
<StartBooking>
<LoginId>***</LoginId>
<TFBookingReference>P11O4X3QB</TFBookingReference>
</StartBooking>

// request
<CheckBooking>
<XmlLoginId>***</XmlLoginId>
<LoginId>***</LoginId>
<TFBookingReference>P11O4X3QB</TFBookingReference>
</CheckBooking>

// response
<CheckBooking>
<LoginId>***</LoginId>
<TFBookingReference>P11O4X3QB</TFBookingReference>
<Status>BookingOnHold</Status>
<SupplierReference>RHL4GY</SupplierReference>
</CheckBooking>

GetBookingDetails

In the GetBookingDetails response, the holding expiration timestamp in UTC will be found in DateOfOnHoldExpiration element.

GetBookingDetails response XML example

<GetBookingDetails>
<LoginId>***</LoginId>
<Status>BookingOnHold</Status>
<SupplierReference>RHL4GY</SupplierReference>
...
<DateOfOnHoldExpiration>26/07/2019-20:07</DateOfOnHoldExpiration>
</GetBookingDetails>

The none successful holding booking process can set the booking status as 'Failed' or 'Unconfirmed' (more details can be found here). In this case of 'Failed', the booking is not created and put on-hold on the supplier side. In the case of 'Unconfirmed', TravelFusion needs to resolve the status and check if the booking can be set as 'BookingOnHoldor 'Failed' 

Step 3: Confirming or cancelling booking-on-hold.

CommitBooking

In order to commit the booking and proceed with the payment, the CommitBooking needs to be sent. 

The successful commit of the booking-on-hold process sets the booking status as 'Succeeded'.

The BillingDetails needs to be the same as in the ProcessTerms request.

CommitBooking request XML example

<CommitBooking>
<XmlLoginId>***</XmlLoginId>
<LoginId>***</LoginId>
<TFBookingReference>P11O4X3QB</TFBookingReference>
<BookingProfile>
<BillingDetails>
<Name>
<Title>Mr</Title>
<NamePartList>
<NamePart>Andy</NamePart>
<NamePart>S</NamePart>
<NamePart>Peterson</NamePart>
</NamePartList>
</Name>
<Address>
<Company>TravelFusion</Company>
<Flat>22A</Flat>
<BuildingName>Dean&apos;s Court</BuildingName>
<BuildingNumber>3</BuildingNumber>
<Street>St. Georges Road</Street>
<Locality>Clifton</Locality>
<City>Bristol</City>
<Province>Avon</Province>
<Postcode>BS1 5UL</Postcode>
<CountryCode>GB</CountryCode>
</Address>
<CreditCard>
<Company>Travelfusion</Company>
<NameOnCard>
<Title>Mr</Title>
<NamePartList>
<NamePart>Andy</NamePart>
<NamePart>S</NamePart>
<NamePart>Peterson</NamePart>
</NamePartList>
</NameOnCard>
<Number>5123456789012346</Number>
<SecurityCode>453</SecurityCode>
<ExpiryDate>05/21</ExpiryDate>
<CardType>MasterCard</CardType>
</CreditCard>
</BillingDetails>
</BookingProfile>
</CommitBooking>

CommitBooking response XML example

<CommitBooking>
<LoginId>***</LoginId>
<TFBookingReference>P11O4X3QB</TFBookingReference>
<Status>Succeeded</Status>
</CommitBooking>

The none successful commit process can set the booking status as  'Failed' or 'Unconfirmed(more details can be found here)In this case of 'Failed', the booking remains on-hold or is not possible to be committed on the supplier side. In the case of 'Unconfirmed', TravelFusion needs to resolve the status and check if the booking can be set as 'Succeededor 'Failed'

The booking-on-hold with the status 'Failed' can still be committed or canceled again if it is possible to do so. 

StartBookingCancelPlane and CheckBookingCancelPlane

This request will cancel bookings with status 'BookingOnHold' for which users do not wish to proceed with a commit or the booking-on-hold expired. 

The successful cancellation of the booking-on-hold process sets the booking status as 'CancelSucceeded'.

StartBookingCancelPlane and CheckBookingCancelPlane XML example

// request
<StartBookingCancelPlane>
<XmlLoginId>***</XmlLoginId>
<LoginId>***</LoginId>
<TFBookingReference></TFBookingReference>
</StartBookingCancelPlane>

// response
<StartBookingCancelPlane>
<LoginId>***</LoginId>
<TFBookingReference>P11O4X3QB</TFBookingReference>
</StartBookingCancelPlane>

// request
<CheckBookingCancelPlane>
<XmlLoginId>***</XmlLoginId>
<LoginId>***</LoginId>
<TFBookingReference>P11O4X3QB</TFBookingReference>
</CheckBookingCancelPlane>

// response
<CheckBookingCancelPlane>
<LoginId>***</LoginId>
<TFBookingReference>P11O4X3QB</TFBookingReference>
<Status>CancelSucceeded</Status>
</CheckBookingCancelPlane>

The none successful cancellation process can set the booking status as 'CancelFailed' or 'CancelUnconfirmed'In this case of 'CancelFailed', the booking remains on-hold or is not possible to be cancelled on the supplier side. In the case of 'CancelUnconfirmed', TravelFusion needs to resolve the status and check if the booking is 'CancelSucceededis or 'CancelFailed'

The 
booking-on-hold with the status 'CancelFailed' can still be committed or cancelled again if it is possible to do so.

It is the responsibility of the user of the API to cancel these bookings because TravelFusion cannot guarantee that they will be automatically cancelled by the airline and also in order to release the seat. 


Notes

In all instances, Travelfusion will treat the status of 'BookingOnHold' attempts as successful, unless indicated otherwise.
You may be required to send an email to Travelfusion (operations@travelfusion.com) with the list of bookings that had subsequently FAILED - i.e. where the offline settlement failed, or got cancelled. In such cases, Travelfusion will update its records on its booking admin pages as FAILED. 

Below is a template of an email to send in such cases.

Email template

To:

“operations@travelfusion.com”


Email Subject:

“Failed On- hold Booking- [Supplier Name, e.g. “Mango”] - [Booking Reference, PNR]


Email Body:

Dear Travelfusion Team,


We ask you to please update the following on hold booking status to "FAILED"


Supplier: [Supplier Name, e.g. “Mango”]

Supplier Booking Reference: [Supplier Booking Reference, PNR]

Travelfusion Booking Reference: [Travelfusion’s Booking Reference]


Regards,


Comments