# NDC Exchanges and Refunds

The following sections provide workflow and support details for the APIs in the NDC exchange ticketing process. The same APIs and processes are also used to modify or cancel held bookings for NDC.

### Workflow to Exchange Tickets or Modify Held Booking

The NDC exchange workflow shops for a new itinerary to update the currently ticketed itinerary. Supported only for automated exchanges only, in which the TripServices APIs are used for all steps of the exchange.

This same workflow also supports changing the itinerary on a held booking.

| Step # | Booking Workflow Step | Description and Notes | API Reference |
|  --- | --- | --- | --- |
| 1 | Post-Commit Workbench | Initiate a workbench for the existing booking. | Post-Commit Workbench API Reference |
| 2
 | Reshop
 | Search for a new itinerary for either a held booking or to exchange a ticket.
The offer in the response is required in the Reprice request.

Send with the following header parameter to return the price difference between each offer and the amount originally paid for the ticket.
The response includes a ModifyPrice object to itemize the price difference.

TVP-Feature-Set:
EnhancedAirChangeWorkflow
Important: Some NDC carriers handle this header parameter differently.
- When sent for EK or LHG reservations, pagination is enabled.
- When sent for AI, QR, SQ, and UA, ModifyPrice is removed from the response and the change-code breakdown is not returned.

 | Reshop API Reference
 |
| 3
 | Reprice
 | Confirm pricing on a selected offer from the Reshop response and add that offer to the workbench.
Send with the following header parameter to normalize pricing details under ModifyPrice.

TVP-Feature-Set:
EnhancedAirChangeWorkflow

If not sent, the reprice response may not be returned in a normalized format.
Important: Some NDC carriers handle this header parameter differently.
- Supported for AA, BA, AF, KL, SQ, QR, IB, LH, EK. TC: Also supported by OS, SN, LX, EN, 4Y LCCs.
- When sent for UA booking, Reprice returns an empty Price object and no ModifyPrice (no pricing).
- When sent for QF, TotalFees is zeroed out, making the displayed  price appear lower than actual.

 | Reprice API Reference
 |
| 4
may be optional or required
 | Form of Payment
 | Add Form of Payment may be required in the  case of an even exchange or an add collect (the new price is greater than the original). Some NDC carriers require tickets to be issued at commit while others support booking now and sending payment later. See the [Support Table and Workflow Summary](/docs/flights/guides/exchange-refund-and-void-guide#exchange-void-cancel-refund---support--workflows-for-tickets) in the Exchanges Guide for details.
 | Form of Payment API Reference
 |
| 5
may be optional or required
 | Payment
 | May be optional or required depending on carrier rules. See Form of Payment in the row above.
 | Payment API Reference
 |
| 6
 | Modify
 | Required. In header, include: 

TVP-Feature-Set:
EnhancedAirChangeWorkflow

If **modifying and holding** an order that was originally ticketed, send the following and do not send RepriceReasonCode.

ActionContextCode:DEFERRED_PAYMENT_IN_EXCHANGE
 | Modify API Reference
 |
| 7
Optional | Retrieve | To retrieve the reservation with OfferModify / ModifyPrice details for a modified-hold booking, send the following header parameter:

TVP-Feature-Set:

EnhancedAirChangeWorkflow | Reservation Retrieve API Reference |


### Workflow to Refund Ticket or Cancel Held Booking

The NDC refund workflow first determines whether any refund value is available for a ticket, and then cancels the ticketed itinerary.

To cancel a held booking, use this workflow without the Refund Quote in step #2.

| Step # | Booking Workflow Step | Description and Notes | API Reference |
|  --- | --- | --- | --- |
| 1 | Post-Commit Workbench | Initiate a workbench for the existing booking. | Post-Commit Workbench API Reference |
| 2 | Refund Quote (omit for held bookings) | Determine what if any refund value may be available on the ticket. | Refund Quote API Reference |
| 3 | Cancel | Cancels the ticket or booking. | Cancel API Reference |


### Workflow Diagrams

In the following diagrams, each box represents one API call in the workflow.

#### NDC ticket exchange or modify held booking workflow

```mermaid
flowchart TD
    A["Create post-commit\nworkbench"]
    B["Reshop\n(search for new offer)"]
    C["Reprice\n(confirm pricing,\nadd offer to workbench)"]
    D["Form of payment\n(may be optional per carrier)"]
    E["Payment\n(may be optional per carrier)"]
    F["Modify\n(issues tickets if FOP\n& payment sent)"]

    A --> B --> C --> D --> E --> F
```

#### NDC cancel ticket and issue refund workflow

```mermaid
flowchart TD
    A["Create post-commit\nworkbench"]
    B["Refund Quote"]
    C["Cancel"]

    A --> B --> C
```

### Supported NDC Exchange Options

In general, NDC supports the following changes on either a held booking or a ticketed itinerary:

- Modify the date, time, flight, cabin, or origin and/or destinations


Ticket exchanges are supported for the following:

- Automated exchanges
- One-way, round-trip, interline, and open-jaw itineraries
- Bookings with up to 9 passengers
- All PTC codes


Carrier support varies for the following:

- Adding new air segments
- Modifying seats or ancillaries
- Modifying or adding flights after travel commences
- Canceling a booking with ancillaries or seats
- Canceling a divided booking.


See the *Cancel* section in  NDC capabilities by airline through TripServices API in the Travelport Knowledge Base. If you need login assistance, see [Knowledge Base NDC Resources](/docs/flights/ndc/ndc-guide#knowledge-base-ndc-resources).