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
Section titled “Authorization”Change order requires full transaction (book) permissions on the API key.
Card methods, brands, and the sandbox test card are documented under payments.
Request
Section titled “Request”The body must include at least one of changes, passengers, or payment. Each changes[] entry is one instruction; changes accepts up to 10 entries per request.
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, travel documents (up to 4 per request), or a per-passenger contact with email and/or phone). |
UpdateContact | Replaces the primary booking contact. Requires the contact name. See contacts. |
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 integer + column single letter, e.g. "D"). |
AcceptReshopOffer | Accepts a reshop offer quoted by quote order. |
Changes that create a positive balance require payment, except on a held (unpaid) booking, where the change commits without payment and grows the balance due by the payment time limit.
Cancel an unpaid order
Section titled “Cancel an unpaid order”PATCH /json/v0/orders/ABC123Authorization: <bearer token from /auth/token>Content-Type: application/json
{ "changes": [ { "type": "CancelUnpaidOrder" } ]}Confirm a hold with payment
Section titled “Confirm a hold with payment”PATCH /json/v0/orders/ABC123Authorization: <bearer token from /auth/token>Content-Type: application/json
{ "changes": [ { "type": "ConfirmHold" } ], "payment": { "type": "CreditCard", "cardType": "VI", "cardNumber": "4111111111111111", "expiryDate": "1227", "securityCode": "123", "payer": { "name": { "givenName": "Jane", "surname": "Doe" }, "postalAddress": { "line1": "123 Main St", "city": "Los Angeles", "stateProvince": "California", "postalCode": "90210", "countryCode": "US" } } }}Update a passenger
Section titled “Update a passenger”PATCH /json/v0/orders/ABC123Authorization: <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
Section titled “Accept a reshop offer”PATCH /json/v0/orders/ABC123Authorization: <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
Section titled “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, "weight": { "value": 50, "unit": "LBR" } } } ], "pax": [ { "paxId": "PAX-eyJ2IjoxfQ", "ptc": "ADT", "name": { "givenName": "Jane", "surname": "Doe" } } ], "contacts": [ { "contactId": "CTC-UA", "contactTypeCode": "P", "contactTypeName": "Primary", "phoneNumbers": [ { "number": "+18015551212", "type": "Other" } ], "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
Section titled “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-4007 | 400 | Journey already flown, or a passenger boarded or no-showed. |
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-6006 | 422 | This change would leave a balance due, which this booking cannot pay. Changes that cost nothing or leave a credit are accepted. |
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. |