OrderCreate
IATA_OrderCreateRQ creates a booking from an offer priced by OfferPrice, optionally including selected ancillary seats and services. It is the XML counterpart of the JSON create order. Returns 201 Created with an IATA_OrderViewRS.
POST /ndc/{version}/OrderCreate with version one of v21.3, v24.1, v25.4, or v26.2.
Authorization
OrderCreate requires full transaction (book) permissions on the API key.
Card methods, brands, and the sandbox test card are documented under payments.
Request
CreateOrder > AcceptSelectedQuotedOfferList > SelectedPricedOffer (exactly one) references the priced OfferRefID and the selected OfferItemRefID values. DataLists carries the full passenger records (PaxList with Individual names) and contact details (ContactInfoList; contact phones use the schema element PhoneNumber).
Each ContactInfo is classified by whether a Pax references it (see contacts for the full rules):
- Referenced via
ContactInfoRefID— that passenger's own contact (email/phone, stored per passenger). A dangling reference is rejected. - The booking's primary contact — one unreferenced, untagged
ContactInfo, or one tagged<ContactPurposeText>Primary</ContactPurposeText>(the tag works even on a Pax-referenced entry). The primary is never guessed: with several entries exactly one must qualify; a request whose onlyContactInfois one untagged entry keeps it as primary even when Pax-referenced. - Any other
ContactPurposeTextis rejected — requests may set only the primary booking contact. RelationshipToPax(emergency contact) is not supported and is rejected.
:::note Migrating from the previous documentation
The legacy <ContactPurposeText>NTF</ContactPurposeText> tag shown in earlier Breeze NDC samples is not supported — it is rejected as an unknown contact type. Tag the notification contact Primary instead (or leave the one booking contact untagged).
:::
For paid bookings, PaymentProcessingDetails > Amount must state the amount to collect (CurCode USD only — see payments). If SelectedPricedOffer > TotalOfferPriceAmount is present, it is also treated as a price agreement. Both values must match the live amount due at commit time, or the request is rejected with ERR-3006 and no payment is collected.
Hold (book without payment)
Omit PaymentFunctions to create an on-hold booking, subject to a payment time limit. The hold may include ancillary seat/service offer items — the whole balance stays due. TotalOfferPriceAmount, when present, is still checked before the hold is created. Confirm the hold later by completing payment with OrderChange.
<?xml version="1.0" encoding="UTF-8"?>
<IATA_OrderCreateRQ xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage">
<DistributionChain>
<DistributionChainLink xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<Ordinal>1</Ordinal>
<OrgRole>Seller</OrgRole>
<ParticipatingOrg>
<OrgID>BZ</OrgID>
</ParticipatingOrg>
</DistributionChainLink>
<DistributionChainLink xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<Ordinal>2</Ordinal>
<OrgRole>Carrier</OrgRole>
<ParticipatingOrg>
<OrgID>MX</OrgID>
</ParticipatingOrg>
</DistributionChainLink>
</DistributionChain>
<Request>
<CreateOrder xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<AcceptSelectedQuotedOfferList>
<SelectedPricedOffer>
<OfferRefID>OF-25a8bea9-89f5-41ea-98be-25340131a18b</OfferRefID>
<OwnerCode>MX</OwnerCode>
<SelectedOfferItem>
<OfferItemRefID>OFI-25a8bea9-89f5-41ea-98be-25340131a18b-0-ADT</OfferItemRefID>
<PaxRefID>PX1</PaxRefID>
</SelectedOfferItem>
</SelectedPricedOffer>
</AcceptSelectedQuotedOfferList>
</CreateOrder>
<DataLists xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<ContactInfoList>
<ContactInfo>
<ContactInfoID>CT1</ContactInfoID>
<EmailAddress>
</EmailAddress>
<Phone>
<PhoneNumber>8015551212</PhoneNumber>
</Phone>
<PostalAddress>
<CityName>Los Angeles</CityName>
<CountryCode>US</CountryCode>
<CountrySubDivisionName>California</CountrySubDivisionName>
<PostalCode>90210</PostalCode>
<StreetText>123 Main St</StreetText>
</PostalAddress>
</ContactInfo>
</ContactInfoList>
<PaxList>
<Pax>
<Individual>
<Birthdate>1980-01-01</Birthdate>
<GenderCode>F</GenderCode>
<GivenName>Jane</GivenName>
<Surname>Doe</Surname>
</Individual>
<PaxID>PX1</PaxID>
<PTC>ADT</PTC>
</Pax>
</PaxList>
</DataLists>
</Request>
</IATA_OrderCreateRQ>
Book with payment
<?xml version="1.0" encoding="UTF-8"?>
<IATA_OrderCreateRQ xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage">
<DistributionChain>
<DistributionChainLink xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<Ordinal>1</Ordinal>
<OrgRole>Seller</OrgRole>
<ParticipatingOrg>
<OrgID>BZ</OrgID>
</ParticipatingOrg>
</DistributionChainLink>
<DistributionChainLink xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<Ordinal>2</Ordinal>
<OrgRole>Carrier</OrgRole>
<ParticipatingOrg>
<OrgID>MX</OrgID>
</ParticipatingOrg>
</DistributionChainLink>
</DistributionChain>
<Request>
<CreateOrder xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<AcceptSelectedQuotedOfferList>
<SelectedPricedOffer>
<OfferRefID>OF-25a8bea9-89f5-41ea-98be-25340131a18b</OfferRefID>
<OwnerCode>MX</OwnerCode>
<SelectedOfferItem>
<OfferItemRefID>OFI-25a8bea9-89f5-41ea-98be-25340131a18b-0-ADT</OfferItemRefID>
<PaxRefID>PX1</PaxRefID>
</SelectedOfferItem>
</SelectedPricedOffer>
</AcceptSelectedQuotedOfferList>
</CreateOrder>
<DataLists xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<ContactInfoList>
<ContactInfo>
<ContactInfoID>CT1</ContactInfoID>
<EmailAddress>
</EmailAddress>
<Phone>
<PhoneNumber>8015551212</PhoneNumber>
</Phone>
<PostalAddress>
<CityName>Los Angeles</CityName>
<CountryCode>US</CountryCode>
<CountrySubDivisionName>California</CountrySubDivisionName>
<PostalCode>90210</PostalCode>
<StreetText>123 Main St</StreetText>
</PostalAddress>
</ContactInfo>
</ContactInfoList>
<PaxList>
<Pax>
<Individual>
<Birthdate>1980-01-01</Birthdate>
<GenderCode>F</GenderCode>
<GivenName>Jane</GivenName>
<Surname>Doe</Surname>
</Individual>
<PaxID>PX1</PaxID>
<PTC>ADT</PTC>
</Pax>
</PaxList>
</DataLists>
<PaymentFunctions xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<PaymentProcessingDetails>
<Amount CurCode="USD">99</Amount>
<Payer>
<PayerName>
<IndividualName>
<GivenName>Jane</GivenName>
<Surname>Doe</Surname>
</IndividualName>
</PayerName>
<PaymentAddress>
<PostalAddress>
<CityName>Los Angeles</CityName>
<CountryCode>US</CountryCode>
<CountrySubDivisionName>California</CountrySubDivisionName>
<PostalCode>90210</PostalCode>
<StreetText>123 Main St</StreetText>
</PostalAddress>
</PaymentAddress>
</Payer>
<PaymentMethod>
<PaymentCard>
<CardBrandCode>VI</CardBrandCode>
<CardNumber>4111111111111111</CardNumber>
<CardSecurityCode>123</CardSecurityCode>
<ExpirationDate>1227</ExpirationDate>
</PaymentCard>
</PaymentMethod>
</PaymentProcessingDetails>
</PaymentFunctions>
</Request>
</IATA_OrderCreateRQ>
Response
An IATA_OrderViewRS: Order with OrderID (the record locator), OrderItem rows, StatusCode, and TotalPrice, plus DataLists lookups and TicketDocInfo when tickets exist.
<?xml version="1.0" encoding="UTF-8"?>
<IATA_OrderViewRS xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage">
<Response>
<DataLists xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<ContactInfoList>
<!-- Contacts listed without a ContactInfoRefID are associated with the entire order.
A ContactInfoRefID value indicates an association to a specific passenger. -->
</ContactInfoList>
<PaxList>
<Pax>
<Individual>
<GivenName>Jane</GivenName>
<Surname>Doe</Surname>
</Individual>
<PaxID>PAX-example</PaxID>
<PTC>ADT</PTC>
</Pax>
</PaxList>
<!-- OriginDestList, PaxJourneyList, PaxSegmentList,
DatedMarketingSegmentList, DatedOperatingSegmentList, DatedOperatingLegList,
PriceClassList, ServiceDefinitionList -->
</DataLists>
<Order xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">
<OrderID>ABC123</OrderID>
<OrderItem>
<FareDetail>
<FareComponent>
<PaxSegmentRefID>SEG-example</PaxSegmentRefID>
</FareComponent>
<PaxRefID>PAX-example</PaxRefID>
</FareDetail>
<OrderItemID>OOI-FL-example</OrderItemID>
<Price>
<BaseAmount CurCode="USD">91.5</BaseAmount>
<TaxSummary>
<TotalTaxAmount CurCode="USD">7.5</TotalTaxAmount>
</TaxSummary>
<TotalAmount CurCode="USD">99</TotalAmount>
</Price>
<StatusCode>ACTIVE</StatusCode>
<!-- purchased ancillaries appear as further OrderItem / Service entries -->
</OrderItem>
<StatusCode>OPENED</StatusCode>
<TotalPrice>
<BaseAmount CurCode="USD">91.5</BaseAmount>
<TaxSummary>
<TotalTaxAmount CurCode="USD">7.5</TotalTaxAmount>
</TaxSummary>
<TotalAmount CurCode="USD">99</TotalAmount>
</TotalPrice>
</Order>
<!-- TicketDocInfo elements when tickets exist; Warning elements when applicable -->
</Response>
</IATA_OrderViewRS>
OrderCreate errors
See the shared error codes catalog for common create/pay failures. Codes this endpoint may return:
| Code | HTTP status | Cause |
|---|---|---|
ERR-1000 | 400 | Malformed XML. |
ERR-1002 | 404 | Unsupported version segment in the path. |
ERR-1003 | 400 | Missing required element. |
ERR-1004 | 400 | Invalid field value. |
ERR-3000 | 404 | Referenced offer could not be found. |
ERR-3001 | 404 | Referenced offer has expired. |
ERR-3006 | 409 | Amount due does not match the stated amount. |
ERR-4001 | 400 | Order could not be created from the selected offer. |
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-7004 | 422 | Missing order contact information. |
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 failed upstream. |