# NDC Exchange and Refund Workflows

Exchange and refund functionality for NDC bookings and tickets is handled by a set of NDC-specific APIs.

Use the first workflow to update the air itinerary on a booking, or exchange a ticket for another itinerary. Use the second workflow to cancel tickets and issue a refund if eligible.

Each box in the diagram represents one API call in the workflow.

In the first workflow below, form of payment and payment are required before ticketing in the case of an even exchange or add collect (price of new itinerary is greater than existing itinerary). Some NDC carriers require tickets to be issued at commit while others support booking now and sending payment later.

- To issue the new tickets at commit, send the Form of Payment and Payment requests before Modify.
- To hold the booking, do not send FOP or payment information in this workbench.


#### 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
```