# Orders An Order can be created from a Cart, usually after a checkout process has been completed. Learn more about how to implement order creation as part of a custom checkout flow in our self-paced Implement a custom checkout module. ## Representations Representations are JSON objects submitted or received as payload to API requests or responses. #### Order [type definition](/api/projects/orders.md?urn=ctp:api:type:Order). ##### OrderFromCartDraft You must provide a value for the `cart` field. It is marked as optional only for backward compatibility reasons. When an Order is created from a Cart, inventory updates triggered by the Order are **eventually consistent**. Changes to `availableQuantity` and `quantityOnStock` may take up to 10 seconds to be reflected. For detailed information about inventory consistency guarantees, see [Inventory checks and consistency](/api/inventory-overview.md#inventory-checks-and-consistency). [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderFromCartDraft). ##### OrderFromQuoteDraft [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderFromQuoteDraft). ##### OrderPagedQueryResponse [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderPagedQueryResponse). ##### OrderReference [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderReference). ##### OrderState [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderState). ##### ShipmentState [type definition](/api/projects/orders.md?urn=ctp:api:type:ShipmentState). ##### PaymentState [type definition](/api/projects/orders.md?urn=ctp:api:type:PaymentState). ##### PaymentInfo [type definition](/api/projects/orders.md?urn=ctp:api:type:PaymentInfo). ##### SyncInfo [type definition](/api/projects/orders.md?urn=ctp:api:type:SyncInfo). #### Delivery [type definition](/api/projects/orders.md?urn=ctp:api:type:Delivery). ##### DeliveryDraft [type definition](/api/projects/orders.md?urn=ctp:api:type:DeliveryDraft). ##### DeliveryItem [type definition](/api/projects/orders.md?urn=ctp:api:type:DeliveryItem). ##### Parcel [type definition](/api/projects/orders.md?urn=ctp:api:type:Parcel). ##### ParcelDraft [type definition](/api/projects/orders.md?urn=ctp:api:type:ParcelDraft). ##### ParcelMeasurements [type definition](/api/projects/orders.md?urn=ctp:api:type:ParcelMeasurements). ##### TrackingData [type definition](/api/projects/orders.md?urn=ctp:api:type:TrackingData). #### Returns The following types contain representations of returns, including what items are being returned and their current payment and shipment states. ##### ReturnInfo [type definition](/api/projects/orders.md?urn=ctp:api:type:ReturnInfo). ##### ReturnInfoDraft [type definition](/api/projects/orders.md?urn=ctp:api:type:ReturnInfoDraft). ##### ReturnItem Information on the returned Line Items or Custom Line Items; see [LineItemReturnItem](/api/projects/orders.md#lineitemreturnitem) or [CustomLineItemReturnItem](/api/projects/orders.md#customlineitemreturnitem) respectively. ###### LineItemReturnItem [type definition](/api/projects/orders.md?urn=ctp:api:type:LineItemReturnItem). ###### CustomLineItemReturnItem [type definition](/api/projects/orders.md?urn=ctp:api:type:CustomLineItemReturnItem). ##### ReturnItemDraft [type definition](/api/projects/orders.md?urn=ctp:api:type:ReturnItemDraft). ##### ReturnShipmentState [type definition](/api/projects/orders.md?urn=ctp:api:type:ReturnShipmentState). Allowed state transitions: ```mermaid stateDiagram direction LR [*] --> Advised [*] --> Returned Returned --> BackInStock Returned --> Unusable ``` ##### ReturnPaymentState [type definition](/api/projects/orders.md?urn=ctp:api:type:ReturnPaymentState). Allowed state transitions: ```mermaid stateDiagram direction LR [*] --> NonRefundable [*] --> Initial Initial --> Refunded Initial --> NotRefunded ``` ## Get Order ### Get Order by ID [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders/\{id}:GET). ### Get Order by OrderNumber [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders/order-number=\{orderNumber}:GET). ## Get Order in Store ### Get Order in Store by ID [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders/\{id}:GET). ### Get Order in Store by OrderNumber [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders/order-number=\{orderNumber}:GET). ## Query Orders To perform searches across a large number of Orders for back-office use cases, consider [Order Search](/api/projects/order-search.md) instead. [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders:GET). ## Query Orders in Store [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders:GET). ## Check if Order exists ### Check if Order exists by ID [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders/\{id}:HEAD). ### Check if Order exists by OrderNumber [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders/order-number=\{orderNumber}:HEAD). ### Check if Order exists by Query Predicate [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders:HEAD). ## Check if Order exists in Store ### Check if Order exists in Store by ID [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders/\{id}:HEAD). ### Check if Order exists in Store by OrderNumber [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders/order-number=\{orderNumber}:HEAD). ### Check if Order exists in Store by Query Predicate [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders:HEAD). ## Create Order ### Create Order from Cart [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders:POST). ### Create Order from Quote [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders/quotes:POST). ### Create Order by Import To import an Order without having a Cart or Quote before, see [Create Order by Import](/urn?urn=ctp%3Aapi%3Aendpoint%3A%2F%7BprojectKey%7D%2Forders%2Fimport%3APOST). ## Create Order in Store ### Create Order in Store from Cart [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders:POST). ### Create Order in Store from Quote [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders/quotes:POST). ## Update Order ### Update Order by ID [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders/\{id}:POST). ### Update Order by OrderNumber [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders/order-number=\{orderNumber}:POST). ## Update Order in Store ### Update Order in Store by ID [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders/\{id}:POST). ### Update Order in Store by OrderNumber [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders/order-number=\{orderNumber}:POST). ## Update actions #### on Order ##### Set Order Number [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetOrderNumberAction). ##### Set Purchase Order Number [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetPurchaseOrderNumberAction). ##### Set Business Unit [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetBusinessUnitAction). ##### Set Customer ID [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetCustomerIdAction). ##### Set Customer Email [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetCustomerEmailAction). ##### Add Payment [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderAddPaymentAction). ##### Remove Payment [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderRemovePaymentAction). ##### Change PaymentState [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderChangePaymentStateAction). ##### Set Billing Address [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetBillingAddressAction). ##### Set Shipping Address [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetShippingAddressAction). ##### Add ItemShippingAddress [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderAddItemShippingAddressAction). ##### Remove ItemShippingAddress [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderRemoveItemShippingAddressAction). ##### Update ItemShippingAddress [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderUpdateItemShippingAddressAction). ##### Add Delivery [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderAddDeliveryAction). ##### Remove Delivery [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderRemoveDeliveryAction). ##### Change ShipmentState [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderChangeShipmentStateAction). ##### Add ReturnInfo [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderAddReturnInfoAction). ##### Set ReturnInfo [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetReturnInfoAction). ##### Set ReturnShipmentState [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetReturnShipmentStateAction). ##### Set ReturnPaymentState [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetReturnPaymentStateAction). ##### Change OrderState [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderChangeOrderStateAction). ##### Transition State [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderTransitionStateAction). ##### Update SyncInfo [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderUpdateSyncInfoAction). ##### Set Locale [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetLocaleAction). ##### Set Store [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetStoreAction). ##### Set Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetCustomTypeAction). ##### Set CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetCustomFieldAction). #### on LineItem ##### Set LineItem ShippingDetails [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetLineItemShippingDetailsAction). ##### Set LineItem Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetLineItemCustomTypeAction). ##### Set LineItem CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetLineItemCustomFieldAction). ##### Transition LineItem State [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderTransitionLineItemStateAction). ##### Import LineItem State [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderImportLineItemStateAction). #### on Custom LineItem ##### Set CustomLineItem ShippingDetails [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetCustomLineItemShippingDetailsAction). ##### Transition CustomLineItem State [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderTransitionCustomLineItemStateAction). ##### Import CustomLineItem State [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderImportCustomLineItemStateAction). ##### Set CustomLineItem Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetCustomLineItemCustomTypeAction). ##### Set CustomLineItem CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetCustomLineItemCustomFieldAction). #### on Billing Address ##### Set Billing Address Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetBillingAddressCustomTypeAction). ##### Set Billing Address CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetBillingAddressCustomFieldAction). #### on Shipping Address ##### Set Shipping Address Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetShippingAddressCustomTypeAction). ##### Set Shipping Address CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetShippingAddressCustomFieldAction). #### on ItemShipping Address ##### Set ItemShipping Address Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetItemShippingAddressCustomTypeAction). ##### Set ItemShipping Address CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetItemShippingAddressCustomFieldAction). #### on Shipping ##### Set Shipping Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetShippingCustomTypeAction). ##### Set Shipping CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetShippingCustomFieldAction). #### on Delivery ##### Set Delivery Address [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetDeliveryAddressAction). ##### Add Parcel to Delivery [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderAddParcelToDeliveryAction). ##### Remove Parcel from Delivery [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderRemoveParcelFromDeliveryAction). ##### Set Delivery Items [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetDeliveryItemsAction). ##### Set Delivery Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetDeliveryCustomTypeAction). ##### Set Delivery CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetDeliveryCustomFieldAction). #### on Parcel ##### Set Parcel Measurements [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetParcelMeasurementsAction). ##### Set Parcel Tracking Data [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetParcelTrackingDataAction). ##### Set Parcel Items [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetParcelItemsAction). ##### Set Parcel Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetParcelCustomTypeAction). ##### Set Parcel CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetParcelCustomFieldAction). #### on Delivery Address ##### Set Delivery Address Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetDeliveryAddressCustomTypeAction). ##### Set Delivery Address CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetDeliveryAddressCustomFieldAction). #### on ReturnItem ##### Set ReturnItem Custom Type [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetReturnItemCustomTypeAction). ##### Set ReturnItem CustomField [type definition](/api/projects/orders.md?urn=ctp:api:type:OrderSetReturnItemCustomFieldAction). ## Delete Order ### Delete Order by ID Although it is possible to delete Orders with the [`manage_orders`](/api/scopes/#orders) scope, we strongly recommend doing so only for test Orders. You are responsible for deciding which Orders, if any, can be deleted in your production Project. If a [DiscountCode](/urn?urn=ctp%3Aapi%3Atype%3ADiscountCode) with a `maxApplications` or `maxApplicationsPerCustomer` limit has been applied to the Order, the deleted Order is still counted towards that limit. [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders/\{id}:DELETE). ### Delete Order by OrderNumber Although it is possible to delete Orders with the [`manage_orders`](/api/scopes/#orders) scope, we strongly recommend doing so only for test Orders. You are responsible for deciding which Orders, if any, can be deleted in your production Project. If a [DiscountCode](/urn?urn=ctp%3Aapi%3Atype%3ADiscountCode) with a `maxApplications` or `maxApplicationsPerCustomer` limit has been applied to the Order, the deleted Order is still counted towards that limit. [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/orders/order-number=\{orderNumber}:DELETE). ## Delete Order in Store ### Delete Order in Store by ID Although it is possible to delete Orders with the [`manage_orders`](/api/scopes/#orders) scope, we strongly recommend doing so only for test Orders. You are responsible for deciding which Orders, if any, can be deleted in your production Project. If a [DiscountCode](/urn?urn=ctp%3Aapi%3Atype%3ADiscountCode) with a `maxApplications` or `maxApplicationsPerCustomer` limit has been applied to the Order, the deleted Order is still counted towards that limit. [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders/\{id}:DELETE). ### Delete Order in Store by OrderNumber Although it is possible to delete Orders with the [`manage_orders`](/api/scopes/#orders) scope, we strongly recommend doing so only for test Orders. You are responsible for deciding which Orders, if any, can be deleted in your production Project. If a [DiscountCode](/urn?urn=ctp%3Aapi%3Atype%3ADiscountCode) with a `maxApplications` or `maxApplicationsPerCustomer` limit has been applied to the Order, the deleted Order is still counted towards that limit. [endpoint definition](/api/projects/orders.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/orders/order-number=\{orderNumber}:DELETE). ## Related pages - [Area overview page with navigation](/api.md) - [Previous page: Carts](/api/projects/carts.md) - [Next page: Payment Methods](/api/projects/payment-methods.md)