Change order
PATCH /json/{version}/orders/{orderId} applies changes to an existing booking. It is the JSON counterpart of the NDC IATA_OrderChangeRQ.
orderId is the order ID or record locator (PNR).
Authorization
Change order requires full transaction (book) permissions on the API key.
Requests carrying raw cardholder data outside the payment object are rejected before processing.
Request
The body must include at least one of changes, passengers, contact, or payment. Each changes[] entry is one instruction:
Instruction type | Description |
|---|---|
CancelUnpaidOrder | Cancels an unpaid (hold) booking. |
CancelJourney | Cancels one journey by journeyRef. |
UpdatePassenger | Patches one passenger (passengerId + non-empty patch of name, date of birth, gender, nationality, residence country, or travel documents). |
UpdateContact | Replaces the order contact. |
ConfirmHold | Confirms a hold booking; combine with payment. |
AcceptOffer | Adds ancillary offer items (seats, services) to the order; entries carry offerId, offerItemId, optional passengerIds and seat (row + column). |
AcceptReshopOffer | Accepts a reshop offer quoted by quote order. |
Cancel an unpaid order
PATCH /json/v0/orders/ABC123
Authorization: <bearer token from /auth/token>
Content-Type: application/json
{
"changes": [
{
"type": "CancelUnpaidOrder"
}
]
}
Confirm a hold with payment
PATCH /json/v0/orders/ABC123
Authorization: <bearer token from /auth/token>
Content-Type: application/json
{
"changes": [
{
"type": "ConfirmHold"
}
],
"payment": {
"type": "TokenizedCard",
"token": "<payment-token>",
"cardType": "VI",
"expiryDate": "1227"
}
}
Update a passenger
PATCH /json/v0/orders/ABC123
Authorization: <bearer token from /auth/token>
Content-Type: application/json
{
"changes": [
{
"type": "UpdatePassenger",
"passengerId": "PAX-eyJ2IjoxfQ",
"patch": {
"name": {
"givenName": "Jane",
"surname": "Smith"
}
}
}
]
}
Accept a reshop offer
PATCH /json/v0/orders/ABC123
Authorization: <bearer token from /auth/token>
Content-Type: application/json
{
"changes": [
{
"type": "AcceptReshopOffer",
"offerId": "OF-8c1e2f04-9d21-4b7a-b3c2-77c101f1a001",
"offerItemIds": [
"OFI-8c1e2f04-9d21-4b7a-b3c2-77c101f1a001-0"
]
}
]
}
Response
The updated OrderView projection — the same shape as order retrieve.
{
"data": {
"order": {
"orderId": "ABC123",
"recordLocator": "ABC123",
"ownerCode": "MX",
"statusCode": "CONFIRMED",
"creationDateTime": "2026-07-01T15:04:05Z",
"totalPrice": {
"total": {
"amount": 99,
"currency": "USD"
},
"base": {
"amount": 91.5,
"currency": "USD"
},
"taxes": [
{
"code": "US",
"amount": {
"amount": 7.5,
"currency": "USD"
}
}
],
"fees": []
},
"items": [
{
"itemId": "OOI-FL-eyJ2IjoxfQ",
"statusCode": "CONFIRMED",
"totalPrice": {
"total": {
"amount": 99,
"currency": "USD"
},
"base": {
"amount": 91.5,
"currency": "USD"
},
"taxes": [
{
"code": "US",
"amount": {
"amount": 7.5,
"currency": "USD"
}
}
],
"fees": []
},
"paxRefIds": [
"PAX-eyJ2IjoxfQ"
],
"segmentRefIds": [
"SEG-eyJ2IjoxfQ"
],
"fare": {
"fareBasisCode": "Y",
"cabinTypeCode": "Y",
"rbd": "Y",
"priceClassRefId": "EZU",
"bundleName": "Nice"
}
}
]
},
"services": [
{
"itemId": "SVR-eyJ2IjoxfQ",
"serviceId": "SVR-eyJ2IjoxfQ",
"code": "BAG1",
"name": "First checked bag",
"category": "baggage",
"ownerCode": "MX",
"totalPrice": {
"total": {
"amount": 35,
"currency": "USD"
},
"base": {
"amount": 35,
"currency": "USD"
},
"taxes": [],
"fees": []
},
"paxRefId": "PAX-eyJ2IjoxfQ",
"segmentRefId": "SEG-eyJ2IjoxfQ",
"attributes": {
"pieceCount": 1
}
}
],
"pax": [
{
"paxId": "PAX-eyJ2IjoxfQ",
"ptc": "ADT",
"name": {
"givenName": "Jane",
"surname": "Doe"
}
}
],
"journeys": [
{
"journeyId": "JOU-eyJ2IjoxfQ",
"origin": "SLC",
"destination": "CHS",
"departureDateTime": "2026-09-15T08:00:00",
"arrivalDateTime": "2026-09-15T12:00:00",
"duration": "PT4H",
"stops": 0,
"segments": [
{
"segmentId": "SEG-eyJ2IjoxfQ",
"marketingCarrier": "MX",
"marketingFlightNumber": "101",
"origin": "SLC",
"destination": "CHS",
"departureDateTime": "2026-09-15T08:00:00",
"arrivalDateTime": "2026-09-15T12:00:00",
"cabinTypeCode": "Y",
"rbd": "Y"
}
]
}
],
"payments": [],
"tickets": []
},
"error": null
}
Change order errors
| Code | HTTP status | Cause |
|---|---|---|
ERR-1002 | 404 | Unsupported version segment in the path. |
ERR-1005 | 422 | Request validation failed: empty body, empty passenger patch. |
ERR-4000 | 404 | Order not found. |
ERR-4002 | 400 | Requested change could not be applied. |
ERR-4006 | 400 | Referenced journey not found on the order. |
ERR-6000 | 422 | Payment method not supported. |
ERR-6001 | 422 | Card brand not supported. |
ERR-6002 | 400 | Payment rejected. |
ERR-6005 | 503 | Payment processing timed out. |
ERR-8000 | 401 | Missing or invalid API key or bearer token. |
ERR-8001 | 403 | API key lacks full transaction permissions. |
ERR-8002 | 503 | Authentication store unavailable. |
ERR-9003 | 500 | Booking change failed upstream. |