Travel industry message extension
On this page
Partners and merchants who operate in the travel industry can send travel-related data to the issuer (ACS) in the /authenticate
request. The issuer uses this data in risk-decisioning and determining the appropriate authentication response that it will send to the merchant. You can use the messageExtension
object in the /authenticate
request to send more information related to air travel, car rentals, hotel data, and travelers.
note
Only 3D Secure 2.1 and 2.2 support the message extension data. If the acctNumber
used for the transaction does not support 3D Secure 2, the 3DS Server returns an error.
Message extension object sample
This sample shows only the message extension elements for the travel industry. The extension consists of the following sections of data objects:
messageExtension
- core elements in a standard EMV® 3DS message extension objectdata
- elements specific to the travel industryair
- elements specific to air travelcar
- elements specific to car rentalshotel
- elements specific to hotelstravellers
- information about the travellers
To review a complete sample /authenticate
request,
"messageExtension": [
{
"name": "Travel Industry",
"id": "A000000802-002",
"criticalityIndicator": false,
"data": {
"agencyIndicator": "Y",
"air": {
"airlineTicketInfo": {
"currencyMismatchIndicator": "Y",
"ticketAmount": "75000",
"ticketCount": "03",
"ticketCurrency": "123"
},
"itineraryInfo": {
"flightIndicator": "01",
"segments": [
{
"departureAirport": "NCE",
"departureDate": "20200415",
"departureTime": "0930",
"arrivalAirport": "CDG",
"arrivalDate": "20200415",
"arrivalTime": "1030",
"operatingCarrier": "7S"
},
{
"departureAirport": "CDG",
"departureDate": "20200415",
"departureTime": "1130",
"arrivalAirport": "LHR",
"arrivalDate": "20200415",
"arrivalTime": "1150",
"operatingCarrier": "7S"
}
]
}
},
"car": {
"companyInfo": {
"name": "ABC Car Hire",
"email": "email@emailaddress.com",
"phone": {
"cc": "44",
"subscriber": "2087654321"
}
},
"reservationInfo": {
"currencyMismatchIndicator": "Y",
"amount": "10000",
"currency": "123",
"pickUpDate": "20200415",
"pickUpTime": "1300",
"pickUpLocation": {
"addrLine1": "123 Airport Road",
"addrCity": "Longford",
"addrPostCode": "TW61AP",
"addrCountry": "826"
},
"returnDate": "20200416",
"returnTime": "1230",
"returnLocation": {
"addrLine1": "123 Airport Road",
"addrCity": "Longford",
"addrPostCode": "TW61AP",
"addrCountry": "826"
},
"cars": [
{
"carRentalType": "01",
"carRentalInsuranceType": "01"
}
]
}
},
"hotel": {
"propertyInfo": {
"name": "EMV London Hotel",
"chainCode": "CHAIN123",
"propertyCode": "EMVLH",
"referenceCode": "REF123",
"addrLine1": "3 Domain Street",
"addrLine2": "Suite 100",
"addrCity": "London",
"addrPostCode": "SE10UG",
"addrCountry": "826",
"email": "email@emailaddress.com",
"phone": {
"cc": "44",
"subscriber": "2012345678"
}
},
"reservationInfo": {
"currencyMismatchIndicator": "Y",
"amount": "30000",
"currency": "123",
"checkInDate": "20200415",
"checkInTime": "1500",
"checkOutDate": "20200416",
"checkOutTime": "1100",
"rooms": [
{
"bedType": "01",
"roomOccupancy": "2",
"roomType": "05"
}
]
}
},
"travellers": [
{
"airlineLoyaltyStatus": "03",
"airlinePassengerIndicator": "Y",
"carRentalDriverIndicator": "Y",
"carRentalLoyaltyStatus": "02",
"hotelGuestIndicator": "Y",
"hotelLoyaltyStatus": "03",
"name": "John Smith",
"type": "ADT"
},
{
"airlineLoyaltyStatus": "02",
"airlinePassengerIndicator": "Y",
"carRentalDriverIndicator": "N",
"carRentalLoyaltyStatus": "01",
"hotelGuestIndicator": "Y",
"hotelLoyaltyStatus": "01",
"name": "Jane Smith",
"type": "ADT"
}
],
"version": "2.0"
}
}
]
note
The inclusion of the messageExtension
array is conditional in the /authenticate
request. But, if you include this array, then the following data elements are required: criticalityIndicator
, data
, id
, name
, and data.version
.
tip
If you are using the Web SDK demo application, you can copy the messageExtension
object sample to save time and modify the sample as required.
For field description of the messageExtension
object data elements, see the following tables:
Message extension object field details
Field Name | Description | Required | Length | Data Type |
---|---|---|---|---|
id | Assigned Extension Group Identifier A unique identifier for the extension.Valid value:A000000802-002 | Required | 14 | String |
criticalityIndicator | Criticality Indicator A Boolean value indicating whether the recipient must understand the contents of the extension to interpret the entire message.Valid value:False | Required | NA | Boolean |
data | Data The data carried in the extension.Valid value: See data object field details | Required | Max 8059 | object |
name | Extension Name The name of the extension data set as defined by the extension owner.Valid value:Travel Industry | Required | 15 | String |
Data object field details
Field Name | Description | Required | Length | Data Type |
---|---|---|---|---|
agencyIndicator | Agency indicator Whether transaction is initiated by a travel agency on behalf of a consumer.Valid value:Y If field is missing, the default is N | Optional | 1 | String |
air | Air travel data The data specific to air travel.Valid value: See air travel object field details | Optional | variable | Object |
car | car rental data The data specific to car rental reservations.Valid value: See car rental object field details | Optional | variable | Object |
hotel | Hotel data The data specific to hotel reservations.Valid value: See hotel object field details | Optional | variable | Object |
travellers | Travelers Information about the travellers on the itinerary.Valid value: See traveler object field details | Optional | variable | Object |
version | Version number Version number of the message extension.Valid value:2.0 | Required | 3 | String |
Air travel object field details
Field Name | Description | Required | Length | Data Type |
---|---|---|---|---|
airlineTicketInfo | Airline ticket information Information about the airline ticket being purchased. | Optional | Variable | Object |
itineraryInfo | Itinerary information Information about the flight itinerary. info_outline note The maximum number of air travel itineraries in a transaction is 1. | Optional | Variable | Object |
currencyMismatchIndicator | Currency mismatch indicator Currency used in the authorisation may differ from the currency for the authentication.Valid value:Y If field is missing, the default is N | Optional | 1 | String |
ticketAmount | Ticket amount Total amount of airline ticket(s) being purchased. For example, if two tickets are purchased at USD 250.41, the total ticket amount is USD 500.82. But, in the ticketAmount field, you wound enter the value as either: 50082 , 050082 , 0050082 . info_outline note If there are multiple items also being purchased with the airline ticket(s), then only the total amount of airline ticket(s) will be included. | Optional | Max 48 | String |
ticketCount | Ticket count Total count of airline ticket(s) being purchased. | Optional | 1-2 Numeric | String |
ticketCurrency | Ticket currency Currency in which ticket purchase amount is expressed.Valid value: ISO 4217 three-digit currency code | Optional | 3 Numeric | String |
flightIndicator | Flight indicator Indicator representing the type of flight on the itinerary.Valid value:
| Optional | 2 | Object |
segments | Segments Information about the flight segments on the itinerary.Valid value:open_in_newIATA Coding DirectoryLink opens new window or open_in_newIATA Airline and Location CodesLink opens new window | Optional | 3 | String |
arrivalAirport | Arrival airport The arrival airport of the flight segment. | Optional | Variable | Object |
arrivalDate | Arrival date The arrival date of the flight segment, in the local time of the arrival airport.Valid format:YYYYMMDD , where:
| Optional | 8 Numeric | String |
arrivalTime | Arrival time The arrival time of the flight segment, in the local time of the arrival airport.Valid format: 24-hour format (HHMM ), where:
| Optional | 4 Numeric | String |
departureAirport | Departure airport The departure airport of the flight segment.Valid value:open_in_newIATA Coding DirectoryLink opens new window or open_in_newIATA Airline and Location CodesLink opens new window | Optional | 3 | String |
departureDate | Departure date The departure date of the flight segment, in the local time of the departure airport.Valid format:YYYYMMDD , where:
| Optional | 8 | String |
departureTime | Departure time The departure time of the flight segment, in the local time of the departure airport.Valid format: 24-hour format (HHMM ), where:
| Optional | 4 Numeric | String |
operatingCarrier | Operating carrier The operating carrier (airline) of the flight segment.Valid value:open_in_newIATA Coding DirectoryLink opens new window or open_in_newIATA Airline and Location CodesLink opens new window | Optional | 2 | String |
Car rental object field details
Field Name | Description | Required | Length | Data Type |
---|---|---|---|---|
companyInfo | Car rental company information Information about the car rental company. | Optional | Variable | Object |
reservationInfo | Car rental reservation information Information about the car rental reservation. info_outline note The maximum number of car rental reservations in a transaction is 1. | Optional | Variable | Object |
name | Company name The name of the car rental company. | Optional | Max 50 | String |
email | Email addressThe email address of the car rental company.Valid value: Should meet requirements of open_in_newSection 3.4 of IETF RFC 5322Link opens new window | Optional | Max 254 | String |
phone | Phone number The phone number of the car rental company.Valid value: Country Code and Subscriber sections of the number represented by the following named fields:
| Optional | Variable
| Object |
currencyMismatchIndicator | Currency mismatch indicator Currency used in the authorisation may differ from the currency for the authentication.Valid value:Y If field is missing, the default is N | Optional | 1 | String |
amount | Reservation amount Total amount of the car rental reservation being purchased.Example: If purchase amount is USD 123.45, enter amount as either 12345, 012345, 0012345 | Optional | Max 48 | String |
currency | Reservation currency Currency in which the car rental reservation purchase amount is expressed.Valid value:open_in_newISO 4217 three-digit currency codeLink opens new window | Optional | 3 Numeric | String |
pickUpDate | Pick-up date The pick-up date of the car rental reservation, in the local time of the pick-up location.Valid format:YYYYMMDD , where:
| Optional | 8Numeric | String |
pickUpTime | Pick-up time The pick-up time of the car rental reservation, in the local time of the pick-up location.Valid format: 24-hour format (HHMM ), where:
| Optional | 4Numeric | String |
pickUpLocation | Pick-up location Information about the pick-up location on the car rental reservation. | Optional | Variable | Object |
returnDate | Return date The return date of the car rental reservation, in the local time of the return location.Valid format:YYYYMMDD , where:
| Optional | 8 Numeric | String |
returnTime | Return time The return time of the car rental reservation, in the local time of the return location.Valid format: 24-hour format (HHMM ), where:
| Optional | 4 Numeric | String |
returnLocation | Return location Information about the return location on the car rental reservation. | Optional | Variable | Object |
cars | Cars Information about the car(s) on the car rental reservation. | Optional | Variable | Object |
addrLine1 | Address Line 1 The first line of the address or equivalent local portion of the car rental pick-up or return location. | Optional | Max 50 | String |
addrLine2 | Address Line 2 The second line of the address or equivalent local portion of the car rental pick-up or return location. | Optional | Max 50 | String |
addrLine3 | Address Line 3 The third line of the address or equivalent local portion of the car rental pick-up or return location. | Optional | Max 50 | String |
addrCity | Address city The city of the address or equivalent local portion of the car rental pick-up or return location. | Optional | Max 50 | String |
addrState | Address state The state or province of the address or equivalent local portion of the car rental pick-up or return location.Valid value: Should be the country subdivision code defined in open_in_newISO 3166-2Link opens new window | Optional | Max 3 | String |
addrPostCode | Address postal code The ZIP or other postal code of the address or equivalent local portion of the car rental pick-up or return location. | Optional | Max 16 | String |
addrCountry | Address country The country of the address or equivalent local portion of the car rental pick-up or return location.Valid value:open_in_newISO 3166-1 three-digit country codeLink opens new window | Optional | 3 | String |
carRentalType | Car rental type The type of car in the car rental.Valid values:
| Optional | 2 | Object |
carRentalInsuranceType | Car rental insurance type The type of car insurance in the car rental.Valid values:
| Optional | 2 | Object |
Hotel object field details
Field Name | Description | Required | Length | Data Type |
---|---|---|---|---|
propertyInfo | Hotel property information Information about the hotel property. | Optional | Variable | Object |
reservationInfo | Hotel reservation information Information about the hotel reservation. info_outline note The maximum number of hotel reservations in a transaction is 1. | Optional | Variable | Object |
name | Hotel name The name of the hotel property. | Optional | Max 50 | String |
chainCode | Chain code The chain code of the hotel property. | Optional | TBD | String |
propertyCode | Property code The property code of the hotel property. | Optional | TBD | String |
referenceCode | Reference code The reference code of the hotel property. | Optional | TBD | String |
addrLine1 | Address Line 1 The first line of the address or equivalent local portion of the hotel property. | Optional | Max 50 | String |
addrLine2 | Address Line 2 The second line of the address or equivalent local portion of the hotel property. | Optional | Max 50 | String |
addrLine3 | Address Line 3 The third line of the address or equivalent local portion of the hotel property. | Optional | Max 50 | String |
addrCity | Address city The city of the address or equivalent local portion of the hotel property. | Optional | Max 50 | String |
addrState | Address state The state or province of the address or equivalent local portion of the hotel property.Valid value: Should be the country subdivision code defined in open_in_newISO 3166-2Link opens new window | Optional | Max 3 | String |
addrPostCode | Address postal code The ZIP or other postal code of the address or equivalent local portion of the hotel property. | Optional | Max 16 | String |
addrCountry | Address country The country of the address or equivalent local portion of the hotel property.Valid value:open_in_newISO 3166-1 three-digit country codeLink opens new window | Optional | 3 | String |
email | Email addressThe email address of the hotel property.Valid value: Should meet requirements of open_in_newSection 3.4 of IETF RFC 5322Link opens new window | Optional | Max 254 | String |
phone | Phone number The phone number of the hotel property.Valid value: Country Code and Subscriber sections of the number represented by the following named fields:
| Optional | Variable
| Object |
currencyMismatchIndicator | Currency mismatch indicator Currency used in the authorisation may differ from the currency for the authentication.Valid value:Y If field is missing, the default is N | Optional | 1 | String |
amount | Reservation amount Total amount of the hotel reservation being purchased.Example: If purchase amount is USD 123.45, enter amount as either 12345, 012345, 0012345 | Optional | Max 48 | String |
currency | Reservation currency Currency in which the car rental reservation purchase amount is expressed.Valid value:open_in_newISO 4217 three-digit currency codeLink opens new window | Optional | 3 Numeric | String |
checkInDate | Check-in date The check-in date of the hotel reservation, in the local time of the hotel.Valid format:YYYYMMDD , where:
| Optional | 8Numeric | String |
checkInTime | Check-in time The check-in time of the hotel reservation, in the local time of the hotel.Valid format: 24-hour format (HHMM ), where:
| Optional | 4Numeric | String |
checkOutDate | Check-out date The check-out date of the hotel reservation, in the local time of the hotel.Valid format:YYYYMMDD , where:
| Optional | 8 Numeric | String |
checkOutTime | Check-out time The check-in time of the hotel reservation, in the local time of the hotel.Valid format: 24-hour format (HHMM ), where:
| Optional | 4 Numeric | String |
rooms | Rooms Information about the room(s) on the hotel reservation. | Optional | Variable | Object |
bedType | Bed type The type of bed(s) in the hotel room.Valid values:
| Optional | 2 | Object |
roomOccupancy | Room occupancy The number of guests occupying the hotel room. | Optional | 1-2Numeric | String |
roomType | Room Type The type of hotel room.Valid values:
| Optional | 2 | Object |
Travellers object field details
Field Name | Description | Required | Length | Data Type |
---|---|---|---|---|
airlineLoyaltyStatus | Airline loyalty status Airline loyalty program level for the traveller on the airline itinerary.Valid values:
| Optional | 2 | Object |
airlinePassengerIndicator | Airline passenger indicator Whether traveller is a passenger in the airline itinerary.Valid value:Y If field is missing, the default is N | Optional | 1 | String |
carRentalDriverIndicator | Car rental driver indicator Whether traveller is a driver in the car rental reservation.Valid value:Y If field is missing, the default is N | Optional | 1 | String |
carRentalLoyaltyStatus | Car rental loyalty status Car rental loyalty program level for the traveller on the car reservation.Valid values:
| Optional | 2 | String |
hotelGuestIndicator | Hotel guest indicator Whether traveller is a guest in the hotel reservation.Valid value:Y If field is missing, the default is N | Optional | 1 | String |
hotelLoyaltyStatus | Hotel loyalty status Hotel loyalty program level for the traveller on the hotel reservation.Valid values:
| Optional | 2 | String |
name | Traveller Name Name of traveller on the itinerary. | Optional | 1-45 | String |
type | Traveller Type Type of traveller on the itinerary.Valid values:
| Optional | 3 | String |