--- title: Order API description: >- The Order API provides read-only access to order data. Use this API to get order information and build contextual experiences based on the selected order context. The API offers order details for implementing order-specific functionality and workflows. api_version: 2024-04 api_name: pos-ui-extensions source_url: html: >- https://shopify.dev/docs/api/pos-ui-extensions/latest/target-apis/contextual-apis/order-api md: >- https://shopify.dev/docs/api/pos-ui-extensions/latest/target-apis/contextual-apis/order-api.md --- # Order API **Requires pos.purchase.post.action.menu-item.render:** The Order API provides read-only access to order data. Use this API to get order information and build contextual experiences based on the selected order context. The API offers order details for implementing order-specific functionality and workflows. #### Use cases * **Order access:** Access the order identifier to implement order-specific functionality. * **Order extensions:** Build extensions displaying order information or management tools. * **Contextual UI:** Create contextual interfaces adapting based on current order context. * **External integrations:** Link order data with external systems or order management platforms. ## Support Targets (2) ### Supported targets * [pos.​purchase.​post.​action.​menu-item.​render](https://shopify.dev/docs/api/pos-ui-extensions/2024-04/targets/post-purchase#post-purchase-action-menu-item-) * [pos.​purchase.​post.​action.​render](https://shopify.dev/docs/api/pos-ui-extensions/2024-04/targets/post-purchase#post-purchase-action-modal-) ## OrderApi The `OrderApi` object provides access to order data. Access this property through `api.order` to interact with the current order context. * **id** **number** **required** The unique identifier for the order. Use for order lookups, implementing order-specific functionality, and integrating with external systems. * **name** **string** **required** The name of the order as configured by the merchant. Use for order identification, displays, and customer-facing interfaces. * **customerId** **number** The unique identifier of the customer associated with the order. Returns `undefined` if no customer is associated. Use for customer-specific functionality and personalized experiences. Examples ### Examples * #### Access order data in an action modal ##### Description Retrieve and display order information within an action modal. This example shows how to access order details like ID and line item count using \`api.data.order.initial\` in an action context, useful for building post-purchase workflows or order review interfaces. ##### React ```tsx import React from 'react'; import { reactExtension, Screen, Navigator, ScrollView, Text, Section, useApi, } from '@shopify/ui-extensions-react/point-of-sale'; const PostPurchaseAction = () => { const api = useApi<'pos.purchase.post.action.render'>(); const order = api.order; return (
Order ID: {order.id} Order Name: {order.name} {order.customerId && Order Customer ID: {order.customerId}}
); }; export default reactExtension('pos.purchase.post.action.render', () => ( )); ``` ##### TS ```ts import { extension, Screen, ScrollView, Text, } from '@shopify/ui-extensions/point-of-sale'; export default extension('pos.purchase.post.action.render', (root, api) => { const order = api.order; const screen = root.createComponent(Screen, { name: 'PostPurchaseAction', title: 'Post Purchase Action', }); const scrollView = root.createComponent(ScrollView, {}); const orderName = root.createComponent(Text, {}, `Order Name: ${order.name}`); const orderId = root.createComponent(Text, {}, `Order ID: ${order.id}`); const orderCustomerId = root.createComponent( Text, {}, `Order Customer ID: ${order.customerId}`, ); scrollView.append(orderName); scrollView.append(orderId); scrollView.append(orderCustomerId); screen.append(scrollView); root.append(screen); root.mount(); }); ``` * #### Show order information in a block component ##### Description Display order data within a block target on the order details screen. This example demonstrates how to access and present order information like ID and line items in a block, enabling you to add custom order insights or actions directly on the order details page. ##### React ```tsx import React from 'react'; import { reactExtension, POSBlock, POSBlockRow, useApi, Text, } from '@shopify/ui-extensions-react/point-of-sale'; const OrderDetailsBlock = () => { const api = useApi<'pos.purchase.post.action.render'>(); const order = api.order; return ( Order Name: {order.name} Order ID {order.id.toString()} {order.customerId && ( Order Customer ID {order.customerId.toString()} )} ); }; export default reactExtension('pos.purchase.post.block.render', () => ( )); ``` ##### TS ```ts import { extension, Screen, Navigator, ScrollView, Text, Section, } from '@shopify/ui-extensions/point-of-sale'; export default extension('pos.purchase.post.action.render', (root, api) => { const order = api.order; const screen = root.createComponent(Screen, { name: 'PostPurchaseAction', title: 'Post Purchase Action', }); const scrollView = root.createComponent(ScrollView, {}); const orderName = root.createComponent(Text, {}, `Order Name: ${order.name}`); const orderId = root.createComponent(Text, {}, `Order ID: ${order.id}`); const orderCustomerId = root.createComponent( Text, {}, `Order Customer ID: ${order.customerId}`, ); scrollView.append(orderName); scrollView.append(orderId); scrollView.append(orderCustomerId); screen.append(scrollView); root.append(screen); root.mount(); }); ``` ## Best practices * **Implement order-specific features:** Use the order context to enable specialized functionality like order fulfillment, customer communication, or order modification workflows. * **Validate order access:** Verify that the order ID is valid before performing order-specific operations or external API calls. ## Limitations * The API provides only basic order information—use Shopify APIs or external systems to fetch additional order details like line items, totals, or fulfillment status. * Order data reflects the current POS session and may not include real-time updates from other channels until the session is refreshed.