Airline Ancillary Services Guide

Airline Ancillary Service Charges

Note: This page has been deprecated. We strongly recomment you to use ShowLuggageCharges/ShowCardCharges command to obtain luggage charge, credit card charge and etc... Please contact Travelfusion API Support before making use of this functionality.

Following changes in the airline industry to separate out ancillary services as part of the booking process, the Travelfusion API now provides the cost of these ancillary services ("Air Extras") in the form of single API commands. The ancillary services include the costs of baggage, speedy (priority) boarding, meal type and online check-in, amongst others. Please note that this data must not be sold, redistributed or used for commercial gain in any way without written permission from Travelfusion.

It must be noted that the GetExtraServicesCharge command will only return estimated costs for those ancillary services that are supported by suppliers. An accurate cost of an ancillary service is reflected during a booking attempt, in the ProcessTerms Response depending on the relevant ancillary service (represented in the form of CustomSupplierParameters) being submitted in that ProcessTerms request. 

There are two methods of obtaining the ancillary services fees via the Travelfusion API.

GetExtraServicesCharge Request: This request is to be used if you wish to get the full list of ancillary service charges for a specific supplier or for all suppliers. This XML request must not be submitted more than 3 times per day for each supplier and, by no means, submitted for each booking attempt. Please note that the response will highlight only the price calculation rules, take baggage with linear scale for instance, the price 1 bag, 2 bags, 3 bags... won't be returned, but only the fee of 1 bag will be provided, along with the linear scale property.

CalculateExtraServicesCharge Request: This request is to be used if you wish to get the ancillary service charges for a specific supplier and for a specific list of ancillary services. The response will contain the total amount attributable to the different ancillary services as well as a break down on the individual cost of the ancillary services.

GetExtraServiceCharge Request

The following XML command returns the full list of air extra charges offered by a specific supplier or all suppliers. By omitting the optional SupplierList element, a full list of extra services charges provided by all available suppliers can be obtained.

GetExtraServiceCharge Request

<GetExtraServiceCharge>
    <XmlLoginId>****</XmlLoginId>
    <LoginId>****</LoginId>
    <SupplierList>
        <Supplier>Supplier_ABC</Supplier>
        <Supplier>...</Supplier>
    </SupplierList>
</GetExtraServiceCharge>
The GetExtraServiceCharge response would be of the format below:

GetExtraServiceCharge response

<GetExtraServiceCharge millis="30">
    <LoginId>****</LoginId>
    <Supplier>
        <Name>Supplier_ABC</Name>
        <Service>
            <Name>OnlineCheckinWithEUPassportOrId</Name>
            <ChargeList>
                <Charge>
                    <Amount>5.00</Amount>
                    <Currency>GBP</Currency>
                </Charge>
            </ChargeList>
        </Service>
        <Service>
            <ServiceName>Baggage</ServiceName>
            <ServiceDescription>The Baggage Charge</ServiceDescription>
            <ChargeList>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Departure Time Before</Type>
                            <Value>15/07/2010-00:00</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>0.00</Amount>
                </Charge>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Departure Time After</Type>
                            <Value>15/07/2010-00:00</Value>
                        </Restriction>
                        <Restriction>
                            <Type>Number</Type>
                            <Value>1</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>0.00</Amount>
                </Charge>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Departure Time After</Type>
                            <Value>15/07/2010-00:00</Value>
                        </Restriction>
                        <Restriction>
                            <Type>Number</Type>
                            <Value>2</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>5.00</Amount>
                    <Currency>GBP</Currency>
                </Charge>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Departure Time After</Type>
                            <Value>15/07/2010-00:00</Value>
                        </Restriction>
                        <Restriction>
                            <Type>Number</Type>
                            <Value>3</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>15.00</Amount>
                    <Currency>GBP</Currency>
                </Charge>
                <RestrictionDescriptionList>
                    <RestrictionDescription>
                        <Restriction>Departure Time Before</Restriction>
                        <Description>Flight can apply this charge if the departure time is before the specified value</Description>
                    </RestrictionDescription>
                    <RestrictionDescription>
                        <Restriction>Departure Time After</Restriction>
                        <Description>Flight can apply this charge if the departure time is after the specified value</Description>
                    </RestrictionDescription>
                    <RestrictionDescription>
                        <Restriction>Number</Restriction>
                        <Description>Flight can apply this charge if the number of baggage equals to the specified value</Description>
                    </RestrictionDescription>
                </RestrictionDescriptionList>
            </ChargeList>
        </Service>
    </Supplier>
    <Disclaimer>The GetExtraServiceCharge response does not include all service fees and may not always be 100% accurate, as the service charges are changing rapidly and they can vary by specific flight, seat assignment, and frequent flier status.</Disclaimer>
</GetExtraServiceCharge>
A detailed specification for the GetExtraServiceCharge Request and GetExtraServiceCharge Response here.

Please note that if the amount is 0, no currency would be returned.
The example above shows the extra service charge list for the specified supplier. It represents two services - baggage and online check-in.

The online check-in service is a simple type as there is a fixed fee of 5.00 GBP

However, the baggage service fee is determined based on the RestrictionList element. Until the 15th of Jul, 2010, the cost of baggage is free. After this date, the cost of 1 bag is free, while the costs of 2 bags is 5GBP and the cost of 3 bags is 15 GBP respectively. This charge can be applied to a specific flight if and only if all restrictions are met.


Regarding the charge, please note that there could be three different types:
Amount/Currency - a set value as charged by the supplier.
Percentage - value represents the percentage levied by the supplier, for that air-extra, on the total price charged.
FixedAdditionalAmount - the value represents an amount that will be charged over and above what is returned in either of the above cases.
Only one of amount and percentage is returned. FixedAdditionalAmount will be omitted if it is irrelevant. With reference to the following scenario of a particular card charge policy of a supplier:

All bookings will incur a 4.00 EUR booking fee except for bookings made by Visa electron which is free. Bookings made by Visa Credit Card, MasterCard, Diners Club, American Express, UATP/Airplus will all incur an additional fee of 2.5% of the total transaction value, but with a minimum charge of 5.00 EUR whichever is greater.
Please see the extract of a GetExtraServiceCharge response (Visa Credit only) below:

The example shows the extra service charge table of Supplier_ABC. It describes two services: baggage and online check-in. For the online check-in, it is a flat fee of 5.00 GBP. However, baggage is a bit more  complex. The ChargeList node contains 4 Charge nodes. Each of them gives an amount and some Restriction nodes. The charge can be applied to a specified flight if and only if all restrictions are met. This XML response shows a situation like this: The baggage service is free until 15th of Jul. Then only 1 bag is still free, when 2 bags cost 5 GBP and 3 bags cost 15 GBP. The Type of the Restriction will be a standard string. For example, TimeBefore, TimeAfter, NumberOfBags, etc. The RestrictionDescription contains details, because suppliers can have the different baggage policies. The RestrictionDescription can include the the details of the restriction itself and also the value of the restriction. For example:

RestrictionDescription Example

<RestrictionDescription>
    <Restriction>Departure Time Before</Restriction>
    <Description>Flight can apply this charge if the departure time is before the specified value</Description>
</RestrictionDescription>
<RestrictionDescription>
    <Restriction>Service Type:Vegetarian</Restriction>
    <Description>Vegetarian food is pasta or pizza</Description>
</RestrictionDescription>
The first description is for the restriction Departure Time Before. The second description is for the possible value of the restriction, which is separated with a colon. 

Another notable element is the Percentage charge mode. The following example shows the charge amount is 1.00% of the total price plus 4.

Charge Example

<Charge>
    <RestrictionList>
        <Restriction>
            <Type>Number</Type>
            <Value>4</Value>
        </Restriction>
    </RestrictionList>
    <Percentage>1.00</Percentage>
    <FixedAdditionalAmount>4.00</FixedAdditionalAmount>
</Charge>

CalculateExtraServiceCharge Request

To calculate service charges for a certain supplier, the following command should be sent:

CalculateExtraServiceCharge Request

<CommandList>
    <CalculateExtraServiceCharge>
        <XmlLoginId>*****</XmlLoginId>
        <LoginId>*****</LoginId>
        <Supplier>EZY</Supplier>
        <CalculationProfile>
            <ServiceNameList>
                <ServiceName>
                    <Name>Card Charge</Name>
                </ServiceName>
                <ServiceName>
                    <Name>Baggage</Name>
                </ServiceName>
                <ServiceName>
                    <Name>Speedy Boarding</Name>
                </ServiceName>
                <ServiceName>
                    <Name>Equipment</Name>
                    <ParameterList>
                        <ServiceType>Sports Equipment|Sports Equipment</ServiceType>
                    </ParameterList>
                </ServiceName>
                <!--other services-->
            </ServiceNameList>
            <TravellerList>
                <Traveller>
                    <Age>30</Age>
                    <ServiceNameList>
                        <ServiceName>
                            <Name>Baggage</Name>
                            <ParameterList>
                                <!--
                                    "NumberOfBags", "WeightOfBags", "ServiceType"
                                -->
                                <NumberOfBags>10</NumberOfBags>
                                <WeightOfBags>15</WeightOfBags>
                            </ParameterList>
                        </ServiceName>
                        <ServiceName>
                            <Name>Speedy Boarding</Name>
                        </ServiceName>
                        <!--other services-->
                    </ServiceNameList>
                </Traveller>
                <Traveller>
                    <Age>6</Age>
                    <ServiceNameList>
                        <ServiceName>
                            <Name>Baggage</Name>
                            <ParameterList>
                                <WeightOfBags>10</WeightOfBags>
                            </ParameterList>
                        </ServiceName>
                        <!--other services-->
                    </ServiceNameList>
                </Traveller>
            </TravellerList>
            <GroupList>
                <Group>
                    <Outward>
                        <SegmentList>
                            <Segment />
                            <Segment />
                        </SegmentList>
                    </Outward>
                    <Return />
                </Group>
            </GroupList>
            <BillingDetails>
                <Price>200.00</Price>
                <Currency>CHF</Currency>
                <CreditCard>
                    <CardType>American Express</CardType>
                </CreditCard>
            </BillingDetails>
        </CalculationProfile>
    </CalculateExtraServiceCharge>
</CommandList>

For exact spec please see CalculateExtraServiceCharge request.

The XmlLoginId and LoginId parameters are mandatory as in the other XML commands, and you can only specify one supplier in a CalculateExtraServiceCharge command. ServiceNameList should contain all the services you wish to use in calculating the extra charge.

Here's an example of full CalculateExtraServiceCharge response:

CalculateExtraServiceCharge Response

<CommandList>
    <CalculateExtraServiceCharge millis="6">
        <LoginId>****</LoginId>
        <Service>
            <ServiceName>Baggage</ServiceName>
            <Charge>
                <Amount>200.00</Amount>
                <Currency>GBP</Currency>
            </Charge>
        </Service>
        <Disclaimer>The CalculateExtraServiceCharge response does not include all service fees and may not always be 100% accurate, as the service charges are changing rapidly and they can vary by specific flight, seat assignment, and frequent flier status.</Disclaimer>
    </CalculateExtraServiceCharge>
    <GeneralInfoItemList>
        <GeneralInfoItem>
            <Name>ServerAddress</Name>
            <Value>10.66.50.71</Value>
        </GeneralInfoItem>
        <GeneralInfoItem>
            <Name>ClientAddress</Name>
            <Value>10.66.50.71</Value>
        </GeneralInfoItem>
        <GeneralInfoItem>
            <Name>StartTime</Name>
            <Value>16/06/10-05:44:23</Value>
        </GeneralInfoItem>
        <GeneralInfoItem>
            <Name>EndTime</Name>
            <Value>16/06/10-05:44:23</Value>
        </GeneralInfoItem>
    </GeneralInfoItemList>
</CommandList>


Appendix C: GetExtraServiceCharge Examples

Example 1: Baggage cost depends on area (longhaul and shorthaul)

GetExtraServiceCharge Example 1

<GetExtraServiceCharge millis="30">
    <LoginId>...</LoginId>
    <Supplier>
        <Name>...</Name>
        <Service>
            <ServiceName>NumberOfBags</ServiceName>
            <ChargeList>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Area</Type>
                            <Value>Shorthaul</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>8.00</Amount>
                    <Currency>GBP</Currency>
                </Charge>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Area</Type>
                            <Value>Longhaul</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>10.00</Amount>
                    <Currency>GBP</Currency>
                </Charge>
            </ChargeList>
            <RestrictionDescriptionList>
                <RestrictionDescription>
                    <Restriction>Area:Shorthaul</Restriction>
                    <Description>{The definition of shorthaul from supplier}</Description>
                </RestrictionDescription>
                <RestrictionDescription>
                    <Restriction>Area:Longhaul</Restriction>
                    <Description>{The definition of longhaul from supplier}</Description>
                </RestrictionDescription>
            </RestrictionDescriptionList>
        </Service>
    </Supplier>
    <Disclaimer>The GetExtraServiceCharge response does not include all service fees and may not always be 100% accurate, as the service charges are changing rapidly and they can vary by specific flight, seat assignment, and frequent flier status.</Disclaimer>
</GetExtraServiceCharge>

Example 2: Meal cost depends on meal type

GetExtraServiceCharge Example 2

<GetExtraServiceCharge millis="34">
    <LoginId>...</LoginId>
    <Supplier>
        <Name>...</Name>
        <Service>
            <ServiceName>MealType</ServiceName>
            <ChargeList>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Service Type</Type>
                            <Value>Other</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>12.00</Amount>
                    <Currency>GBP</Currency>
                </Charge>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Service Type</Type>
                            <Value>Vegetarian</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>12.00</Amount>
                    <Currency>GBP</Currency>
                </Charge>
            </ChargeList>
            <RestrictionDescriptionList>
                <RestrictionDescription>
                    <Restriction>Service Type</Restriction>
                    <Description>Flight can apply this charge if the specified service type are selected</Description>
                </RestrictionDescription>
            </RestrictionDescriptionList>
        </Service>
    </Supplier>
    <Disclaimer>The GetExtraServiceCharge response does not include all service fees and may not always be 100% accurate, as the service charges are changing rapidly and they can vary by specific flight, seat assignment, and frequent flier status.</Disclaimer>
</GetExtraServiceCharge>

Example 3: Online check in depends on passenger type and maximum 1 free bag

GetExtraServiceCharge Example 3

<GetExtraServiceCharge millis="56">
    <LoginId>****</LoginId>
    <Supplier>
        <Name>ezy</Name>
        <Service>
            <ServiceName>OnlineCheckinWithEUPassportOrId</ServiceName>
            <ChargeList>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Passenger Type</Type>
                            <Value>Adult</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>10.00</Amount>
                    <Currency>GBP</Currency>
                </Charge>
            </ChargeList>
        </Service>
        <Service>
            <ServiceName>NumberOfBags</ServiceName>
            <ChargeList>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Number Larger Than</Type>
                            <Value>1</Value>
                        </Restriction>
                        <Restriction>
                            <Type>Number</Type>
                            <Value>Linear Scale</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>5.00</Amount>
                    <Currency>GBP</Currency>
                </Charge>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Number Less Than Or Equals</Type>
                            <Value>1</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>0.00</Amount>
                </Charge>
            </ChargeList>
        </Service>
    </Supplier>
    <Disclaimer>The GetExtraServiceCharge response does not include all service fees and may not always be 100% accurate, as the service charges are changing rapidly and they can vary by specific flight, seat assignment, and frequent flier status.</Disclaimer>
</GetExtraServiceCharge>

Example 4: Card charge depends on credit card type

GetExtraServiceCharge Example 4

<GetExtraServiceCharge millis="18">
    <LoginId>****</LoginId>
    <Supplier>
        <Name>ezy</Name>
        <Service>
            <ServiceName>Card Charge</ServiceName>
            <ChargeList>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Charge Type</Type>
                            <Value>PER_SEGMENT_PER_PASSENGER</Value>
                        </Restriction>
                        <Restriction>
                            <Type>Service Type</Type>
                            <Value>Visa Credit</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>5.00</Amount>
                    <Currency>GBP</Currency>
                </Charge>
                <Charge>
                    <RestrictionList>
                        <Restriction>
                            <Type>Charge Type</Type>
                            <Value>PER_SEGMENT_PER_PASSENGER</Value>
                        </Restriction>
                        <Restriction>
                            <Type>Service Type</Type>
                            <Value>Visa Electron</Value>
                        </Restriction>
                    </RestrictionList>
                    <Amount>0.00</Amount>
                </Charge>
            </ChargeList>
            <RestrictionDescriptionList>
                <RestrictionDescription>
                    <Restriction>Service Type</Restriction>
                    <Description>Flight can apply this charge if the specified service type are selected</Description>
                </RestrictionDescription>
            </RestrictionDescriptionList>
        </Service>
    </Supplier>
    <Disclaimer>The GetExtraServiceCharge response does not include all service fees and may not always be 100% accurate, as the service charges are changing rapidly and they can vary by specific flight, seat assignment, and frequent flier status.</Disclaimer>
</GetExtraServiceCharge>