Overview
The Nuvei External Authorization Payment Solution is an innovative market leading solution for authorizing, validating and settling airline tickets orders.
This guide describes the integration steps of the Nuvei External Authorization Payment Solution into the payment flow of a GDS-based (Global Distribution System) airline ticket system (or any equivalent system).
The intended audience is “Operational Hub Service Providers”, who support the systems which interface between travel agents and a GDS, specifically to facilitate airline ticket payments.
Prerequisites and Notes
- The integration assumes that the GDS (Global Distribution System) (or any equivalent system) is configured to send payment authorization requests directly to the relevant card schemes.
- Currently, only Mastercard and VISA card payments are supported.
- Verify with Nuvei that all participating airlines (that you intend to make payments to), are registered as “Merchants” in the Nuvei system, and are configured for this flow.
- Contact Nuvei Support for further guidance with this integration.
Airline Ticket Payment Flow
The Nuvei External Authorization Payment Solution consists of these steps:
1. Authorizing the Payment
The flow begins when:
- Travel agents capture airline tickets orders into a GDS (or any equivalent system).
- The GDS sends payment authorization requests directly to the relevant card schemes.
- The card schemes process the requests and return “authorized” payment transactions responses to the GDS.
2. Validate Each Transaction
To validate the “authorized” payment transactions returned to the GDS from the card schemes, the “Operational Hub Service Provider” should perform the following steps:
- Extract each individual “authorized” payment transaction from the response returned to the GDS.
- For each individual transaction, send a “dummy”
/payment
request to Nuvei for validation, as follows:
Send a “dummy”/payment
request with its mandatory parameters, and include:"transactionType":"Auth"
- The
airlines
addendum
– For parameter details, see the topic. - The
externalAuthorizationData
addendum
– This contains the payment authorization details.
– For parameter details, see below.externalAuthorizationData
Addendum ParametersParameter Mandatory/Optional Allowed Chars /
ExampleApprovalCode
String(6)
This is the payment approval/authorization code provided by the card scheme.M A-Z, a-z, 0-9, spaces
Example: ABC123FormOfPaymentTransactionIdentifier
VISA: Exactly 21 chars
MC: Exactly 15 charsO A-Z, a-z, 0-9, spaces
VISA Example:
"301200200810891 F "
MC Example:
"MJX1234562109"CardVerificationValueResult
String(1)VISA: M
MC: OA-Z, a-z, 0-9, spaces
Example: M, NSourceOfApprovalCode
String(1)O Only: "M", "C", " " (space) DateOfIssue
String(6)M 0-9 "YYMMDD"
Example: 190721TimeOfIssue
String(4)M 0-9 "HHMM"
Example: 1434BSPCountryCode
String(2)M 2-letter ISO code
A-Z, a-z
Example: AT, ITRetrievalReferenceNumber
String(12)O If empty set to: "000000000000" (12 zeros)
Example: 120005100147SystemTraceAuditNumber
String(6)O If empty set to: "000000" (6 zeros)
Example: 100148AdditionalCardPaymentDataVisa VISA: M AdditionalCardPaymentDataVisa
.PointOfServiceEntryModeCode
String(2)VISA: M 0-9
Example: 10AdditionalCardPaymentDataVisa
.CardSequenceNumber
String(3)VISA: O 0-9, spaces
Example: 002AdditionalCardPaymentDataVisa
.PointOfServiceEntryConditionCode
String(2)VISA: M 0-9
Example: 51AdditionalCardPaymentDataVisa
.ResponseCode
String(2)VISA: M Only "00"
("00" means approved)AdditionalCardPaymentDataVisa
.AdditionalPOSInformationVISA: M AdditionalPOSInformation
.TerminalType
String(1)VISA: M 0-9
Example: 0, 5AdditionalPOSInformation
.TerminalEntryCapability
String(1)VISA: M 0-9
Example: 9AdditionalPOSInformation
.ChipConditionCode
String(1)VISA: O 0-9, spaces
Example: 0AdditionalPOSInformation
.SpecialConditionIndicator
String(1)VISA: O 0-9, spaces
Example: 0AdditionalPOSInformation
.ChipTransactionIndicator
String(1)VISA: O 0-9, spaces
Example: 0, " "AdditionalPOSInformation
.ChipCardAuthenticationReliabilityIndicator
String(1)VISA: O 0-9, spaces
Example: 0, " "AdditionalPOSInformation
.CardholderIDMethodIndicator
String(1)VISA: M 0-9
Example: 4AdditionalCardPaymentDataVisa
.AuthorisationCharacteristicsIndicator
String(1)VISA: O A-Z, a-z, 0-9, spaces
(For a "space", insert null - to avoid transmission issues.)
Example: EAdditionalCardPaymentDataMC MC: M AdditionalCardPaymentDataMC
.PointOfServiceEntryMode
String(3)MC M 0-9
Example: 012AdditionalCardPaymentDataMC
.CardSequenceNumber
String(3)MC: O 0-9, spaces
Example: 004AdditionalCardPaymentDataMC
.POSTerminalAttendance
String(1)MC: M 0-9
Example: 1AdditionalCardPaymentDataMC
.POSTerminalLocation
String(1)MC: M 0-9
Example: 2AdditionalCardPaymentDataMC
.POSCardholderPresence
String(1)MC: M 0-9
Example: 5AdditionalCardPaymentDataMC
.POSCardPresence
String(1)MC M 0-9
Example: 1AdditionalCardPaymentDataMC
.POSCardCaptureCapabilities
String(1)MC M 0-9
Example: 0AdditionalCardPaymentDataMC
.POSTransactionStatus
String(1)MC: M 0-9
Example: 0AdditionalCardPaymentDataMC
.POSTransactionSecurity
String(1)MC: M 0-9
Example: 0AdditionalCardPaymentDataMC
.CardholderActivatedTerminalLevel
String(1)MC: M 0-9
Example: 6AdditionalCardPaymentDataMC
.POSCardDataTerminalInputCapabilityIndicator
String(1)MC: M 0-9
Example: 1AdditionalCardPaymentDataMC
.POSAuthorisationLifecycle
String(2)MC: M 0-9, spaces Example
externalAuthorizationData
Addendum – for Mastercard{ "ApprovalCode":"ABC123", "FormOfPaymentTransactionIdentifier":"MJX1234562109", "CardVerificationValueResult":"M", "SourceOfApprovalCode":"V", "DateOfIssue":"190721", "TimeOfIssue":"1542", "BSPCountryCode":"IT", "RetrievalReferenceNumber":"120005100147", "SystemTraceAuditNumber":"100148", "AdditionalCardPaymentDataMC":{ "PointOfServiceEntryMode":"012", "CardSequenceNumber":" ", "POSTerminalAttendance":"1", "POSTerminalLocation":"2", "POSCardholderPresence":"5", "POSCardPresence":"1", "POSCardCaptureCapabilities":"0", "POSTransactionStatus":"0", "POSTransactionSecurity":"0", "CardholderActivatedTerminalLevel":"6", "POSCardDataTerminalInputCapabilityIndicator":"1", "POSAuthorisationLifecycle":"00" } }
Example
externalAuthorizationData
Addendum – for VISA{ "ApprovalCode":"ABC123", "FormOfPaymentTransactionIdentifier":"301200200810891 F ", "CardVerificationValueResult":"M", "SourceOfApprovalCode":"V", "DateOfIssue":"190721", "TimeOfIssue":"1542", "BSPCountryCode":"IT", "RetrievalReferenceNumber":"120005100147", "SystemTraceAuditNumber":"100148", "AdditionalCardPaymentDataVisa":{ "PointOfServiceEntryModeCode":"10", "CardSequenceNumber":" ", "PointOfServiceEntryConditionCode":"51", "ResponseCode":"00", "AdditionalPOSInformation":{ "TerminalType":"0", "TerminalEntryCapability":"9", "ChipConditionCode":" ", "SpecialConditionIndicator":" ", "ChipTransactionIndicator":" ", "ChipCardAuthenticationReliabilityIndicator":" ", "CardholderIDMethodIndicator":"4" }, "AuthorisationCharacteristicsIndicator":" " } }
Full Example of a “Dummy”
/payment
Request withairlines
andexternalAuthorizationData
Addendums{ "merchantId":"457624152332906628", "merchantSiteId":"199186", "clientRequestId":"56402ab8-9795-41b3-b18d-1042178e1fab", "clientUniqueId":"8389548603089", "timeStamp":"20211012091404", "amount":"200", "currency":"CAD", "sessionToken":"4c9d422e-df34-4db6-a45d-5a06d920da46", "transactionType":"Auth", "billingAddress":{ "country":"CA" }, "deviceDetails":{ "ipAddress":"<customer's IP address>" }, "checksum":"5912dfca76ce05441e619c270fbaeeaba721047965bcf2a9df34805a7871561f", "paymentOption":{ "card":{ "cardNumber":"400002XXXXXX5864", "expirationMonth":"09", "expirationYear":"25" } }, "addendums":{ "externalAuthorizationData":{ "ApprovalCode":"067881", "FormOfPaymentTransactionIdentifier":"5812540765327192NZPS", "CardVerificationValueResult":"N", "SourceOfApprovalCode":null, "TimeOfIssue":"0000", "DateOfIssue":"210910", "BSPCountryCode":"CA", "RetrievalReferenceNumber":"211012091404", "SystemTraceAuditNumber":"339056", "AdditionalCardPaymentDataVisa":{ "PointOfServiceEntryModeCode":"01", "PointOfServiceEntryConditionCode":"08", "ResponseCode":"00", "AdditionalPOSInformation":{ "TerminalType":"0", "TerminalEntryCapability":"9", "CardholderIDMethodIndicator":"0", "ChipConditionCode":"0", "SpecialConditionIndicator":"0", "ChipTransactionIndicator":"0", "ChipCardAuthenticationReliabilityIndicator":"0" }, "AuthorisationCharacteristicsIndicator":"N" } }, "airlines":{ "reservationDetails":{ "passengerCount":1, "ticketNumber":"8389548603089", "travelAgencyCode":"66500280", "flightDateUTC":"2022-01-03 11:10:00", "issueDate":"2021-09-10 00:00:00" }, "passengerDetails":[ { "passengerName":"POBJOY/ELLIOT MR" } ], "flightLegDetails":[ { "legAirlineCode":"WS", "departureDate":"03JAN1110A", "arrivalDate":null, "departureAirport":"LGW", "destinationAirport":"YYZ", "type":null, "fareBasisCode":"SP0J3AES", "seatClass":"S", "serviceClass":"S", "stopOverCode":null } ] } }, "customData":"06788120211012" }
3. Settle the Payment
The Nuvei gateway identifies these airline ticket /payment
request as a “dummy” requests, and validates each transaction. Nuvei then returns the “validated” transactions to you.
To complete (settle) the payments, the “Operational Hub Service Provider” should send a /settleTransaction
request to Nuvei for each “valid” transaction, as follows:
Send a /settleTransaction
request (press the link for details) with its mandatory parameters, and include:
relatedTransactionId
: “<transactionId
returned from/payment
>“- Only send one request per passenger.