Skip to content
BreezePro docs

OrderCreate

IATA_OrderCreateRQ creates a booking from a priced offer returned by OfferPrice, or directly from a shopped offer (short sell; see below), 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.

OrderCreate requires full transaction (book) permissions on the API key.

Card methods, brands, and the sandbox test card are documented under payments.

HeaderRequiredDescription
Idempotency-KeyNoUp to 255 characters, unique per order attempt. A repeat request with the same key returns the original order instead of booking again (keys are retained for 24 hours, scoped per seller). A repeat while the first attempt is still processing returns ERR-4011; reusing the same key for a different request body returns ERR-1011. Send one on every create so a timed-out request can be retried safely.

CreateOrder > AcceptSelectedQuotedOfferList > SelectedPricedOffer (exactly one) references the OfferRefID (either a priced offer ID from OfferPrice, or a shopped offer ID from AirShopping) and the selected OfferItemRefID values. When a shopped offer ID is supplied, BOO runs OfferPrice internally and books the resulting priced offer (short sell). 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 only ContactInfo is one untagged entry keeps it as primary even when Pax-referenced.
  • Any other ContactPurposeText is rejected; requests may set only the primary booking contact.
  • RelationshipToPax (emergency contact) is not supported and is rejected.

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.

On short sell (a shopped OfferRefID), when TotalOfferPriceAmount is absent and the repriced total differs from the shopped total, the request is rejected with ERR-3006 before any booking is made. Send TotalOfferPriceAmount to accept the new price; the stated amount is then checked against the repriced total.

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. On short sell with a Hold, the same price-drift check applies. 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>
<EmailAddressText>[email protected]</EmailAddressText>
</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>
<?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>
<EmailAddressText>[email protected]</EmailAddressText>
</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>

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,
BaggageAllowanceList (present when bags are booked; bag service definitions
link to it via ServiceDefinitionAssociation/BaggageAllowanceRef) -->
</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>

See the shared error codes catalog for common create/pay failures. Codes this endpoint may return:

CodeHTTP statusCause
ERR-1000400Malformed XML.
ERR-1002404Unsupported version segment in the path.
ERR-1003400Missing required element.
ERR-1004400Invalid field value.
ERR-1011422Idempotency-Key reused: same key sent with a different request body.
ERR-3000404Referenced offer could not be found.
ERR-3001404Referenced offer has expired.
ERR-3006409Amount due does not match the stated amount.
ERR-4001400Order could not be created from the selected offer.
ERR-4011409Order create with this Idempotency-Key is still in progress; retry with the same key.
ERR-6000422Payment method not supported.
ERR-6001422Card brand not supported.
ERR-6002400Payment rejected.
ERR-6005503Payment processing timed out.
ERR-7004422Missing order contact information.
ERR-8000401Missing or invalid API key or bearer token.
ERR-8001403API key lacks full transaction permissions.
ERR-8002503Authentication store unavailable.
ERR-9003500Booking failed upstream.