# Ticket exchange
An exchange occurs when a traveler or an agent changes the flight itinerary after ticketing.
There are two ways the airline can process the exchange:
- [Airline revalidates the same ticket for exchange](/webhooks/booking-lifecycle/air-booking-lifecycle/air-ticket-exchange-lifecycle#airline-revalidates-the-same-ticket-for-exchange)
- [Airline issues a new ticket and refunds the old one](/webhooks/booking-lifecycle/air-booking-lifecycle/air-ticket-exchange-lifecycle#airline-issues-a-new-ticket-and-refunds-the-old-one)
**Webhook used:** [PNR_V3](/openapi/webhookeventapi/webhooks/paths/pnr_v3/post)
## Airline revalidates the same ticket for exchange
Based on the airline's policies they can process an exchange by revalidating the same ticket. In this case there's no refund involved and
the same ticket is used to track the new changes.
The event below is sent in this scenario:
| Operation | Event trigger | Context |
| --- | --- | --- |
| `FLIGHT_CHANGED` | When the itinerary is changed and the airline revalidates the original ticket for the new flights. | This event is sent when the airline reuses the existing ticket number for the new routing.
No new ticket is issued and no refund of the old ticket occurs.
You receive a single event reflecting the updated flights.
**Example:** A traveler exchanges their direct JFK to LHR flight for a JFK > BOS > LHR routing.
The airline revalidates the original ticket for the new flights instead of issuing a new one.
You receive a `FLIGHT_CHANGED` event on the same PNR with the updated flight details. |
## Airline issues a new ticket and refunds the old one
The airline may issue a new ticket and refund the old one in the case of an exchange. In this scenario the following events are sent:
| Steps | Operation | When you receive this event | Context |
| --- | --- | --- | --- |
| 1 | `TICKET_ REFUNDED` | When the itinerary is changed and the airline issues a new ticket (the old ticket is refunded). | This event is sent when the exchange requires issuing a new ticket. The old ticket moves to refunded status.
You will also receive a `BOOKING_TICKETED` event for the new ticket.
**Example:** A traveler changes their return date from March 20 to March 25.
The airline refunds the old ticket and issues a new one. You receive a `TICKET_REFUNDED` event for the old ticket,
followed by a `BOOKING_TICKETED` event with a new ticket number. |
| 2 | `BOOKING_ TICKETED` | When the new exchange ticket is issued. | The `BOOKING_TICKETED` event is sent with the new ticket number.
The traveler's payment method is charged for any fare difference.
**Example:** Continuing from the previous step, after the old ticket is refunded, the new ticket is issued for the updated return date.
The event is triggered with the new ticket number and updated fare details. |
## Ticket exchange flow diagram
```mermaid
flowchart LR
subgraph exchange["Exchange"]
A(["Traveler changes
itinerary after ticketing"]) --> B{"How does the airline
process the exchange?"}
B -->|"Revalidation
(same ticket)"| C["FLIGHT_CHANGED
―――――――――――
Flights changed,
original ticket revalidated
for new routing."]
B -->|"New ticket
issued"| D["TICKET_REFUNDED
―――――――――――
Old ticket refunded
as part of exchange."]
D --> E["BOOKING_TICKETED
―――――――――――
New exchange ticket
issued. Card charged
for any fare difference."]
end
style A fill:#f0f0f0,stroke:#999
style C fill:#FF9800,color:#fff
style D fill:#F44336,color:#fff
style E fill:#4CAF50,color:#fff
```