Skip to main content

NDC IT OrderChange

Air
Reservation
REST API
Airline Carrier
Travel Agency
Try Now

What is it?

The OrderChange API is primarily designed to add or update any information within an order. It can also be used to fulfill an existing order.

OrderChange supports the following types of operations:

  • Modification of passenger details
  • Order fulfillment
  • Adding seats and paying for them instantly
  • Cancelling unpaid orders
  • Cancelling unpaid order items

Why use it?

The OrderChange API offers you the possibility to request various types of operations in different scenarios.

Order fulfillment:

  • Allows you to pay for a valid NDC order or order items that were created earlier.
  • Makes it possible to add seats for each passenger to an existing order and pay for them.

Updating passenger data:

  • Updates passenger information within an order, such as the contact number and email address.
  • Allows you to add, delete or modify contact numbers of passengers listed in an order.

Cancelling an unpaid order and order items:

  • Allows you to cancel an entire unpaid order or unpaid order items within an NDC order.
  • Supports cancellation of seats.
  • Retrieves the updated state of the order to confirm that the requested order items have been cancelled.

How it works

Order fulfillment

The OrderChange API executes the following steps to fulfill an order:

  1. Sends payment information, along with the order ID, to the payment provider. The provider processes payments and issues ticketing documents as well as EMDs for the requested order.
  2. Updates the order with the ticket number(s), coupon status, and payment details once the payment transaction is successful and the order is fulfilled.
  3. Returns the updated order in the response.

Note: Credit card is the only form of payment that is currently supported.

Adding seats and payment

To add seats to an order, the OrderChange API executes the following steps:

  1. Retrieves details of the requested seats, i.e. their column ID and row number.
  2. Calls downline services to reserve the selected seats.
  3. Calls the payment provider to collect payment if the seats are paid and payment information has been provided.
  4. Updates the order with seat details and payment information (if provided).
  5. Returns the updated order in the response.

Note: Credit card is the only form of payment that is currently supported.

Cancelling an unpaid order

The OrderChange API executes the following steps to cancel an entire unpaid order:

  1. Retrieves the offer to cancel using the OrderReshop offer ID provided in the request.
  2. Reads the order corresponding to the retrieved offer from its database.
  3. Cross-validates the offer against the order.
  4. Calls downline services to cancel the order.
  5. Updates the order with the following status codes:
    • Order status - CLOSED
    • Order item status - CANCELLED
    • Service status - CANCELLED
    • Service delivery status - REMOVED
  6. Returns the updated order in the response.

Cancelling unpaid order items

To cancel selected order items within an order, the OrderChange API executes the following steps:

  1. Retrieves the offer that includes the order items to cancel using the OrderReshop offer ID provided in the request.
  2. Reads the order corresponding to the retrieved offer from its database.
  3. Cross-validates the offer against the order.
  4. Calls downline services to cancel requested order items.
  5. Updates the requested order items with the following status codes:
    • Order item status - CANCELLED
    • Service status - CANCELLED
    • Service delivery status - REMOVED
  6. Returns the updated order in the response.

Note: After cancellation of the requested order items, the order remains in the OPEN status. Seats are the only type of order items whose cancellation is currently supported.

Modifying passenger details

To modify passenger details, i.e email addresses and phone numbers, the OrderChange API executes the following steps:

  1. Identifies the type of operation to perform on the contact details: Add, delete, or update.
  2. Calls downline services to perform that operation and modify the contact information in the order.
  3. Returns the updated order in the response.

Note: Contact details can be updated for one passenger per request.

How to use

POST /v21_3/orders/change

Request: IATA_OrderChangeRQ

Response: IATA_OrderViewRS

Fulfill an order

The code snippet below demonstrates a sample OrderChange request to fulfill an order. The mandatory elements to include are OrderID, OwnerCode, and PaymentFunctions.

<?xml version="1.0" encoding="UTF-8"?>
<IATA_OrderChangeRQ xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage" xmlns:ns2="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
  <!-- DistributionChain -->
    <Request>
        <ns2:Order>
            <ns2:OrderID>orderID</ns2:OrderID>
            <ns2:OwnerCode>X0</ns2:OwnerCode>
        </ns2:Order>
        <ns2:PaymentFunctions>
            <ns2:OrderAssociation>
                <ns2:OrderItemRefID>orderItemReferenceID</ns2:OrderItemRefID >
            </ns2:OrderAssociation>
            <ns2:PaymentMethodCriteria>
                <ns2:PaymentTypeCode>paymentTypeCode</ns2:PaymentTypeCode>
            </ns2:PaymentMethodCriteria>
            <ns2:PaymentProcessingDetails>
                <ns2:Amount CurCode="USD">000.00</ns2:Amount>
                <!-- Payer  -->
                <ns2:PaymentMethod>
                    <ns2:PaymentCard>
                        <ns2:CardBrandCode>cardBrandCode</ns2:CardBrandCode>
                        <ns2:CardholderAddress>
                          <ns2:BuildingRoomText>addressDetails</ns2:BuildingRoomText>
                          <ns2:CityName>cityName</ns2:CityName>
                          <ns2:ContactTypeText>HomeAddress</ns2:ContactTypeText>
                          <ns2:CountryCode>countryCode</ns2:CountryCode>
                          <ns2:CountrySubDivisionName>SubDivision</ns2:CountrySubDivisionName>
                          <ns2:PO_BoxCode>postOfficeCode</ns2:PO_BoxCode>
                          <ns2:PostalCode>postalCode</ns2:PostalCode>
                          <ns2:StreetText>streetDetails</ns2:StreetText>
                        </ns2:CardholderAddress>
                        <ns2:CardHolderName>cardHolderName</ns2:CardHolderName>
                        <ns2:CardSecurityCode>cardSecurityCode</ns2:CardSecurityCode>
                        <ns2:ExpirationDate>expirationDate</ns2:ExpirationDate>
                        <ns2:CardNumber>cardNumber</ns2:CardNumber>
                    </ns2:PaymentCard>
                </ns2:PaymentMethod>
                <ns2:PaymentRefID>paymentReferenceID</ns2:PaymentRefID>
            </ns2:PaymentProcessingDetails>
        </ns2:PaymentFunctions>
    </Request>
</IATA_OrderChangeRQ>

Add seats

Follow the steps below to add seats to your order:

  1. Call the SeatAvailability API to receive a seat map for the requested OrderID.
  2. Find the OfferItemRefId of your desired seats in the SeatAvailability response.
  3. Send a request to the OrderChange API.

The code snippet below demonstrates a sample OrderChange request to add seat, with the mandatory OrderID, OfferRefID, OfferItemRefID, and OwnerCode.

<?xml version="1.0" encoding="UTF-8"?>
<IATA_OrderChangeRQ xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage"
                    xmlns:ns2="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes"
                    xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
  <!-- DistributionChain -->
  <Request>
    <ns2:Order>
      <ns2:OrderID>orderID</ns2:OrderID>
      <ns2:OwnerCode>X0</ns2:OwnerCode>
    </ns2:Order>
    <ns2:ChangeOrderChoice>
      <ns2:AcceptSelectedQuotedOfferList>
        <ns2:SelectedPricedOffer>
          <ns2:OfferRefID>offerRefID</ns2:OfferRefID>
          <ns2:SelectedOfferItem>
            <ns2:OfferItemRefID>offerItemReferenceID</ns2:OfferItemRefID>
            <ns2:PaxRefID>passengerReferenceID</ns2:PaxRefID>
            <ns2:SelectedSeat>
              <ns2:ColumnID>seatColumn</ns2:ColumnID>
              <ns2:SeatRowNumber>seatRowNumber</ns2:SeatRowNumber>
            </ns2:SelectedSeat>
          </ns2:SelectedOfferItem>
          <ns2:OwnerCode>X0</ns2:OwnerCode>
        </ns2:SelectedPricedOffer>
      </ns2:AcceptSelectedQuotedOfferList>
    </ns2:ChangeOrderChoice>
  </Request>
</IATA_OrderChangeRQ>

Cancel an unpaid order

To cancel an unpaid order, follow the steps below:

  1. Call the OrderReshop API to receive a reshop offer ID, providing the OrderID in your request.
  2. Send a request to the OrderChange API once you receive a response from OrderReshop.

The code snippet below presents a sample OrderChange request to cancel an entire unpaid order. The required elements to provide are OrderID, OfferID, and OwnerCode.

<?xml version="1.0" encoding="UTF-8"?>
<IATA_OrderChangeRQ xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage" xmlns:ns2="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
  <!-- DistributionChain -->
  <Request>
    <ns2:Order>
      <ns2:OrderID>X0XXXDPCDMZZ0</ns2:OrderID>
      <ns2:OwnerCode>X0</ns2:OwnerCode>
    </ns2:Order>
    <ns2:ChangeOrderChoice>
      <ns2:AcceptCancelledOffer>
        <ns2:OfferID>dg0079ccc4dckpszflkqcssdk0</ns2:OfferID>
        <ns2:OwnerCode>X0</ns2:OwnerCode>
      </ns2:AcceptCancelledOffer>
    </ns2:ChangeOrderChoice>
  </Request>
</IATA_OrderChangeRQ>

Cancel unpaid order items

To cancel unpaid order items, follow the steps below:

  1. Call the OrderReshop API to receive a reshop offer ID, providing the OrderID in your request.
  2. Send a request to the OrderChange API once you receive a response from OrderReshop.

The code snippet below presents a sample OrderChange request to cancel specified order items. The required elements to provide are OrderID, OfferID, and OwnerCode.

<?xml version="1.0" encoding="UTF-8"?>
<IATA_OrderChangeRQ xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage" xmlns:ns2="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
  <!-- DistributionChain -->
  <Request>
    <ns2:Order>
      <ns2:OrderID>X0XXXDPCDMZZ0</ns2:OrderID>
      <ns2:OwnerCode>X0</ns2:OwnerCode>
    </ns2:Order>
    <ns2:ChangeOrderChoice>
      <ns2:AcceptCancelledOffer>
        <ns2:OfferID>dg0079ccc4dckpszflkqcssdk0</ns2:OfferID>
        <ns2:OwnerCode>X0</ns2:OwnerCode>
      </ns2:AcceptCancelledOffer>
    </ns2:ChangeOrderChoice>
  </Request>
</IATA_OrderChangeRQ>

Modify passenger details

To add or update passenger contact details, send a request with the following mandatory elements:

  • OrderID
  • PaxRefID
  • ContactInfo
  • Pax
  • OwnerCode
    <?xml version="1.0" encoding="UTF-8"?>
    <IATA_OrderChangeRQ xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage"
                    xmlns:ns2="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
    <Request>
    <ns2:Order>
      <ns2:OrderID>orderID</ns2:OrderID>
      <ns2:OwnerCode>X0</ns2:OwnerCode>
    </ns2:Order>
    <ns2:ChangeOrderChoice>
      <ns2:UpdatePax>
        <ns2:Current>
          <ns2:PaxRefID>passengerReferenceID</ns2:PaxRefID>
        </ns2:Current>
      </ns2:UpdatePax>
    </ns2:ChangeOrderChoice>
    <ns2:DataLists>
      <ns2:ContactInfoList>
        <ns2:ContactInfo>
          <ns2:ContactInfoID>contactInfoID</ns2:ContactInfoID>
          <ns2:EmailAddress>
            <ns2:ContactTypeText>EmailAddress</ns2:ContactTypeText>
            <ns2:EmailAddressText>new@email.com</ns2:EmailAddressText>
          </ns2:EmailAddress>
          <ns2:Phone>
            <ns2:AreaCodeNumber>907</ns2:AreaCodeNumber>
            <ns2:ContactTypeText>HomePhone</ns2:ContactTypeText>
            <ns2:CountryDialingCode>US</ns2:CountryDialingCode>
            <ns2:ExtensionNumber>012</ns2:ExtensionNumber>
            <ns2:PhoneNumber>3033418650</ns2:PhoneNumber>
          </ns2:Phone>
        </ns2:ContactInfo>
      </ns2:ContactInfoList>
      <ns2:PaxList>
        <ns2:Pax>
          <ns2:ContactInfoRefID>contactInfoID</ns2:ContactInfoRefID>
          <ns2:PaxID>passengerReferenceID</ns2:PaxID>
        </ns2:Pax>
      </ns2:PaxList>
    </ns2:DataLists>
    </Request>
    </IATA_OrderChangeRQ>

Note: All endpoints accept NDC XML format.