The EMD Exchange (TKT_ExchangeRefundRQ) API is used to exchange an EMD-A for another EMD-A, an ET for one single EMD-S, a GDS/airline EMD for an ET, and calculates exchange pricing.
What is it?
The EMD Exchange API is a SOAP-based service that can exchange:
- Electronic Miscellaneous Document Associated (EMD-A) for another EMD-A
- Electronic Ticket (ET) for a single EMD Stand-Alone (EMD-S)
- Global Distribution System (GDS)/airline EMD for an ET, with the following features:
- Can be with or without a Refundable Balance EMD-S
- Prices and processes air ticket refunds
- Performs an air ticket even exchange after a planned airline schedule change
With EMD Exchange, you can also perform price calculations for EMD-to-EMD exchanges or EMD-to-ET exchanges.
Packaged within a single API, EMD Exchange contains the following services:
- Sabre Automated Refunds
- Sabre Schedule Change
- Sabre EMD Exchange
Note: A TJR update is required to use these services for refunds and exchange scheduling. However, a TJR update is not required to use these services for EMD exchanges.
Why use it?
EMD-A to EMD-A exchanges
Today, travelers must contact the carrier when an agency-issued EMD-A exchange is needed. With the introduction of this API, agencies can now service the customer directly.
An EMD exchange is needed for:
- A voluntary or involuntary change to the itinerary, resulting in the need to exchange an Electronic Ticket. When a flight is canceled, Air Extras are automatically canceled; however, there is no automatic action to take on the EMD document and the EMD will retain its value. With the introduction of this service, if the passenger desires to re-book the ancillary as well, the agency can book a new Air Extra item, complete the Ticket exchange, and then exchange the existing EMD as payment for the new Air Extra item.
- The traveler wants to apply the value of previously purchased services toward the purchase of new ancillaries.
ET to EMD-S exchanges
These exchanges are needed to transfer ticket values to an EMD that will be used as future value toward a new ticket.
EMD (A or S) to ET exchanges
Note: The following is true whether the exchange is performed with or without a Refundable Balance EMD-S.
An EMD-to-ET exchange is needed to transfer the EMD value to a new ticket. This EMD can be a GDS or airline-issued EMD-A or EMD-S.
In some cases, if the EMD was the result of an ET-to-EMD-S exchange where the value of the ET was transferred to an EMD-S, the EMD-S might be of higher value than the ET created after the EMD-to-ET exchange. In this case, a Refundable Balance EMD-S will be created for the residual value.
How does it work?
There are two ways to make a request. For EMD-to-EMD, ET-to-EMD, and EMD-to-ET (with Refundable Balance EMD-S) exchanges:
- Exchange Fulfillment
For exchange calculation summaries related to EMD-to-EMD and EMD-to-ET exchanges:
- Exchange Calculation Summary
Refer to the artifacts under the Resources tab for full Exchange Fulfillment and Exchange Calculation Summary schema documentation and code samples.
How to use
For detailed instructions, refer to the EMD Exchange API User Guide in the Help tab above.
Request
Refer to the table below to request either an Exchange Calculation Summary or an Exchange Fulfillment:
Element | Attribute | Description |
---|---|---|
POS.Company |
Required The 2-digit GDS code. Can be: 1S (Sabre TN), 1B (Sabre TN APAC), or 1F (INFINI) Example: 1S |
|
POS.Pseudo |
Required Sabre/INFINI pseudo city code. Example: 1Z1Z |
|
TransactionInfo | requestType |
Required Identifies the type of request to be made. Enter EmdToEtktPriceComparison to request an EMD-to-ET exchange Price Calculation Summary response. This does not fulfill the exchange. Enter Fulfill to request an EMD-to-EMD Exchange Fulfillment response. When used, the system will generate the new EMD, but not return the price comparison data. Refer to the Exchange Fulfillment optional qualifiers section below for more. Enter EtktToEmdExchange to request an ET-to-EMD Exchange Fulfillment response. Enter EmdToEtktExchange to request an EMD-to-ET Exchange Fulfillment response. |
TransactionInfo.TicketingDocument |
Required The EMD number being exchanged. Can also be the ET number in the event of an ET-to-EMD exchange. |
|
TransactionInfo.TicketingDocument.TicketReference |
Required The 1-2 digit Ticket Reference number from the *T field of the PNR. Example: 3 |
|
TransactionInfo.Reservation.AirExtra |
Required for EMD-to-EMD and ET-to-EMD exchanges The 1-3 digit Air Extra Number for the service(s) being fulfilled with the exchange transaction. May be repeated if you wish to fulfill more than one (1) Air Extra with the exchange transaction. Example: 2 |
|
TransactionInfo.Reservation.Name |
Required The traveler’s name reference number. This field is optional, but it is required by the background systems when the PNR contains more than one name. |
|
TransactionInfo.Reservation.PriceQuote |
Required The 1-3 digit PQ for the ET being fulfilled with the exchange transaction. Example: 2 |
|
TransactionInfo.Options.EmdToEtktExchange.TravellerName |
Required - Airline EMD-to-ET exchanges The name of the EMD owner in LastName/FirstName format. |
Exchange Fulfillment optional qualifiers
The following elements and attributes are optional qualifiers when making an Exchange Fulfillment request that are used in addition to the elements and attributes listed above. Refer to the artifacts under the Resources tab for full schema documentation.
Element | Attribute | Description |
---|---|---|
Fulfill.Commission.Commission |
If the EMD Exchange is an additional collection, and that additional collection is commissionable, specify the add/collect commission with these elements. | |
Fulfill.Commission.Commission.Amount | The monetary amount of the commission. | |
Fulfill.Commission.Commission.Percent | The percentage of the commission. | |
Fulfill.Commission.NewTicketFullCommission | For use in ARC locations only. If the agent took commission on the old EMD, include that commission plus any commission on an additional collection with this element. Always expressed as an amount. | |
Fulfill.Payment | Use with additional collection exchanges to show how the amount due was paid for. | |
Fulfill.Payment.Card | Contains payment card information. | |
vendorCode |
The two-character credit card vendor code. Example: AX |
|
number | The payment card number. | |
expireDate | The expiration date of the payment card. | |
manualApprovalCode | Use if you have manually obtained the credit card approval code. When used, the internal automated system credit card authorization code will not be invoked. | |
Fulfill.Payment.ReservationFOP | If your agency uses the TJR option PNAPNR, and stores the form of Payment in the *FOP field, include the *FOP reference number with this element. | |
Fulfill.Payment.Virtual | If your agency accepts Virtual Credit Card payments and has an account with Conferma, use the traveler’s CAC code with this element. | |
Fulfill.Payment.Miscellaneous | If your agency uses Miscellaneous FOP, the Sabre green screen #MS qualifier, include the miscellaneous information (a string) with this element. | |
EmdToEtktExchange.InhibitRefundableBalance |
EMD-to-ET exchanges only If true, inhibits the generation of a Refundable Balance EMD-S. The residual value will be forfeited. Can be true or false. |
|
EmdToEtktExchange.AllowDuplicateDocument |
EMD-to-ET exchanges only If true, generates a duplicate ET after an exchange if the PNR already had an ET. Can be true or false. |
Response Structure
Refer to the tables below for both Exchange Calculation Summary and Exchange Fulfillment response documentation:
Exchange Calculation Summary
Element | Attribute | Description |
---|---|---|
BaseComparison.Old | Provides the value of the EMD presented for exchange. | |
BaseComparison.New | Provides the cost of the Air Extra(s) to be fulfilled with the exchange. | |
BaseComparison.Difference | Provides the difference in price between the EMD to be exchanged and the Air Extra items to be fulfilled. | |
PriceComparison.ResidualAmount | If the exchange is fulfilled, provides the residual amount forfeited. | |
currencyCode | Currency code of the residual amount. | |
decimalPlaces | Decimal places in the currency code of the residual amount. |
Exchange Fulfillment
Element | Attribute | Description |
---|---|---|
Results.Success | Identifies whether the request was successful or not. | |
TransactionInfo | Contains all details of the exchange transaction. | |
reservationAutoEndProcessed | If true, the agency has the TJR option for AUTOEND active. Can be true or false. | |
reservationAutoRetrievedProcessed | If true, the agency has the TJR option for AUTOER active. Can be true or false. | |
Message |
Repeatable element that sends the success response a user would normally see in Sabre greenscreen for the same transaction. Contains the invoice number issued at the time of the end transaction following a fulfillment transaction. If the exchange was an additional collection, with a Credit Card form of payment, the CC approval code will be sent in this element. Example: OK 18.00 Y76623 |
|
type |
Can be E for Exchange or I for Invoice. |
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<ns1:MessageHeader
xmlns:ns1="http://www.ebxml.org/namespaces/messageHeader" ns1:version="">
<ns1:From>
<ns1:PartyId>999999</ns1:PartyId>
</ns1:From>
<ns1:To>
<ns1:PartyId>123123</ns1:PartyId>
</ns1:To>
<ns1:CPAId>IPCC</ns1:CPAId>
<ns1:ConversationId>ABC123</ns1:ConversationId>
<ns1:Service>TKT_ExchangeRefundRQ</ns1:Service>
<ns1:Action>TKT_ExchangeRefundRQ</ns1:Action>
<ns1:MessageData>
<ns1:MessageId/>
<ns1:Timestamp/>
</ns1:MessageData>
</ns1:MessageHeader>
<ns1:Security
xmlns:ns1="http://schemas.xmlsoap.org/ws/2002/12/secext">
<ns1:BinarySecurityToken>Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/STSA!ICESMSLB\/STS.LB!1591195272769!343!9</ns1:BinarySecurityToken>
</ns1:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ExchangeEmdRQ xmlns="http://www.sabre.com/ns/Ticketing/ExchangeRefund/1.0"
xmlns:ns2="http://www.sabre.com/ns/Ticketing/TTL/1.0"
version="1.8.0">
<Header>
<ns2:DiagnosticData>WEMDX0454408292816*PQ2-BOSE/SOUMEN$EXEE</ns2:DiagnosticData>
</Header>
<POS>
<ns2:Company>1S</ns2:Company>
<ns2:Pseudo>WY79</ns2:Pseudo>
</POS>
<TransactionInfo requestType="EmdToEtktExchange">
<TicketingDocument>
<Number>0454408292816</Number>
</TicketingDocument>
<Reservation>
<PriceQuote>2</PriceQuote>
</Reservation>
<Options>
<EmdToEtktExchange>
<InhibitRefundableBalance>false</InhibitRefundableBalance>
<AllowDuplicateDocument>false</AllowDuplicateDocument>
<TravellerName>BOSE/SOUMEN</TravellerName>
</EmdToEtktExchange>
</Options>
</TransactionInfo>
</ExchangeEmdRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<soap-env:Envelope
xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<eb:MessageHeader
xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" eb:version="1.0" soap-env:mustUnderstand="1">
<eb:From>
<eb:PartyId eb:type="URI">123123</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="URI">999999</eb:PartyId>
</eb:To>
<eb:CPAId>IPCC</eb:CPAId>
<eb:ConversationId>ABC123</eb:ConversationId>
<eb:Service>TKT_ExchangeRefundRQ</eb:Service>
<eb:Action>TKT_ExchangeRefundRS</eb:Action>
<eb:MessageData>
<eb:MessageId>1115492528964670150</eb:MessageId>
<eb:Timestamp>2020-06-03T14:41:53</eb:Timestamp>
</eb:MessageData>
</eb:MessageHeader>
<wsse:Security
xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/STSA!ICESMSLB\/STS.LB!1591195272769!343!9</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<ns2:ExchangeEmdRS xmlns:ns2="http://www.sabre.com/ns/Ticketing/ExchangeRefund/1.0" xmlns="http://www.sabre.com/ns/Ticketing/TTL/1.0" version="1.8.0">
<ns2:Header messageID="AADSD1B9RG3-43516-1926056330-1685625173180-1-arex" timeStamp="2023-06-01T18:42:00.000">
<OrchestrationID>AADSD1B9RG3-43516-1926056330-1685625173180-1-arex</OrchestrationID>
<Results>
<Success>
<System>TKT-DS</System>
<Source>AREX</Source>
</Success>
</Results>
</ns2:Header>
<ns2:TransactionInfo reservationAutoEndProcessed="false" reservationAutoRetrieveProcessed="false" wnEarlyBirdEmdExchange="false">
<ns2:Message type="I">OK 0.00</ns2:Message>
<ns2:Message type="I">ETR EXCHANGE PROCESSED</ns2:Message>
<ns2:Message type="I">OK 6.6</ns2:Message>
</ns2:TransactionInfo>
</ns2:ExchangeEmdRS>
</soap-env:Body>
</soap-env:Envelope>