Airline Processing Developer Guide

This section describes how to use this developer guide and where to find further information.

Audience and Purpose

This guide is written for application developers who want to use the
Cybersource
Simple Order API
to integrate credit card processing with airline data into their order management system.
Implementing the
Cybersource
credit card services requires software development skills. You must write code that uses the API request and reply fields to integrate the credit card services into your existing order management system.

Conventions

The following special statements are used in this document:
An
Important
statement contains information essential to successfully completing a task or learning a concept.

Customer Support

For support information about any service, visit the Support Center:

Recent Revisions to This Document

25.05.01

Removed the
airlineData_leg_#_conjunctionTicket
field from the capture required fields list. See Optional Fields for an Airline Capture.

24.04.02

This revision contains only editorial changes and no technical updates.

24.04.01

This revision contains only editorial changes and no technical updates.

Introduction to Airline Processing

Airline data processing exceeds basic payment processing by enabling you to process specific travel data. To make use of this capability, you must submit additional information, such as:
  • Carrier (airline)
  • Departure date
  • Destination airport
  • Purchase date
  • Originating airport
  • Ticket class
  • Travel legs (segments)

Cybersource
Airline Data Processing

Cybersource
does not store airline data. Instead, it functions as a pass-through service for the data.
Cybersource
enforces only the minimal level of field validation.
When you request an airline service,
Cybersource
responds with certain fields and values to indicate whether the airline data was processed. The response fields for each service are:
  • Authorization:
    ccAuthReply_enhancedDataEnabled
  • Capture:
    ccCaptureReply_enhancedDataEnabled
  • Credit:
    ccCreditReply_enhancedDataEnabled
The possible values for the response fields are:
  • N
    : the airline data was not included in the request to the processor.
  • Y
    : the airline data was included in the request to the processor.
Cybersource
temporarily disables your account's airline data processing capability and contacts you if your airline data transactions produce batching errors when the information is sent to the processor. If this happens, your request is not rejected, but you receive one of the above listed fields with the
N
value in the response indicating that airline data in the request has been ignored and not sent to the processor.

Airline Travel Legs

Some processors require travel legs in the API service request, even for direct flights. This section describes how to successfully include travel legs in an API request.

Using Travel Legs

To include travel legs in an airline transaction, include one or more
airlineData_leg_#_
fields, starting with the
airlineData_leg_0_
fields.
Direct flights only use the
airlineData_leg_0_
fields.
For multiple leg trips, the
airlineData_leg_#_
fields must start at 0, and you must use consecutive numbers for the additional legs.
If you skip a number,
Cybersource
ignores the legs that follow the skipped number.
For example, these three travel legs are valid:
<leg id="0"> <carrierCode>XX</carrierCode> </leg> <leg id="1"> <carrierCode>XZ</carrierCode> </leg> <leg id="2"> <carrierCode>XX</carrier<code> </leg>

Travel Leg Limitations

Some processors limit the number of travel legs for each trip based on the card type.

FDC Nashville Global
Airline Requests

This section describes the airline payment services you can use when processing with
FDC Nashville Global
.

Supported Card Types

This table lists the card types
FDC Nashville Global
supports and their values. When including the
card_cardType
field, set the field to a value listed in the card type value column.
FDC Nashville Global
Supported Card Types
Supported Card Type
Card Type Value
American Express
003
Discover
004
Mastercard
002
Visa
001

Authorize a Payment

This section describes how to process an airline authorization.

Authorization Restrictions

Ticket purchases that include multiple passengers may be included in a single authorization request, however,
Cybersource
recommends sending a separate capture request for each passenger.
If any ancillary purchases are made at the same time as the ticket purchase, you may include all the items in a single authorization request, however,
Cybersource
recommends separating the ancillary and ticket purchases into individual capture requests.
If any ancillary purchases are not made at the same time as the ticket purchase,
Cybersource
recommends separating the authorization and capture requests for the ancillary and ticket purchases.

Endpoint

Set the
ccAuthService_run
field to
true
.
Send the request to
https://ics2ws.ic3.com/commerce/1.x/transactionProcessor
.

Required Fields for an Airline Authorization

Include these fields to process an airline authorization.
When relaxed requirements for address data and the expiration date are being used, not all fields in this list are required. It is your responsibility to determine whether your account is enabled to use this feature and which fields are required. For details about relaxed requirements, see Relaxed Requirements for Address Data and Expiration Date in Payment Transactions.

Card-Specific Fields for an Airline Authorization

This section includes card-specific information required for an airline authorization.

American Express

Include these fields in addition to the required fields when using an American Express card. American Express requires leg fields in the authorization request. For more information about leg fields, see Airline Travel Legs.
Replace the
#
character with the number
0
, and consecutive numbers for every additional leg.
Replace the
#
character with the number
0
, and consecutive numbers for every additional leg.
Replace the
#
character with the number
0
, and consecutive numbers for every additional leg.
Replace the
#
character with the number
0
, and consecutive numbers for every additional leg.
Replace the
#
character with the number
0
, and consecutive numbers for every additional leg.

Simple Order
Example Airline Authorization

Request
<merchantID>fdiglobal_cert_no_cbps</merchantID> <merchantReferenceCode>TLPANI6-28-1</merchantReferenceCode> <billTo> <firstName>John</firstName> <lastName>Smith</lastName> <street1>201 S. Division St.</street1> <city>Ann Arbor</city> <state>MI</state> <postalCode>48104-2201</postalCode> <country>US</country> <email>null@cybersource.com</email> </billTo> <shipTo> <firstName>CPS</firstName> </shipTo> <purchaseTotals> <currency>USD</currency> <grandTotalAmount>50.00</grandTotalAmount> </purchaseTotals> <card> <accountNumber>3739531923510-04</accountNumber> <expirationMonth>12</expirationMonth> <expirationYear>2025</expirationYear> <cardType>003</cardType> </card> <ccAuthService run="true"> <industryDatatype>airline</industryDatatype> </ccAuthService> <airlineData> <passengerName>John</passengerName> <leg id="0"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <fareBasis>AB1234</fareBasis> </leg> </airlineData>
Response to a Successful Request
<merchantReferenceCode>gZZE9w03mnzQef4ePI1CnJeu7e+d0lTRmBZOSpG6gheF3JyRat</merchantReferenceCode> <requestID>6859960691616692203007</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>USD</currency> </purchaseTotals> <ccAuthReply> <reasonCode>100</reasonCode> <amount>50.00</amount> <authorizationCode>888888</authorizationCode> <avsCode>X</avsCode> <avsCodeRaw>I1</avsCodeRaw> <authorizedDateTime>2023-06-05T20:14:29Z</authorizedDateTime> <processorResponse>100</processorResponse> <reconciliationID>702412146IIXPP78</reconciliationID> <accountBalance>70.00</accountBalance> </ccAuthReply> <card> <cardType>003</cardType> </card> <pos> <terminalID>111111</terminalID> </pos>
Request
<merchantID>fdiglobal_cert_no_cbps</merchantID> <merchantReferenceCode>TLPANI6-28-1</merchantReferenceCode> <billTo> <firstName>John</firstName> <lastName>Smith</lastName> <street1>201 S. Division St.</street1> <city>Ann Arbor</city> <state>MI</state> <postalCode>48104-2201</postalCode> <country>US</country> <email>null@cybersource.com</email> </billTo> <purchaseTotals> <currency>USD</currency> <grandTotalAmount>50.00</grandTotalAmount> </purchaseTotals> <card> <accountNumber>40120000333300-26</accountNumber> <expirationMonth>12</expirationMonth> <expirationYear>2025</expirationYear> <cardType>001</cardType> </card> <ccAuthService run="true"> <industryDatatype>airline</industryDatatype> </ccAuthService>
Response to a Successful Request
<merchantReferenceCode>gZZE9w03mnzQef4ePI1CnJeu7e+d0lTRmBZOSpG6gheF3JyRat</merchantReferenceCode> <requestID>6859958674966249203009</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>USD</currency> </purchaseTotals> <ccAuthReply> <reasonCode>100</reasonCode> <amount>50.00</amount> <authorizationCode>888888</authorizationCode> <avsCode>X</avsCode> <avsCodeRaw>I1</avsCodeRaw> <authorizedDateTime>2023-06-05T20:11:07Z</authorizedDateTime> <processorResponse>100</processorResponse> <reconciliationID>70240697CIIXNKX4</reconciliationID> <paymentNetworkTransactionID>123456789619999</paymentNetworkTransactionID> </ccAuthReply> <card> <cardType>001</cardType> </card> <pos> <terminalID>111111</terminalID> </pos>

Capture a Ticket Payment

This section describes how to capture an airline ticket payment, such as when a person is purchasing a ticket on your e-commerce store.

Capture Restrictions

For a ticket purchase with multiple passengers,
Cybersource
recommends sending separate capture requests for each passenger. The original authorization may be a single request.
When ancillary purchases are made at the same time as the ticket purchase,
Cybersource
recommends sending separate capture requests for the ticket and ancillary purchases.

Airline Travel Legs

FDC Nashville Global
requires you to include travel leg fields in your requests, even for direct flights. For more information about how to format travel leg fields, see Airline Travel Legs.

Leg Limitations

FDC Nashville Global
limits the maximum number of legs for each trip based on card type. This table describes the maximum number of legs for each trip based on processor and card type.
FDC Nashville Global
Leg Limitations
Supported Card Types
Maximum Number of Trip Legs
American Express
4
Discover
4
Mastercard
99
Visa
4

Endpoint

Set the
ccCaptureService_run
field to
true
.
Send the request to
https://ics2ws.ic3.com/commerce/1.x/transactionProcessor
.

Required Fields for Capturing a Ticket Payment

Include these required fields to capture an airline payment for tickets.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
airlineData_ticketNumber
Set to
true
.
ccCapture_industryDataType
Set to
airline
.
Set to the
merchant_ref_number
field value used in the corresponding authorization request.

Card-Specific Fields for Capturing a Ticket Payment

This section includes card-specific information required to capture a payment for tickets.

Discover

Include these fields in addition to the required fields when using a Discover card.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Set to
A
or
P
.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Set to
A
or
P
.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.

Mastercard

Include these fields in addition to the required fields when using a Mastercard card.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.

Visa

Include this field in addition to the required fields when using a Visa card.
Set to
0
for refundable.
Set to
1
for nonrefundable.

Optional Fields for an Airline Capture

Choose from these optional fields to include additional information when capturing an airline payment for direct flight tickets.
airlineData_clearingCount
airlineData_clearingSequence
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Set to
O
(capital letter "O") to indicate the leg of a trip is allowed to stopover. Default value.
Set to
X
to indicate the leg of a trip is not allowed to stopover.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
Replace the
#
character with the number
0
for the first leg and consecutive numbers for any additional legs.
airlineData_totalClearingAmount

Simple Order
Example: Capturing a Visa Airline Payment

Request
<merchantID>fdiglobal_cert_no_cbps</merchantID> <merchantReferenceCode>TLPANI6-28-1</merchantReferenceCode> <purchaseTotals> <currency>USD</currency> <taxAmount>3</taxAmount> <grandTotalAmount>50.00</grandTotalAmount> </purchaseTotals> <otherTax> <localTaxAmount>20</localTaxAmount> </otherTax> <ccCaptureService run="true"> <authRequestID>6841863354646003603681</authRequestID> <industryDatatype>airline</industryDatatype> </ccCaptureService> <airlineData> <agentName>Thomascook</agentName> <ticketNumber>asd23</ticketNumber> <passengerName>John</passengerName> <customerCode>LDTYOU789</customerCode> <totalFee>200</totalFee> <leg id="0"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="1"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="2"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <departureTime>1720</departureTime> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="3"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <departureTime>1720</departureTime> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <planNumber>2B</planNumber> <exchangeTicketAmount>87654</exchangeTicketAmount> <exchangeTicketFee>32345</exchangeTicketFee> </airlineData>
Response to a Successful Request
<merchantReferenceCode>gZZE9w03mnzQef4ePI1CnJeu7e+d0lTRmBZOSpG6gheF3JyRat</merchantReferenceCode> <requestID>6859997862716741203010</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>USD</currency> </purchaseTotals> <ccCaptureReply> <reasonCode>100</reasonCode> <requestDateTime>2023-06-05T21:16:26Z</requestDateTime> <amount>50.00</amount> <reconciliationID>702280482IIXTJ8K</reconciliationID> </ccCaptureReply>
Request
<merchantID>fdiglobal_cert_no_cbps</merchantID> <merchantReferenceCode>TLPANI6-28-1</merchantReferenceCode> <purchaseTotals> <currency>USD</currency> <taxAmount>3</taxAmount> <grandTotalAmount>50.00</grandTotalAmount> </purchaseTotals> <otherTax> <localTaxAmount>20</localTaxAmount> </otherTax> <ccCaptureService run="true"> <authRequestID>6917686812546643503007</authRequestID> <industryDatatype>airline</industryDatatype> </ccCaptureService> <airlineData> <agentCode>AGC12345</agentCode> <agentName>Thomascook</agentName> <ticketIssuerAddress>123 Happy St</ticketIssuerAddress> <ticketNumber>asd23</ticketNumber> <passengerName>John</passengerName> <customerCode>LDTYOU789</customerCode> <totalFee>200</totalFee> <leg id="0"> <carrierCode>AA</carrierCode> <flightNumber>123456789</flightNumber> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <fareBasis>AB1234</fareBasis> <exchangeTicket>tickeT12</exchangeTicket> <departureTime>1720</departureTime> <departureTimeSegment>P</departureTimeSegment> <arrivalTime>2220</arrivalTime> <arrivalTimeSegment>P</arrivalTimeSegment> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fare>100000000</fare> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="1"> <carrierCode>AA</carrierCode> <flightNumber>456789123</flightNumber> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <fareBasis>AB1234</fareBasis> <exchangeTicket>tickeT12</exchangeTicket> <departureTime>1720</departureTime> <departureTimeSegment>P</departureTimeSegment> <arrivalTime>2220</arrivalTime> <arrivalTimeSegment>P</arrivalTimeSegment> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fare>100000000</fare> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="2"> <carrierCode>AA</carrierCode> <flightNumber>987654321</flightNumber> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <fareBasis>AB1234</fareBasis> <exchangeTicket>tickeT12</exchangeTicket> <departureTime>1720</departureTime> <departureTimeSegment>P</departureTimeSegment> <arrivalTime>2220</arrivalTime> <arrivalTimeSegment>P</arrivalTimeSegment> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fare>100000000</fare> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="3"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <fareBasis>AB1234</fareBasis> <exchangeTicket>tickeT12</exchangeTicket> <departureTime>1720</departureTime> <departureTimeSegment>P</departureTimeSegment> <arrivalTime>2220</arrivalTime> <arrivalTimeSegment>P</arrivalTimeSegment> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fare>100000000</fare> <fee>999.99</fee> <tax>99</tax> </leg> <ticketIssueDate>20231010</ticketIssueDate> <planNumber>2B</planNumber> <arrivalDate>20230917</arrivalDate> <exchangeTicketAmount>87654</exchangeTicketAmount> <exchangeTicketFee>32345</exchangeTicketFee> </airlineData>
Response to a Successful Request
<merchantReferenceCode>Postman-1691769389</merchantReferenceCode> <requestID>6917693897226880503009</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>USD</currency> </purchaseTotals> <ccCaptureReply> <reasonCode>100</reasonCode> <requestDateTime>2023-08-11T15:56:29Z</requestDateTime> <amount>50.00</amount> <reconciliationID>79955177DL62B711</reconciliationID> </ccCaptureReply>
Request
<merchantID>fdiglobal_cert_no_cbps</merchantID> <merchantReferenceCode>TLPANI6-28-1</merchantReferenceCode> <purchaseTotals> <currency>USD</currency> <taxAmount>3</taxAmount> <grandTotalAmount>50.00</grandTotalAmount> </purchaseTotals> <otherTax> <localTaxAmount>20</localTaxAmount> </otherTax> <ccCaptureService run="true"> <authRequestID>6917735883576902203011</authRequestID> <industryDatatype>airline</industryDatatype> </ccCaptureService> <airlineData> <agentName>Thomascook</agentName> <ticketNumber>asd23</ticketNumber> <passengerName>John</passengerName> <customerCode>LDTYOU789</customerCode> <totalFee>200</totalFee> <leg id="0"> <carrierCode>AA</carrierCode> <flightNumber>123456789</flightNumber> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <fareBasis>1</fareBasis> <exchangeTicket>tickeT12</exchangeTicket> <departureTime>1235</departureTime> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="1"> <carrierCode>AA</carrierCode> <flightNumber>987654321</flightNumber> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <fareBasis>1</fareBasis> <exchangeTicket>tickeT12</exchangeTicket> <departureTime>1640</departureTime> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="2"> <carrierCode>AA</carrierCode> <flightNumber>78945612</flightNumber> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <fareBasis>1</fareBasis> <exchangeTicket>tickeT12</exchangeTicket> <departureTime>2245</departureTime> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="3"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <fareBasis>1</fareBasis> <exchangeTicket>tickeT12</exchangeTicket> <departureTime>2345</departureTime> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <planNumber>2B</planNumber> <exchangeTicketAmount>87654</exchangeTicketAmount> <exchangeTicketFee>32345</exchangeTicketFee> </airlineData>
Response to a Successful Request
<merchantReferenceCode>Postman-1691773605</merchantReferenceCode> <requestID>6917736057356909103011</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>USD</currency> </purchaseTotals> <ccCaptureReply> <reasonCode>100</reasonCode> <requestDateTime>2023-08-11T17:06:45Z</requestDateTime> <amount>50.00</amount> <reconciliationID>79959505DL62B7XL</reconciliationID> </ccCaptureReply>
Request
<merchantID>fdiglobal_cert_no_cbps</merchantID> <merchantReferenceCode>TLPANI6-28-1</merchantReferenceCode> <purchaseTotals> <currency>USD</currency> <taxAmount>3</taxAmount> <grandTotalAmount>50.00</grandTotalAmount> </purchaseTotals> <otherTax> <localTaxAmount>20</localTaxAmount> </otherTax> <ccCaptureService run="true"> <authRequestID>6841863354646003603681</authRequestID> <industryDatatype>airline</industryDatatype> </ccCaptureService> <airlineData> <agentName>Thomascook</agentName> <ticketNumber>asd23</ticketNumber> <restrictedTicketIndicator>1</restrictedTicketIndicator> <passengerName>John</passengerName> <customerCode>LDTYOU789</customerCode> <totalFee>200</totalFee> <leg id="0"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="1"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="2"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <leg id="3"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>999.99</fee> <tax>99</tax> </leg> <planNumber>2B</planNumber> <exchangeTicketAmount>87654</exchangeTicketAmount> <exchangeTicketFee>32345</exchangeTicketFee> </airlineData>
Response to a Successful Request
<merchantReferenceCode>gZZE9w03mnzQef4ePI1CnJeu7e+d0lTRmBZOSpG6gheF3JyRat</merchantReferenceCode> <requestID>6859975187656465603010</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>USD</currency> </purchaseTotals> <ccCaptureReply> <reasonCode>100</reasonCode> <requestDateTime>2023-06-05T20:38:39Z</requestDateTime> <amount>50.00</amount> <reconciliationID>702412146IIXPP78</reconciliationID> </ccCaptureReply>

Capture an Ancillary Purchase

Ancillary purchases are any additional services, such as baggage, meals, and paid seats, your customers can purchase. Captures for ancillary purchases must be separate for captures for ticket purchases.
FDC Nashville Global
supports up to four ancillary purchases for each capture.

Capture Restrictions

When ancillary purchases are made at the same time as the ticket purchase,
Cybersource
recommends sending separate capture requests for the ticket and ancillary purchases.
When ancillary purchases are not made at the same time as the ticket purchase,
Cybersource
recommends sending separate authorization and capture requests for the ancillary and ticket purchases.

Endpoint

Set the
ccCaptureService_run
field to
true
.
Send the request to
https://ics2ws.ic3.com/commerce/1.x/transactionProcessor
.

Required Fields for an Airline Capture

Set to
true
.
Set to the
merchant_ref_number
field value used in the corresponding authorization request.

Ancillary Airline Fields

Choose from these optional ancillary airline fields to include in your capture request in addition to the required fields listed above.
FDC Nashville Global
supports up to four ancillary purchases for each capture.
Set to
C
for changing an existing ticket.
Set to
N
for a new ticket.
Replace the
#
character with a sequential number from
0
to
3
.
For a list of possible values, see Ancillary Service Category Codes.
Replace the
#
character with a sequential number from
0
to
3
.
For a list of possible values, see Ancillary Service Category Codes.

Simple Order
Example: Capturing an Airline Payment for Ancillary Purchases

Request
<merchantID>fdiglobal_cert_no_cbps</merchantID> <merchantReferenceCode>TLPANI6-28-1</merchantReferenceCode> <purchaseTotals> <currency>USD</currency> <taxAmount>3</taxAmount> <grandTotalAmount>50.00</grandTotalAmount> </purchaseTotals> <otherTax> <localTaxAmount>20</localTaxAmount> </otherTax> <ccCaptureService run="true"> <authRequestID>6841863354646003603681</authRequestID> <industryDatatype>airline</industryDatatype> </ccCaptureService> <ancillaryData> <ticketNumber>Ticket15CharMax</ticketNumber> <passengerName>AncillaryNameMax20ch</passengerName> <connectedTicketNumber>CONNTICKET12345</connectedTicketNumber> <service id="0"> <categoryCode>S1</categoryCode> <subcategoryCode>SSC1</subcategoryCode> </service> <service id="1"> <categoryCode>S2</categoryCode> <subcategoryCode>SSC2</subcategoryCode> </service> <service id="2"> <categoryCode>S3</categoryCode> <subcategoryCode>SSC3</subcategoryCode> </service> </ancillaryData>
Response to a Successful Request
<replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.142"> <merchantReferenceCode>gZZE9w03mnzQef4ePI1CnJeu7e+d0lTRmBZOSpG6gheF3JyRat</merchantReferenceCode> <requestID>6860000963746172003008</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>USD</currency> </purchaseTotals> <ccCaptureReply> <reasonCode>100</reasonCode> <requestDateTime>2023-06-05T21:21:36Z</requestDateTime> <amount>50.00</amount> <reconciliationID>702280502IIXTJA7</reconciliationID> </ccCaptureReply> </replyMessage>

Issue a Follow-On Credit

This section describes how to process an airline follow-on credit, which requires you to have the transaction ID from the original payment.

Endpoint

Set the
ccCreditService_run
field to
true
.
Send the request to
https://ics2ws.ic3.com/commerce/1.x/transactionProcessor
.

Required Fields for an Airline
Follow-On Credit

Include these fields to process an airline
follow-on credit
.
Set to
true
.
Set to the
merchant_ref_number
field value used in the corresponding capture request.

Optional Fields for an Airline
Follow-On Credit

Choose from these optional fields to include additional information when processing an airline
follow-on credit
.
airlineData_clearingCount
airlineData_clearingSequence
airlineData_totalClearingAmount
Set to one of these possible values:
  • A
    : Passenger transport ancillary fee cancellation
  • B
    : Airline ticket and passenger transport ancillary fee cancellation
  • C
    : Airline ticket cancellation
  • O
    : Other
  • P
    : Partial refund of airline ticket

Simple Order API
Example: Processing an Airline
Follow-On Credit

Request
<merchantID>fdiglobal_cert_no_cbps</merchantID> <merchantReferenceCode>TLPANI6-28-1</merchantReferenceCode> <purchaseTotals> <currency>USD</currency> <taxAmount>3</taxAmount> <grandTotalAmount>50.00</grandTotalAmount> </purchaseTotals> <otherTax> <localTaxAmount>20</localTaxAmount> </otherTax> <ccCreditService run="true"> <captureRequestID>6897061702136732503007</captureRequestID> <industryDatatype>airline</industryDatatype> </ccCreditService> <airlineData> <agentName>Thomascook</agentName> <ticketNumber>asd23</ticketNumber> <passengerName>John</passengerName> <customerCode>LDTYOU789</customerCode> <totalFee>100</totalFee> <leg id="0"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>20.00</fee> <tax>5.00</tax> </leg> <leg id="1"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>20.00</fee> <tax>5.00</tax> </leg> <leg id="2"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>20.00</fee> <tax>5.00</tax> </leg> <leg id="3"> <carrierCode>AA</carrierCode> <originatingAirportCode>PDX</originatingAirportCode> <class>1</class> <stopoverCode>O</stopoverCode> <departureDate>20231010</departureDate> <destination>SJ</destination> <exchangeTicket>tickeT12</exchangeTicket> <endorsementsRestrictions>Endorsement123456789</endorsementsRestrictions> <fee>20.00</fee> <tax>5.00</tax> </leg> <planNumber>2B</planNumber> <exchangeTicketAmount>87654</exchangeTicketAmount> <exchangeTicketFee>32345</exchangeTicketFee> </airlineData>
Response to a Successful Request
<merchantReferenceCode>Postman-1689706432</merchantReferenceCode> <requestID>6897064319436878203011</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>USD</currency> </purchaseTotals> <ccCreditReply> <reasonCode>100</reasonCode> <requestDateTime>2023-07-18T18:53:52Z</requestDateTime> <amount>50.00</amount> <reconciliationID>75566045FK6J767C</reconciliationID> </ccCreditReply>

Airline Data Reference Information

This section contains reference information that is useful when using Airline Data.

Airline Document Type Codes

To indicate the purpose of a purchase, set the
airlineData_documentType
field to a value listed in the Code column.
Airline Document Type Codes
Code
Description
01
Passenger ticket
02
Additional collection
03
Excess baggage
04
Miscellaneous charge order (MCO) or prepaid ticket authorization
05
Special service ticket
06
Supported refund
07
Unsupported refund
08
Lost ticket application
09
Tour order voucher
10
Ticket by mail
11
Undercharge adjustment
12
Group ticket
13
Exchange adjustment
14
SPD or air freight
15
In-flight adjustment
16
Agency passenger ticket
17
Agency tour order or voucher
18
Agency miscellaneous charge order (MCO)
19
Agency exchange order
20
Agency group ticket
21
Debit adjustment for duplicate refund or use
22
In-flight merchandise order
23
Catalogue merchandise order
24
In-flight phone charges
25
Frequent flyer fee or purchase
26
Kennel charge
27
Animal transportation charge
28
Firearms case
29
Upgrade charge
30
Credit for unused transportation
31
Credit for class of service adjustment
32
Credit for denied boarding
33
Credit for miscellaneous refund
34
Credit for lost ticket refund
35
Credit for exchange refund
36
Credit for overcharge adjustment
37
Credit for multiple Unused tickets
38
Exchange order
39
Self-service ticket
41
In-flight duty-free purchase
42
Senior citizen discount booklets
43
Club membership fee
44
Coupon book
45
In-flight charges
46
Tour deposit
47
Frequent flyer overnight delivery charge
48
Frequent flyer fulfillment
49
Small package delivery
50
Vendor sale
51
Miscellaneous taxes or fees
52
Travel agency fee
60
Vendor refund or credit
64
Duty free sale
65
Preferred seat upgrade
66
Cabin upgrade
67
Lounge or club access or day pass
68
Agent assisted reservation or ticketing fee
69
Ticket change or cancel fee
70
Trip insurance
71
Unaccompanied minor
72
Standby fee
73
Curbside baggage
74
In-flight medical equipment
75
Ticket or pass print fee
76
Checked sporting or special equipment
77
Dry ice fee
78
Mail or postage fee
79
Club membership fee or temporary trial
80
Frequent flyer activation or reinstatement
81
Gift certificate
82
Onboard or in-flight prepaid voucher
83
Optional services fee
84
Advance purchase for excess baggage
85
Advance purchase for preferred seat upgrade
86
Advance purchase for cabin upgrade
87
Advance purchase for optional services
88
Wi-Fi
89
Packages
90
In-flight entertainment or internet access
91
Overweight bag fee
92
Sleep sets
93
Special purchase fee

Ancillary Service Category Codes

To indicate the service provided in an ancillary purchase, set the
ancillaryData_service_#_categoryCode
and
ancillaryData_service_#_subcategoryCode
fields to a value listed in the Ancillary Service Category Code column.
Ancillary Service Category Codes
Ancillary Service Category Codes
Description
BF
Bundled service
BG
Baggage fee
CF
Change fee
CG
Cargo
CO
Carbon offset
FF
Frequent flyer
GF
Gift card
GT
Ground transport
IE
In-flight entertainment
LG
Lounge
MD
Medical
ML
Meal or beverage
OT
Other
PA
Passenger assist fee
PT
Pets
SA
Seat fees
SB
Standby
SF
Service fee
ST
Store
TS
Travel service
UN
Unaccompanied travel
UP
Upgrades
WI
Wi-Fi

Relaxed Requirements for Address Data and Expiration Date in Payment Transactions

With relaxed requirements for address data and the expiration date, not all standard payment request fields are required. It is your responsibility to determine whether your account is enabled to use this feature and which fields are required.