Skip to main content

Create order

POST /json/{version}/orders creates a booking from a priced offer returned by price offer. It is the JSON counterpart of the NDC IATA_OrderCreateRQ. Returns 201 Created on success.

Authorization

Create order requires full transaction (book) permissions on the API key; read-only keys are rejected.

Requests carrying raw cardholder data outside the payment object are rejected before processing. Prefer TokenizedCard payments; raw CreditCard data is only for PCI-compliant integrations.

Request

FieldDescription
offerIdPriced offer ID from price offer.
offerItemIdsOffer items to book. Must exist on the priced offer.
offerItemSelectionsOne entry per offer item, optionally restricting it to specific passengerIds.
passengersFull passenger records: passengerId, type, name (givenName + surname required), and optional dateOfBirth, gender, nationality, residenceCountry, loyaltyProgram, travelDocuments, per-passenger contact, and infantPassengerId (associates a lap infant with an adult).
contactOrder-level contact. Must include at least one of emailAddress, phoneNumber, or postalAddress.
remarksOptional free-text booking remarks.
paymentOne of { "type": "Hold" } (book without payment, subject to a payment time limit), TokenizedCard (token, cardType, expiryDate as MMYY, optional payer), or CreditCard (cardType, cardNumber, expiryDate, optional securityCode, required payer with name and postal address).
POST /json/v0/orders
Authorization: <bearer token from /auth/token>
Content-Type: application/json

{
"offerId": "OF-8c1e2f04-9d21-4b7a-b3c2-77c101f1a001",
"offerItemIds": [
"OFI-8c1e2f04-9d21-4b7a-b3c2-77c101f1a001-0"
],
"offerItemSelections": [
{
"offerItemId": "OFI-8c1e2f04-9d21-4b7a-b3c2-77c101f1a001-0"
}
],
"passengers": [
{
"passengerId": "PX1",
"type": "ADT",
"name": {
"givenName": "Jane",
"surname": "Doe"
}
}
],
"contact": {
"emailAddress": "[email protected]"
},
"payment": {
"type": "Hold"
}
}

Response

The response is the same OrderView projection returned by order retrieve: order (header and flight items), services, pax, journeys, payments, and tickets. A Hold booking returns statusCode: "ONHOLD" with paymentTimeLimit and balanceDue; confirm it later with change order.

{
"data": {
"order": {
"orderId": "ABC123",
"recordLocator": "ABC123",
"ownerCode": "MX",
"statusCode": "ONHOLD",
"creationDateTime": "2026-07-01T15:04:05Z",
"paymentTimeLimit": "2026-07-02T15:04:05Z",
"balanceDue": {
"amount": 99,
"currency": "USD"
},
"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
}

Create order errors

CodeHTTP statusCause
ERR-1002404Unsupported version segment in the path.
ERR-1005422Request validation failed: duplicate passenger IDs, infants exceeding adults, missing contact.
ERR-3000404Referenced offer could not be found.
ERR-3001404Referenced offer has expired.
ERR-4001400Order could not be created from the selected offer.
ERR-6000422Payment method not supported.
ERR-6001422Card brand not supported.
ERR-6002400Payment rejected.
ERR-6005503Payment processing timed out.
ERR-8000401Missing or invalid API key or bearer token.
ERR-8001403API key lacks full transaction permissions.
ERR-8002503Authentication store unavailable.
ERR-9003500Booking failed upstream.