--- title: FulfillmentOrder description: Manage an item or a group of items in an order that are to be fulfilled from the same location. Retrieve and cancel fulfillment orders, mark fulfillment orders as incomplete, or move fulfillment orders to a new location. api_version: 2025-01 api_name: admin-rest api_type: rest source_url: html: https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder md: https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder.md --- ![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg) The REST Admin API is a legacy API as of October 1, 2024. Starting April 1, 2025, all new public apps must be built exclusively with the [GraphQL Admin API](https://shopify.dev/docs/api/admin-graphql). For details and migration steps, visit our [migration guide](https://shopify.dev/docs/apps/build/graphql/migrate). # Fulfillment​Order Multiple access scopes needed — refer to each endpoint for access scope requirements. Requires access to [protected customer data](https://shopify.dev/apps/store/data-protection/protected-customer-data). The FulfillmentOrder resource represents either an item or a group of items in an [order](https://shopify.dev/docs/admin-api/rest/reference/orders/order) that are to be fulfilled from the same location. There can be more than one fulfillment order for an [order](https://shopify.dev/docs/admin-api/rest/reference/orders/order) at a given location. ![](https://shopify.dev/assets/api/reference/fulfillment_order_relationships.png) Fulfillment orders represent the work which is intended to be done in relation to an order. When the fulfillment of some or all line items has started, a [Fulfillment](https://shopify.dev/api/admin-rest/latest/resources/fulfillment) is created by a merchant or third party to represent the ongoing or completed work of fulfillment. [See below for more details on creating fulfillments](#fulfillment-order-creation). Note Shopify creates fulfillment orders automatically when an order is created. It is not possible to manually create fulfillment orders. [See below for more details on the lifecycle of a fulfillment order](#fulfillment-order-lifecycle). ## Retrieving fulfillment orders ## All fulfillment orders related to a given order can be retrieved with the [Get fulfillment orders by order ID](https://shopify.dev/api/admin-rest/latest/resources/fulfillmentorder#get-orders-order-id-fulfillment-orders) endpoint. [API access scopes](#api-access-scopes) govern which fulfillments orders are returned to clients. An API client will only receive a subset of the fulfillment orders which belong to an order if they don't have the necessary access scopes to view all of the fulfillment orders.Fulfillment service apps can retrieve the fulfillment orders which have been assigned to their locations with the [AssignedFulfillmentOrder](https://shopify.dev/docs/api/admin-rest/latest/resources/assignedfulfillmentorder) resource. The `assignment_status` parameter in the [Retrieve a list of assigned fulfillment orders](https://shopify.dev/api/admin-rest/latest/resources/assignedfulfillmentorder#get-assigned-fulfillment-orders?assignment-status=cancellation-requested\&location-ids\[]=24826418) query controls whether all assigned fulfillment orders should be returned or only those where a merchant has sent a [fulfilment request](https://shopify.dev/docs/api/admin-rest/latest/resources/fulfillmentrequest) and it has yet to be responded to. The API client must be granted the `read_assigned_fulfillment_orders` access scope to access the assigned fulfillment orders.A specific fulfillment order can be retrieved with the [Get fulfillment order](https://shopify.dev/api/admin-rest/latest/resources/fulfillmentorder#get-orders-order-id-fulfillment-orders) endpoint. ## The lifecycle of a fulfillment order ### Fulfillment Order Creation After an order is created, a background worker performs the order routing process which determines which locations will be responsible for fulfilling the purchased items. Once the order routing process is complete, one or more fulfillment orders will be created and assigned to these locations. It is not possible to manually create fulfillment orders. Once a fulfillment order has been created, it will have one of two different lifecycles depending on the type of location which the fulfillment order is assigned to. ### The lifecycle of a fulfillment order at a merchant managed location Fulfillment orders are completed by creating [fulfillments](https://shopify.dev/api/admin-rest/latest/resources/fulfillment). Fulfillments represents the work done. For digital products a merchant or an order management app would create a fulfilment once the digital asset has been provisioned. For example, in the case of a digital gift card, a merchant would to do this once the gift card has been activated - before the email being shipped. On the other hand, for a traditional shipped order, a merchant or an order management app would create a fulfillment after picking and packing the items relating to a fulfillment order, but before the courier has collected the goods. [Learn about managing fulfillment orders as an order management app](https://shopify.dev/apps/fulfillment/order-management-apps/manage-fulfillments). ### The lifecycle of a fulfillment order at a location which is managed by a fulfillment service For fulfillment orders which are assigned to a location that is managed by a fulfillment service, a merchant or an Order Management App can [send a fulfillment request](https://shopify.dev/api/admin-rest/latest/resources/fulfillmentrequest#post-fulfillment-orders-fulfillment-order-id-fulfillment-request) to the fulfillment service which operates the location to request that they fulfill the associated items. A fulfillment service has the option to [accept](https://shopify.dev/api/admin-rest/latest/resources/fulfillmentrequest#post-fulfillment-orders-fulfillment-order-id-fulfillment-request-accept) or [reject](https://shopify.dev/api/admin-rest/latest/resources/fulfillmentrequest#post-fulfillment-orders-fulfillment-order-id-fulfillment-request-accept) this fulfillment request. Once the fulfillment service has accepted the request, the request can no longer be cancelled by the merchant or order management app and instead a [cancellation request](https://shopify.dev/api/admin-rest/latest/resources/cancellationrequest) must be submitted to the fulfillment service. Once a fulfillment service accepts a fulfillment request, then after they are ready to pack items and send them for delivery, they create fulfillments with the [Create a fulfillment for one or many fulfillment orders](https://shopify.dev/api/admin-rest/latest/resources/fulfillment#post-fulfillments) endpoint. They can provide tracking information right away or create fulfillments without it and then [update tracking information for fulfillments](https://shopify.dev/api/admin-rest/latest/resources/fulfillment#post-fulfillments-fulfillment-id-update-tracking). [Learn about managing fulfillment orders as a fulfillment service](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments). ## API access scopes Fulfillment orders are governed by the following API access scopes: * The `read_merchant_managed_fulfillment_orders` and `write_merchant_managed_fulfillment_orders` access scopes grant access to fulfillment orders assigned to merchant-managed locations. * The `read_assigned_fulfillment_orders` and `write_assigned_fulfillment_orders` access scopes are intended for fulfillment services. These scopes grant access to fulfillment orders assigned to locations that are being managed by fulfillment services. * The `read_third_party_fulfillment_orders` and `write_third_party_fulfillment_orders` access scopes grant access to fulfillment orders assigned to locations managed by other fulfillment services. ### Fulfillment service app access scopes Usually, **fulfillment services** have the `write_assigned_fulfillment_orders` access scope and don't have the `*_third_party_fulfillment_orders` or `*_merchant_managed_fulfillment_orders` access scopes. The app will only have access to the fulfillment orders assigned to their location (or multiple locations if the app registers multiple fulfillment services on the shop). The app will not have access to fulfillment orders assigned to merchant-managed locations or locations owned by other fulfillment service apps. ### Order management app access scopes **Order management apps** will usually request `write_merchant_managed_fulfillment_orders` and `write_third_party_fulfillment_orders` access scopes. This will allow them to manage all fulfillment orders on behalf of a merchant. If an app combines the functions of an order management app and a fulfillment service, then the app should request all access scopes to manage all assigned and all unassigned fulfillment orders. ## Notifications about fulfillment orders Fulfillment services are required to [register](https://shopify.dev/docs/api/admin-rest/latest/resources/fulfillmentservice) a self-hosted callback URL which has a number of uses. One of these uses is that this callback URL will be notified whenever a merchant submits a fulfillment or cancellation request. Both merchants and apps can [subscribe](https://shopify.dev/docs/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks) to [fulfillment order webhooks](https://shopify.dev/docs/api/admin-rest/latest/resources/webhook#event-topics-fulfillment-orders-cancellation-request-accepted) to be notified whenever fulfillment order related domain events occur. [Learn about fulfillment workflows](https://shopify.dev/apps/fulfillment). \# ## Endpoints * [post](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-cancel) [/admin/api/2025-01/fulfillment\_​orders/{fulfillment\_​order\_​id}/cancel.​json](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-cancel) Cancel a fulfillment order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderCancel?example=cancel-a-fulfillment-order) [fulfillmentOrderCancel](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderCancel?example=cancel-a-fulfillment-order) * [post](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-close) [/admin/api/2025-01/fulfillment\_​orders/{fulfillment\_​order\_​id}/close.​json](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-close) Marks a fulfillment order as incomplete [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderClose?example=marks-a-fulfillment-order-as-incomplete) [fulfillmentOrderClose](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderClose?example=marks-a-fulfillment-order-as-incomplete) * [post](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-hold) [/admin/api/2025-01/fulfillment\_​orders/{fulfillment\_​order\_​id}/hold.​json](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-hold) Holds fulfillment of a fulfillment order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderHold) [fulfillmentOrderHold](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderHold) * [post](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-move) [/admin/api/2025-01/fulfillment\_​orders/{fulfillment\_​order\_​id}/move.​json](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-move) Moves a fulfillment order to a new location [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderMove?example=moves-a-fulfillment-order-to-a-new-location) [fulfillmentOrderMove](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderMove?example=moves-a-fulfillment-order-to-a-new-location) * [post](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-open) [/admin/api/2025-01/fulfillment\_​orders/{fulfillment\_​order\_​id}/open.​json](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-open) Marks the fulfillment order as open [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderOpen?example=marks-the-fulfillment-order-as-open) [fulfillmentOrderOpen](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderOpen?example=marks-the-fulfillment-order-as-open) * [post](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-release-hold) [/admin/api/2025-01/fulfillment\_​orders/{fulfillment\_​order\_​id}/release\_​hold.​json](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-release-hold) Releases all holds on a fulfillment order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderReleaseHold) [fulfillmentOrderReleaseHold](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderReleaseHold) * [post](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-reschedule) [/admin/api/2025-01/fulfillment\_​orders/{fulfillment\_​order\_​id}/reschedule.​json](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-fulfillment-order-id-reschedule) Reschedules the fulfill\_at time of a scheduled fulfillment order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderReschedule?example=reschedules-the-fulfill_at-time-of-a-scheduled-fulfillment-order) [fulfillmentOrderReschedule](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderReschedule?example=reschedules-the-fulfill_at-time-of-a-scheduled-fulfillment-order) * [post](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-set-fulfillment-orders-deadline) [/admin/api/2025-01/fulfillment\_​orders/set\_​fulfillment\_​orders\_​deadline.​json](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#post-fulfillment-orders-set-fulfillment-orders-deadline) Sets deadline for fulfillment orders [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrdersSetFulfillmentDeadline?example=sets-deadline-for-fulfillment-orders) [fulfillmentOrdersSetFulfillmentDeadline](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrdersSetFulfillmentDeadline?example=sets-deadline-for-fulfillment-orders) * [get](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#get-fulfillment-orders-fulfillment-order-id) [/admin/api/2025-01/fulfillment\_​orders/{fulfillment\_​order\_​id}.​json](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#get-fulfillment-orders-fulfillment-order-id) Retrieves a specific fulfillment order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/queries/fulfillmentOrder?example=retrieves-a-specific-fulfillment-order) [fulfillmentOrder](https://shopify.dev/docs/api/admin-graphql/latest/queries/fulfillmentOrder?example=retrieves-a-specific-fulfillment-order) * [get](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#get-orders-order-id-fulfillment-orders) [/admin/api/2025-01/orders/{order\_​id}/fulfillment\_​orders.​json](https://shopify.dev/docs/api/admin-rest/2025-01/resources/fulfillmentorder#get-orders-order-id-fulfillment-orders) Retrieves a list of fulfillment orders for a specific order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/queries/order) [order](https://shopify.dev/docs/api/admin-graphql/latest/queries/order) *** ## The FulfillmentOrder resource ### Properties *** assigned\_location\_id -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Location#field-Location.fields.id) [id](https://shopify.dev/docs/api/admin-graphql/latest/objects/Location#field-Location.fields.id) The ID of the location that has been assigned to do the work. *** destination -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.destination) [destination](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.destination) The destination where the items should be sent. Show destination properties * **id**: The ID of the fulfillment order destination. * **address1**: The street address of the assigned location. * **address2**: An optional additional field for the street address of the assigned location. * **city**: The city of the destination. * **company**: The company of the destination. * **country**: The country of the destination. * **email**: The email of the customer at the destination. * **first\_name**: The first name of the customer at the destination. * **last\_name**: The last name of the customer at the destination. * **phone**: The phone number of the customer at the destination. * **province**: The province of the destination. * **zip**: The ZIP code of the destination. *** delivery\_method -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.deliveryMethod) [deliveryMethod](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.deliveryMethod) The type of method used to transfer a product or service to a customer. Show delivery\_method properties * **id**: The ID of the delivery method. * **method\_type**: The type of delivery method. Valid values: * **local**: A delivery to a customer's doorstep. * **none**: No delivery method. * **pick\_up**: A delivery that a customer picks up at your retail store, curbside, or any location that you choose. * **retail**: Items delivered immediately in a retail store. * **shipping**: A delivery to a customer using a shipping carrier. * **min\_delivery\_date\_time**: The minimum date and time by which the delivery is expected to be completed. * **max\_delivery\_date\_time**: The maximum date and time by which the delivery is expected to be completed. * **additional\_information**: The Additional information to consider when performing the delivery. It has the following properties: * **instructions**: The delivery instructions to follow when performing the delivery. * **phone**: The phone number to contact when performing the delivery. * **branded\_promise**: The branded promise that was presented to the buyer during checkout. For example: Shop Promise. It has the following properties: * **name**: The handle of the branded promise. For example: \`shop\_promise\`. * **handle**: The name of the branded promise. For example: \`Shop Promise\`. * **service\_code**: A reference to the shipping method. * **source\_reference**: Source reference is promise provider specific data associated with delivery promise. * **presented\_name**: The name of the delivery option that was presented to the buyer during checkout. *** fulfill\_at -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.fulfillAt) [fulfillAt](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.fulfillAt) The date and time at which the fulfillment order will be fulfillable. When this date and time is reached, a `scheduled` fulfillment order is automatically transitioned to `open`. For example, the `fulfill_at` date for a subscription order might be the 1st of each month, a pre-order `fulfill_at` date would be `nil`, and a standard order `fulfill_at` date would be the order creation date. For more information about fulfillment statuses, refer to the **status** property. *** fulfill\_by -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.fulfillBy) [fulfillBy](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.fulfillBy) The latest date and time by which all items in the fulfillment order need to be fulfilled. *** fulfillment\_holds -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.fulfillmentHolds) [fulfillmentHolds](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.fulfillmentHolds) Represents the fulfillment holds applied on the fulfillment order. Show fulfillment\_holds properties * **reason**: The reason for the fulfillment hold. * **reason\_notes**: Additional information about the fulfillment hold reason. *** id -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.id) [id](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.id) An ID for the fulfillment order. *** international\_duties -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.internationalDuties) [internationalDuties](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.internationalDuties) The international duties relevant to the fulfillment order. Show international\_duties properties * **incoterm**: The method of duties payment. Valid values: * **DAP**: Delivered at place. * **DDP**: Delivered duty paid. *** line\_items -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.lineItems) [lineItems](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.lineItems) Represents line items belonging to a fulfillment order: Show line\_items properties * **id**: The ID of the fulfillment order line item. * **shop\_id**: The ID of the shop associated with the fulfillment order line item. * **fulfillment\_order\_id**: The ID of the fulfillment order associated with this line item. * **line\_item\_id**: The ID of the line item associated with this fulfillment order line item. * **inventory\_item\_id**: The ID of the inventory item associated with this fulfillment order line item. * **quantity**: The total number of units to be fulfilled. * **fulfillable\_quantity**: The number of units remaining to be fulfilled. * **variant\_id**: The ID of the variant associated with this fulfillment order line item. *** order\_id -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/Order#field-Order.fields.id) [id](https://shopify.dev/docs/api/admin-graphql/latest/objects/Order#field-Order.fields.id) The ID of the order that's associated with the fulfillment order. *** request\_status -> [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.requestStatus) [requestStatus](https://shopify.dev/docs/api/admin-graphql/latest/objects/FulfillmentOrder#field-FulfillmentOrder.fields.requestStatus) The request status of the fulfillment order. Valid values: Show request\_status properties * **unsubmitted**: The initial request status for newly-created fulfillment orders. This is the only valid request status for fulfillment orders that aren't assigned to a fulfillment service. * **submitted**: The merchant requested fulfillment for this fulfillment order. * **accepted**: The fulfillment service accepted the merchant's fulfillment request. * **rejected**: The fulfillment service rejected the merchant's fulfillment request. * **cancellation\_requested**: The merchant requested a cancellation of the fulfillment request for this fulfillment order. * **cancellation\_accepted**: The fulfillment service accepted the merchant's fulfillment cancellation request. * **cancellation\_rejected**: The fulfillment service rejected the merchant's fulfillment cancellation request. * **closed**: The fulfillment service closed the fulfillment order without completing it. *** shop\_id deprecated The ID of the shop that's associated with the fulfillment order. *** {} ## The FulfillmentOrder resource ```json { "assigned_location_id": 3183479, "destination": { "id": 54433189, "address1": "123 Amoebobacterieae St", "address2": "Unit 806", "city": "Ottawa", "company": "", "country": "Canada", "email": "bob@example.com", "first_name": "Bob", "last_name": "Bobsen", "phone": "(555)555-5555", "province": "Ontario", "zip": "K2P0V6" }, "delivery_method": { "id": 64434189, "method_type": "local", "min_delivery_date_time": "2022-04-20T23:59:59-04:00", "max_delivery_date_time": "2022-04-28T23:59:59-04:00", "additional_information": { "instructions": "Leave at door", "phone": "111-111-1111" }, "service_code": "Economy", "source_reference": "Shopify", "branded_promise": { "name": "Shop Promise", "handle": "shop_promise" }, "presented_name": "Economy" }, "fulfill_at": "2021-01-01", "fulfill_by": "2021-01-01", "fulfillment_holds": [ { "reason": "incorrect_address", "reason_notes": "the apartment number is missing." } ], "id": 255858046, "international_duties": { "incoterm": "DAP" }, "line_items": [ { "id": 466157049, "shop_id": 3998762, "fulfillment_order_id": 1568020, "line_item_id": 466157049, "inventory_item_id": 6588097, "quantity": 1, "fulfillable_quantity": 1, "variant_id": 2385087 } ], "order_id": 3183479, "request_status": "unsubmitted", "shop_id": 255858046, "status": "open", "supported_actions": [ "create_fulfillment", "request_fulfillment", "cancel_fulfillment_order", "request_cancellation" ], "merchant_requests": [ { "message": "Hello, World!", "request_options": { "shipping_method": "pidgeon carrier", "note": "handle with care", "date": "2019-08-13T16:09:58-04:00" }, "kind": "fulfillment_request" } ], "assigned_location": { "address1": "123 Amoebobacterieae St", "address2": "Unit 806", "city": "Ottawa", "country_code": "CA", "location_id": 17232953366, "name": "Bob Bobsen", "phone": "(555)555-5555", "province": "Ontario", "zip": "K2P0V6" }, "created_at": "2022-01-01T11:00:00-01:00", "updated_at": "2022-01-01T11:00:00-01:00" } ``` *** ## postCancel a fulfillment order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderCancel?example=cancel-a-fulfillment-order) [fulfillmentOrderCancel](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderCancel?example=cancel-a-fulfillment-order) Marks a fulfillment order as cancelled. ### Parameters *** api\_version string required *** fulfillment\_order\_id string required *** ### Examples Cancel a fulfillment order Path parameters fulfillment\_​order\_​id=​1046000789 string required post ## /admin/api/2025-01/fulfillment\_​orders/1046000789/cancel.​json ```bash curl -d '{}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000789/cancel.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "fulfillment_order": { "id": 1046000789, "created_at": "2025-10-01T15:06:22-04:00", "updated_at": "2025-10-01T15:06:24-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 24826418, "request_status": "submitted", "status": "closed", "fulfill_at": null, "fulfill_by": null, "supported_actions": [], "destination": { "id": 1042572121, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "line_items": [], "international_duties": null, "fulfillment_holds": [], "delivery_method": null, "assigned_location": { "address1": null, "address2": null, "city": null, "country_code": "DE", "location_id": 24826418, "name": "Apple Api Shipwire", "phone": null, "province": null, "zip": null }, "merchant_requests": [] }, "replacement_fulfillment_order": { "id": 1046000790, "created_at": "2025-10-01T15:06:24-04:00", "updated_at": "2025-10-01T15:06:24-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 24826418, "request_status": "unsubmitted", "status": "open", "fulfill_at": null, "fulfill_by": null, "supported_actions": [ "request_fulfillment", "create_fulfillment", "hold" ], "destination": { "id": 1042572122, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "line_items": [ { "id": 1072503286, "shop_id": 548380009, "fulfillment_order_id": 1046000790, "quantity": 1, "line_item_id": 518995019, "inventory_item_id": 49148385, "fulfillable_quantity": 1, "variant_id": 49148385 } ], "international_duties": null, "fulfillment_holds": [], "delivery_method": null, "assigned_location": { "address1": null, "address2": null, "city": null, "country_code": "DE", "location_id": 24826418, "name": "Apple Api Shipwire", "phone": null, "province": null, "zip": null }, "merchant_requests": [] } } ``` ### examples * #### Cancel a fulfillment order ##### ```curl curl -d '{}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000789/cancel.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const fulfillment_order = new admin.rest.resources.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000789; await fulfillment_order.cancel({}); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session fulfillment_order = ShopifyAPI::FulfillmentOrder.new(session: test_session) fulfillment_order.id = 1046000789 fulfillment_order.cancel( session: test_session, ) ``` ##### ```node // Session is built by the OAuth process const fulfillment_order = new shopify.rest.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000789; await fulfillment_order.cancel({}); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_order":{"id":1046000789,"created_at":"2025-10-01T15:06:22-04:00","updated_at":"2025-10-01T15:06:24-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"closed","fulfill_at":null,"fulfill_by":null,"supported_actions":[],"destination":{"id":1042572121,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]},"replacement_fulfillment_order":{"id":1046000790,"created_at":"2025-10-01T15:06:24-04:00","updated_at":"2025-10-01T15:06:24-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"unsubmitted","status":"open","fulfill_at":null,"fulfill_by":null,"supported_actions":["request_fulfillment","create_fulfillment","hold"],"destination":{"id":1042572122,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503286,"shop_id":548380009,"fulfillment_order_id":1046000790,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}} ``` *** ## postMarks a fulfillment order as incomplete [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderClose?example=marks-a-fulfillment-order-as-incomplete) [fulfillmentOrderClose](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderClose?example=marks-a-fulfillment-order-as-incomplete) Requires `assigned_fulfillment_orders` access scope. Marks an in-progress fulfillment order as incomplete, indicating the fulfillment service is unable to ship any remaining items, and closes the fulfillment request.\ \ This mutation can only be called for fulfillment orders that meet the following criteria: * Assigned to a fulfillment service location, * The fulfillment request has been accepted, * The fulfillment order status is `IN_PROGRESS`. This mutation can only be called by the fulfillment service app that accepted the fulfillment request. Calling this mutation returns the control of the fulfillment order to the merchant, allowing them to move the fulfillment order line items to another location and fulfill from there, remove and refund the line items, or to request fulfillment from the same fulfillment service again.\ \ Closing a fulfillment order is explained in [the fulfillment service guide](https://shopify.dev/apps/build/orders-fulfillment/fulfillment-service-apps/build-for-fulfillment-services#step-7-optional-close-a-fulfillment-order). ### Parameters *** api\_version string required *** fulfillment\_order\_id string required *** message An optional reason for marking the fulfillment order as incomplete. *** ### Examples Transition a fulfillment order from in progress to incomplete Path parameters fulfillment\_​order\_​id=​1046000792 string required post ## /admin/api/2025-01/fulfillment\_​orders/1046000792/close.​json ```bash curl -d '{"fulfillment_order":{"message":"Not enough inventory to complete this work."}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000792/close.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "fulfillment_order": { "id": 1046000792, "created_at": "2025-10-01T15:06:26-04:00", "updated_at": "2025-10-01T15:06:27-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 24826418, "request_status": "closed", "status": "incomplete", "fulfill_at": null, "fulfill_by": null, "supported_actions": [ "request_fulfillment", "create_fulfillment", "hold" ], "destination": { "id": 1042572124, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "line_items": [ { "id": 1072503288, "shop_id": 548380009, "fulfillment_order_id": 1046000792, "quantity": 1, "line_item_id": 518995019, "inventory_item_id": 49148385, "fulfillable_quantity": 1, "variant_id": 49148385 } ], "international_duties": null, "fulfillment_holds": [], "delivery_method": null, "assigned_location": { "address1": null, "address2": null, "city": null, "country_code": "DE", "location_id": 24826418, "name": "Apple Api Shipwire", "phone": null, "province": null, "zip": null }, "merchant_requests": [] } } ``` ### examples * #### Transition a fulfillment order from in progress to incomplete ##### ```curl curl -d '{"fulfillment_order":{"message":"Not enough inventory to complete this work."}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000792/close.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const fulfillment_order = new admin.rest.resources.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000792; await fulfillment_order.close({ body: {"fulfillment_order": {"message": "Not enough inventory to complete this work."}}, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session fulfillment_order = ShopifyAPI::FulfillmentOrder.new(session: test_session) fulfillment_order.id = 1046000792 fulfillment_order.close( session: test_session, body: {"fulfillment_order" => {"message" => "Not enough inventory to complete this work."}}, ) ``` ##### ```node // Session is built by the OAuth process const fulfillment_order = new shopify.rest.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000792; await fulfillment_order.close({ body: {"fulfillment_order": {"message": "Not enough inventory to complete this work."}}, }); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_order":{"id":1046000792,"created_at":"2025-10-01T15:06:26-04:00","updated_at":"2025-10-01T15:06:27-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"closed","status":"incomplete","fulfill_at":null,"fulfill_by":null,"supported_actions":["request_fulfillment","create_fulfillment","hold"],"destination":{"id":1042572124,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503288,"shop_id":548380009,"fulfillment_order_id":1046000792,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}} ``` *** ## postHolds fulfillment of a fulfillment order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderHold) [fulfillmentOrderHold](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderHold) Halts all fulfillment work on a fulfillment order. Changes the fulfillment order status to `ON_HOLD` and creates a fulfillment hold. ### Parameters *** api\_version string required *** fulfillment\_hold object required An object containing Show fulfillment\_hold properties * `reason`: (String) **required** A reason for the fulfillment hold. * `awaiting_payment` The fulfillment hold is applied because payment is pending. * `high_risk_of_fraud` The fulfillment hold is applied because of a high risk of fraud. * `incorrect_address` The fulfillment hold is applied because of an incorrect address. * `inventory_out_of_stock` The fulfillment hold is applied because inventory is out of stock. * `other` The fulfillment hold is applied for any other reason. * `reason_notes`: (String) **optional** Additional information about the fulfillment hold reason. * `notify_merchant`: (Boolean) **optional** Whether the merchant should receive a notification about the fulfillment hold. " "If set to true, then the merchant will be notified on the Shopify mobile app " "(if they use it to manage their store). The default value is false. * `fulfillment_order_line_items`: (Array) An **optional** array of fulfillment order line item ids and the quantity of each to move. **Added as of version 2023-04** *** fulfillment\_order\_id string required *** ### Examples Apply a fulfillment hold on a fulfillment order because some inventory is out of stock Path parameters fulfillment\_​order\_​id=​1046000801 string required Request body fulfillment\_​hold​ Fulfillment\_hold resource Show fulfillment\_hold properties fulfillment\_​hold:​{"reason":"inventory\_out\_of\_stock",​"reason\_notes":"Not enough inventory to complete this work.",​"fulfillment\_order\_line\_items":\[{"id":1072503297,​"quantity":1}]} object required An object containing Show fulfillment\_hold properties * `reason`: (String) **required** A reason for the fulfillment hold. * `awaiting_payment` The fulfillment hold is applied because payment is pending. * `high_risk_of_fraud` The fulfillment hold is applied because of a high risk of fraud. * `incorrect_address` The fulfillment hold is applied because of an incorrect address. * `inventory_out_of_stock` The fulfillment hold is applied because inventory is out of stock. * `other` The fulfillment hold is applied for any other reason. * `reason_notes`: (String) **optional** Additional information about the fulfillment hold reason. * `notify_merchant`: (Boolean) **optional** Whether the merchant should receive a notification about the fulfillment hold. " "If set to true, then the merchant will be notified on the Shopify mobile app " "(if they use it to manage their store). The default value is false. * `fulfillment_order_line_items`: (Array) An **optional** array of fulfillment order line item ids and the quantity of each to move. **Added as of version 2023-04** post ## /admin/api/2025-01/fulfillment\_​orders/1046000801/hold.​json ```bash curl -d '{"fulfillment_hold":{"reason":"inventory_out_of_stock","reason_notes":"Not enough inventory to complete this work.","fulfillment_order_line_items":[{"id":1072503297,"quantity":1}]}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000801/hold.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "fulfillment_order": { "id": 1046000801, "created_at": "2025-10-01T15:06:40-04:00", "updated_at": "2025-10-01T15:06:41-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 24826418, "request_status": "unsubmitted", "status": "on_hold", "fulfill_at": null, "fulfill_by": null, "supported_actions": [ "release_hold", "hold" ], "destination": { "id": 1042572133, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "line_items": [ { "id": 1072503297, "shop_id": 548380009, "fulfillment_order_id": 1046000801, "quantity": 1, "line_item_id": 518995019, "inventory_item_id": 49148385, "fulfillable_quantity": 1, "variant_id": 49148385 } ], "international_duties": null, "fulfillment_holds": [ { "reason": "inventory_out_of_stock", "reason_notes": "Not enough inventory to complete this work." } ], "delivery_method": null, "assigned_location": { "address1": null, "address2": null, "city": null, "country_code": "DE", "location_id": 24826418, "name": "Apple Api Shipwire", "phone": null, "province": null, "zip": null }, "merchant_requests": [] } } ``` ### examples * #### Apply a fulfillment hold on a fulfillment order because some inventory is out of stock ##### ```curl curl -d '{"fulfillment_hold":{"reason":"inventory_out_of_stock","reason_notes":"Not enough inventory to complete this work.","fulfillment_order_line_items":[{"id":1072503297,"quantity":1}]}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000801/hold.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const fulfillment_order = new admin.rest.resources.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000801; await fulfillment_order.hold({ body: {"fulfillment_hold": {"reason": "inventory_out_of_stock", "reason_notes": "Not enough inventory to complete this work.", "fulfillment_order_line_items": [{"id": 1072503297, "quantity": 1}]}}, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session fulfillment_order = ShopifyAPI::FulfillmentOrder.new(session: test_session) fulfillment_order.id = 1046000801 fulfillment_order.hold( session: test_session, body: {"fulfillment_hold" => {"reason" => "inventory_out_of_stock", "reason_notes" => "Not enough inventory to complete this work.", "fulfillment_order_line_items" => [{"id" => 1072503297, "quantity" => 1}]}}, ) ``` ##### ```node // Session is built by the OAuth process const fulfillment_order = new shopify.rest.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000801; await fulfillment_order.hold({ body: {"fulfillment_hold": {"reason": "inventory_out_of_stock", "reason_notes": "Not enough inventory to complete this work.", "fulfillment_order_line_items": [{"id": 1072503297, "quantity": 1}]}}, }); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_order":{"id":1046000801,"created_at":"2025-10-01T15:06:40-04:00","updated_at":"2025-10-01T15:06:41-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"unsubmitted","status":"on_hold","fulfill_at":null,"fulfill_by":null,"supported_actions":["release_hold","hold"],"destination":{"id":1042572133,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503297,"shop_id":548380009,"fulfillment_order_id":1046000801,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[{"reason":"inventory_out_of_stock","reason_notes":"Not enough inventory to complete this work."}],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}} ``` *** ## postMoves a fulfillment order to a new location [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderMove?example=moves-a-fulfillment-order-to-a-new-location) [fulfillmentOrderMove](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderMove?example=moves-a-fulfillment-order-to-a-new-location) Requires ANY of the following access scopes: `merchant_managed_fulfillment_orders`, `third_party_fulfillment_orders`. Changes the location which is assigned to fulfill a number of unfulfilled fulfillment order line items.\ Moving a fulfillment order will fail in the following circumstances: * The fulfillment order is closed. * The destination location has never stocked the requested inventory item. * The API client doesn't have the correct permissions. Line items which have already been fulfilled can't be re-assigned and will always remain assigned to the original location. You can't change the assigned location while a fulfillment order has a `request_status` of `submitted`, `accepted`, `cancellation_requested`, or `cancellation_rejected`. These request statuses mean that a fulfillment order is awaiting action by a fulfillment service and can't be re-assigned without first having the fulfillment service accept a cancellation request. This behavior is intended to prevent items from being fulfilled by multiple locations or fulfillment services. #### How re-assigning line items affects fulfillment orders If the original fulfillment order doesn't have any line items which are fully or partially fulfilled, the original fulfillment order will be moved to the new location. However if this isn't the case, the moved fulfillment order will differ from the original one. #### Response * `original_fulfillment_order` - The final state of the original fulfillment order.\ As a result of the move operation, the original fulfillment order might be moved to the new location or remain in the original location. The original fulfillment order might have the same status or be closed. * `moved_fulfillment_order` - The fulfillment order which now contains the moved line items and is assigned to the destination location.\ **First scenario:** All line items belonging to the original fulfillment order are re-assigned.\ In this case, this will be the original fulfillment order.\ **Second scenario:** A subset of the line items belonging to the original fulfillment order are re-assigned.\ If the new location is already assigned to fulfill line items on the order, then this will be an existing active fulfillment order. Otherwise, this will be a new fulfillment order with the moved line items assigned. * `remaining_fulfillment_order` - this field is deprecated. ### Parameters *** api\_version string required *** fulfillment\_order [](https://shopify.dev/apps/store/data-protection/protected-customer-data) object required An object containing Show fulfillment\_order properties * `new_location_id`: (integer) The ID of the location where the fulfillment order will be moved. * `fulfillment_order_line_items`: (Array) An **optional** array of fulfillment order line item ids and the quantity of each to move. If left blank, all unfulfilled line items belonging to the fulfillment order are moved. **Added as of version 2023-04**. *** fulfillment\_order\_id string required *** ### Examples Move a fulfillment order to a new location Path parameters fulfillment\_​order\_​id=​1046000802 string required Request body fulfillment\_​order​[](https://shopify.dev/apps/store/data-protection/protected-customer-data) Fulfillment\_order resource Show fulfillment\_order properties fulfillment\_​order:​{"new\_location\_id":655441491,​"fulfillment\_order\_line\_items":\[{"id":1072503298,​"quantity":1}]}[](https://shopify.dev/apps/store/data-protection/protected-customer-data) object required An object containing Show fulfillment\_order properties * `new_location_id`: (integer) The ID of the location where the fulfillment order will be moved. * `fulfillment_order_line_items`: (Array) An **optional** array of fulfillment order line item ids and the quantity of each to move. If left blank, all unfulfilled line items belonging to the fulfillment order are moved. **Added as of version 2023-04**. post ## /admin/api/2025-01/fulfillment\_​orders/1046000802/move.​json ```bash curl -d '{"fulfillment_order":{"new_location_id":655441491,"fulfillment_order_line_items":[{"id":1072503298,"quantity":1}]}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000802/move.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "original_fulfillment_order": { "id": 1046000802, "created_at": "2025-10-01T15:06:42-04:00", "updated_at": "2025-10-01T15:06:43-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 487838322, "request_status": "submitted", "status": "closed", "fulfill_at": null, "fulfill_by": null, "supported_actions": [], "destination": { "id": 1042572134, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "line_items": [], "international_duties": null, "fulfillment_holds": [], "delivery_method": null, "assigned_location": { "address1": null, "address2": null, "city": null, "country_code": "DE", "location_id": 24826418, "name": "Apple Api Shipwire", "phone": null, "province": null, "zip": null }, "merchant_requests": [] }, "moved_fulfillment_order": { "id": 1046000803, "created_at": "2025-10-01T15:06:43-04:00", "updated_at": "2025-10-01T15:06:43-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 655441491, "request_status": "unsubmitted", "status": "open", "fulfill_at": null, "fulfill_by": null, "supported_actions": [ "create_fulfillment", "move", "hold" ], "destination": { "id": 1042572135, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "line_items": [ { "id": 1072503299, "shop_id": 548380009, "fulfillment_order_id": 1046000803, "quantity": 1, "line_item_id": 518995019, "inventory_item_id": 49148385, "fulfillable_quantity": 1, "variant_id": 49148385 } ], "international_duties": null, "fulfillment_holds": [], "delivery_method": null, "assigned_location": { "address1": "50 Rideau Street", "address2": null, "city": "Ottawa", "country_code": "CA", "location_id": 655441491, "name": "50 Rideau Street", "phone": null, "province": "Ontario", "zip": "K1N 9J7" }, "merchant_requests": [] }, "remaining_fulfillment_order": null } ``` ### examples * #### Move a fulfillment order to a new location ##### ```curl curl -d '{"fulfillment_order":{"new_location_id":655441491,"fulfillment_order_line_items":[{"id":1072503298,"quantity":1}]}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000802/move.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const fulfillment_order = new admin.rest.resources.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000802; await fulfillment_order.move({ body: {"fulfillment_order": {"new_location_id": 655441491, "fulfillment_order_line_items": [{"id": 1072503298, "quantity": 1}]}}, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session fulfillment_order = ShopifyAPI::FulfillmentOrder.new(session: test_session) fulfillment_order.id = 1046000802 fulfillment_order.move( session: test_session, body: {"fulfillment_order" => {"new_location_id" => 655441491, "fulfillment_order_line_items" => [{"id" => 1072503298, "quantity" => 1}]}}, ) ``` ##### ```node // Session is built by the OAuth process const fulfillment_order = new shopify.rest.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000802; await fulfillment_order.move({ body: {"fulfillment_order": {"new_location_id": 655441491, "fulfillment_order_line_items": [{"id": 1072503298, "quantity": 1}]}}, }); ``` #### response ```json HTTP/1.1 200 OK{"original_fulfillment_order":{"id":1046000802,"created_at":"2025-10-01T15:06:42-04:00","updated_at":"2025-10-01T15:06:43-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":487838322,"request_status":"submitted","status":"closed","fulfill_at":null,"fulfill_by":null,"supported_actions":[],"destination":{"id":1042572134,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]},"moved_fulfillment_order":{"id":1046000803,"created_at":"2025-10-01T15:06:43-04:00","updated_at":"2025-10-01T15:06:43-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":655441491,"request_status":"unsubmitted","status":"open","fulfill_at":null,"fulfill_by":null,"supported_actions":["create_fulfillment","move","hold"],"destination":{"id":1042572135,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503299,"shop_id":548380009,"fulfillment_order_id":1046000803,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":"50 Rideau Street","address2":null,"city":"Ottawa","country_code":"CA","location_id":655441491,"name":"50 Rideau Street","phone":null,"province":"Ontario","zip":"K1N 9J7"},"merchant_requests":[]},"remaining_fulfillment_order":null} ``` *** ## postMarks the fulfillment order as open [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderOpen?example=marks-the-fulfillment-order-as-open) [fulfillmentOrderOpen](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderOpen?example=marks-the-fulfillment-order-as-open) Requires ANY of the following access scopes: `merchant_managed_fulfillment_orders`, `third_party_fulfillment_orders`. Marks a scheduled fulfillment order as ready for fulfillment. This endpoint allows merchants to work on a scheduled fulfillment order before its expected `fulfill_at` datetime. ### Parameters *** api\_version string required *** fulfillment\_order\_id string required *** ### Examples Transition a fulfillment order from scheduled to open Path parameters fulfillment\_​order\_​id=​1046000797 string required post ## /admin/api/2025-01/fulfillment\_​orders/1046000797/open.​json ```bash curl -d '{}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000797/open.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "fulfillment_order": { "id": 1046000797, "created_at": "2025-10-01T15:06:34-04:00", "updated_at": "2025-10-01T15:06:35-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 24826418, "request_status": "unsubmitted", "status": "open", "fulfill_at": null, "fulfill_by": null, "supported_actions": [ "request_fulfillment", "create_fulfillment", "hold" ], "destination": { "id": 1042572129, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "line_items": [ { "id": 1072503293, "shop_id": 548380009, "fulfillment_order_id": 1046000797, "quantity": 1, "line_item_id": 518995019, "inventory_item_id": 49148385, "fulfillable_quantity": 1, "variant_id": 49148385 } ], "international_duties": null, "fulfillment_holds": [], "delivery_method": null, "assigned_location": { "address1": null, "address2": null, "city": null, "country_code": "DE", "location_id": 24826418, "name": "Apple Api Shipwire", "phone": null, "province": null, "zip": null }, "merchant_requests": [] } } ``` ### examples * #### Transition a fulfillment order from scheduled to open ##### ```curl curl -d '{}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000797/open.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const fulfillment_order = new admin.rest.resources.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000797; await fulfillment_order.open({}); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session fulfillment_order = ShopifyAPI::FulfillmentOrder.new(session: test_session) fulfillment_order.id = 1046000797 fulfillment_order.open( session: test_session, ) ``` ##### ```node // Session is built by the OAuth process const fulfillment_order = new shopify.rest.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000797; await fulfillment_order.open({}); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_order":{"id":1046000797,"created_at":"2025-10-01T15:06:34-04:00","updated_at":"2025-10-01T15:06:35-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"unsubmitted","status":"open","fulfill_at":null,"fulfill_by":null,"supported_actions":["request_fulfillment","create_fulfillment","hold"],"destination":{"id":1042572129,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503293,"shop_id":548380009,"fulfillment_order_id":1046000797,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}} ``` *** ## postReleases all holds on a fulfillment order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderReleaseHold) [fulfillmentOrderReleaseHold](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderReleaseHold) Releases the fulfillment order from all fulfillment holds and changes its status from `ON_HOLD`.\ **NOTE:** It is highly recommended that apps use the [fulfillmentOrderReleaseHold GraphQL mutation](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderReleaseHold) to release specific holds by providing their IDs. Releasing all holds on a fulfillment order will result in the fulfillment order being released prematurely and items being incorrectly fulfilled. ### Parameters *** api\_version string required *** fulfillment\_order\_id string required *** ### Examples Transition a fulfillment order from on\_hold to open Path parameters fulfillment\_​order\_​id=​1046000795 string required post ## /admin/api/2025-01/fulfillment\_​orders/1046000795/release\_​hold.​json ```bash curl -d '{}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000795/release_hold.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "fulfillment_order": { "id": 1046000795, "created_at": "2025-10-01T15:06:30-04:00", "updated_at": "2025-10-01T15:06:31-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 24826418, "request_status": "submitted", "status": "open", "fulfill_at": null, "fulfill_by": null, "supported_actions": [ "cancel_fulfillment_order" ], "destination": { "id": 1042572127, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "origin": { "address1": null, "address2": null, "city": null, "country_code": "DE", "location_id": 24826418, "name": "Apple Api Shipwire", "phone": null, "province": null, "zip": null }, "line_items": [ { "id": 1072503291, "shop_id": 548380009, "fulfillment_order_id": 1046000795, "quantity": 1, "line_item_id": 518995019, "inventory_item_id": 49148385, "fulfillable_quantity": 1, "variant_id": 49148385 } ], "outgoing_requests": [], "international_duties": null, "fulfillment_holds": [], "delivery_method": null } } ``` ### examples * #### Transition a fulfillment order from on\_hold to open ##### ```curl curl -d '{}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000795/release_hold.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const fulfillment_order = new admin.rest.resources.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000795; await fulfillment_order.release_hold({}); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session fulfillment_order = ShopifyAPI::FulfillmentOrder.new(session: test_session) fulfillment_order.id = 1046000795 fulfillment_order.release_hold( session: test_session, ) ``` ##### ```node // Session is built by the OAuth process const fulfillment_order = new shopify.rest.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000795; await fulfillment_order.release_hold({}); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_order":{"id":1046000795,"created_at":"2025-10-01T15:06:30-04:00","updated_at":"2025-10-01T15:06:31-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"fulfill_by":null,"supported_actions":["cancel_fulfillment_order"],"destination":{"id":1042572127,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"origin":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"line_items":[{"id":1072503291,"shop_id":548380009,"fulfillment_order_id":1046000795,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"outgoing_requests":[],"international_duties":null,"fulfillment_holds":[],"delivery_method":null}} ``` *** ## postReschedules the fulfill\_​at time of a scheduled fulfillment order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderReschedule?example=reschedules-the-fulfill_at-time-of-a-scheduled-fulfillment-order) [fulfillmentOrderReschedule](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderReschedule?example=reschedules-the-fulfill_at-time-of-a-scheduled-fulfillment-order) Requires ANY of the following access scopes: `merchant_managed_fulfillment_orders`, `third_party_fulfillment_orders`. Reschedules a scheduled fulfillment order. Updates the value of the `fulfill_at` field on a scheduled fulfillment order. The fulfillment order will be marked as ready for fulfillment at this date and time. #### Response * `fulfillment_order` - a fulfillment order with the rescheduled line items.\ Fulfillment orders may be merged if they have the same `fulfill_at` datetime. If the fulfillment order is merged then the resulting fulfillment order will be returned. Otherwise the original fulfillment order will be returned with an updated `fulfill_at` datetime. ### Parameters *** api\_version string required *** fulfillment\_order\_id string required *** new\_fulfill\_at date ISO 8601 required The new fulfillment deadline of the fulfillment order. Must be in future. *** ### Examples Update the fulfill\_at time of a scheduled fulfillment order Path parameters fulfillment\_​order\_​id=​1046000804 string required post ## /admin/api/2025-01/fulfillment\_​orders/1046000804/reschedule.​json ```bash curl -d '{"fulfillment_order":{"new_fulfill_at":"2026-11-01 19:06 UTC"}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000804/reschedule.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "fulfillment_order": { "id": 1046000804, "created_at": "2025-10-01T15:06:44-04:00", "updated_at": "2025-10-01T15:06:45-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 24826418, "request_status": "unsubmitted", "status": "scheduled", "fulfill_at": "2026-11-01T14:06:00-05:00", "fulfill_by": null, "supported_actions": [ "mark_as_open" ], "destination": { "id": 1042572136, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "line_items": [ { "id": 1072503300, "shop_id": 548380009, "fulfillment_order_id": 1046000804, "quantity": 1, "line_item_id": 518995019, "inventory_item_id": 49148385, "fulfillable_quantity": 1, "variant_id": 49148385 } ], "international_duties": null, "fulfillment_holds": [], "delivery_method": null, "assigned_location": { "address1": null, "address2": null, "city": null, "country_code": "DE", "location_id": 24826418, "name": "Apple Api Shipwire", "phone": null, "province": null, "zip": null }, "merchant_requests": [] } } ``` ### examples * #### Update the fulfill\_at time of a scheduled fulfillment order ##### ```curl curl -d '{"fulfillment_order":{"new_fulfill_at":"2026-11-01 19:06 UTC"}}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000804/reschedule.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const fulfillment_order = new admin.rest.resources.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000804; await fulfillment_order.reschedule({ body: {"fulfillment_order": {"new_fulfill_at": "2026-11-01 19:06 UTC"}}, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session fulfillment_order = ShopifyAPI::FulfillmentOrder.new(session: test_session) fulfillment_order.id = 1046000804 fulfillment_order.reschedule( session: test_session, body: {"fulfillment_order" => {"new_fulfill_at" => "2026-11-01 19:06 UTC"}}, ) ``` ##### ```node // Session is built by the OAuth process const fulfillment_order = new shopify.rest.FulfillmentOrder({session: session}); fulfillment_order.id = 1046000804; await fulfillment_order.reschedule({ body: {"fulfillment_order": {"new_fulfill_at": "2026-11-01 19:06 UTC"}}, }); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_order":{"id":1046000804,"created_at":"2025-10-01T15:06:44-04:00","updated_at":"2025-10-01T15:06:45-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"unsubmitted","status":"scheduled","fulfill_at":"2026-11-01T14:06:00-05:00","fulfill_by":null,"supported_actions":["mark_as_open"],"destination":{"id":1042572136,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503300,"shop_id":548380009,"fulfillment_order_id":1046000804,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}} ``` *** ## postSets deadline for fulfillment orders [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrdersSetFulfillmentDeadline?example=sets-deadline-for-fulfillment-orders) [fulfillmentOrdersSetFulfillmentDeadline](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrdersSetFulfillmentDeadline?example=sets-deadline-for-fulfillment-orders) Requires ANY of the following access scopes: `merchant_managed_fulfillment_orders`, `third_party_fulfillment_orders`, `marketplace_fulfillment_orders`, `orders`. Sets the latest date and time by which the fulfillment orders need to be fulfilled. ### Parameters *** api\_version string required *** fulfillment\_deadline The new fulfillment deadline of the fulfillment orders. *** fulfillment\_order\_ids The IDs of the fulfillment orders for which the deadline is being set *** ### Examples Set a fulfillment deadline for a fulfillment order Request body fulfillment\_​order\_​ids​ Fulfillment\_order\_ids resource Show fulfillment\_order\_ids properties fulfillment\_​order\_​ids:​\[1046000794] The IDs of the fulfillment orders for which the deadline is being set fulfillment\_​deadline:​"2021-05-26T10:00:00-04:00" The new fulfillment deadline of the fulfillment orders. post ## /admin/api/2025-01/fulfillment\_​orders/set\_​fulfillment\_​orders\_​deadline.​json ```bash curl -d '{"fulfillment_order_ids":[1046000794],"fulfillment_deadline":"2021-05-26T10:00:00-04:00"}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/set_fulfillment_orders_deadline.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` {} ## Response JSON ```json HTTP/1.1 200 OK {} ``` ### examples * #### Set a fulfillment deadline for a fulfillment order ##### ```curl curl -d '{"fulfillment_order_ids":[1046000794],"fulfillment_deadline":"2021-05-26T10:00:00-04:00"}' \ -X POST "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/set_fulfillment_orders_deadline.json" \ -H "X-Shopify-Access-Token: {access_token}" \ -H "Content-Type: application/json" ``` ##### ```remix const { admin, session } = await authenticate.admin(request); const fulfillment_order = new admin.rest.resources.FulfillmentOrder({session: session}); await fulfillment_order.set_fulfillment_orders_deadline({ body: {"fulfillment_order_ids": [1046000794], "fulfillment_deadline": "2021-05-26T10:00:00-04:00"}, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session fulfillment_order = ShopifyAPI::FulfillmentOrder.new(session: test_session) fulfillment_order.set_fulfillment_orders_deadline( session: test_session, body: {"fulfillment_order_ids" => [1046000794], "fulfillment_deadline" => "2021-05-26T10:00:00-04:00"}, ) ``` ##### ```node // Session is built by the OAuth process const fulfillment_order = new shopify.rest.FulfillmentOrder({session: session}); await fulfillment_order.set_fulfillment_orders_deadline({ body: {"fulfillment_order_ids": [1046000794], "fulfillment_deadline": "2021-05-26T10:00:00-04:00"}, }); ``` #### response ```json HTTP/1.1 200 OK{} ``` *** ## getRetrieves a specific fulfillment order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/queries/fulfillmentOrder?example=retrieves-a-specific-fulfillment-order) [fulfillmentOrder](https://shopify.dev/docs/api/admin-graphql/latest/queries/fulfillmentOrder?example=retrieves-a-specific-fulfillment-order) Retrieves a specific fulfillment order. ### Parameters *** api\_version string required *** fulfillment\_order\_id string required *** include\_financial\_summaries boolean default false Include the financial summary data for each line item, if available. *** include\_order\_reference\_fields boolean default false Indicates whether the order reference fields should be returned in the result. *** ### Examples Get a single fulfillment order by its ID Path parameters fulfillment\_​order\_​id=​1046000791 string required Get a single fulfillment order by its ID and include the financial summary data Path parameters fulfillment\_​order\_​id=​1046000796 string required Query parameters include\_​financial\_​summaries=​true boolean default false Include the financial summary data for each line item, if available. Get a single fulfillment order by its ID and include the order reference data for each Path parameters fulfillment\_​order\_​id=​1046000799 string required Query parameters include\_​order\_​reference\_​fields=​true boolean default false Indicates whether the order reference fields should be returned in the result. get ## /admin/api/2025-01/fulfillment\_​orders/1046000791.​json ```bash curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000791.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "fulfillment_order": { "id": 1046000791, "created_at": "2025-10-01T15:06:24-04:00", "updated_at": "2025-10-01T15:06:24-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 24826418, "request_status": "submitted", "status": "open", "fulfill_at": null, "fulfill_by": null, "supported_actions": [ "cancel_fulfillment_order" ], "destination": { "id": 1042572123, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "line_items": [ { "id": 1072503287, "shop_id": 548380009, "fulfillment_order_id": 1046000791, "quantity": 1, "line_item_id": 518995019, "inventory_item_id": 49148385, "fulfillable_quantity": 1, "variant_id": 49148385 } ], "international_duties": null, "fulfillment_holds": [], "delivery_method": null, "assigned_location": { "address1": null, "address2": null, "city": null, "country_code": "DE", "location_id": 24826418, "name": "Apple Api Shipwire", "phone": null, "province": null, "zip": null }, "merchant_requests": [] } } ``` ### examples * #### Get a single fulfillment order by its ID ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000791.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.FulfillmentOrder.find({ session: session, id: 1046000791, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::FulfillmentOrder.find( session: test_session, id: 1046000791, ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.FulfillmentOrder.find({ session: session, id: 1046000791, }); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_order":{"id":1046000791,"created_at":"2025-10-01T15:06:24-04:00","updated_at":"2025-10-01T15:06:24-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"fulfill_by":null,"supported_actions":["cancel_fulfillment_order"],"destination":{"id":1042572123,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503287,"shop_id":548380009,"fulfillment_order_id":1046000791,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}} ``` * #### Get a single fulfillment order by its ID and include the financial summary data ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000796.json?include_financial_summaries=true" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.FulfillmentOrder.find({ session: session, id: 1046000796, include_financial_summaries: "true", }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::FulfillmentOrder.find( session: test_session, id: 1046000796, include_financial_summaries: "true", ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.FulfillmentOrder.find({ session: session, id: 1046000796, include_financial_summaries: "true", }); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_order":{"id":1046000796,"created_at":"2025-10-01T15:06:32-04:00","updated_at":"2025-10-01T15:06:32-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"fulfill_by":null,"supported_actions":["cancel_fulfillment_order"],"destination":{"id":1042572128,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503292,"shop_id":548380009,"fulfillment_order_id":1046000796,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385,"financial_summaries":[{"quantity":1,"original_unit_price_set":"199.00","approximate_discounted_unit_price_set":"199.00","discount_allocations":[{"amount":"3.33","discount_application":{"allocation_method":"across","target_selection":"all","target_type":"line_item"}}]}]}],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}} ``` * #### Get a single fulfillment order by its ID and include the order reference data for each ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-01/fulfillment_orders/1046000799.json?include_order_reference_fields=true" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.FulfillmentOrder.find({ session: session, id: 1046000799, include_order_reference_fields: "true", }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::FulfillmentOrder.find( session: test_session, id: 1046000799, include_order_reference_fields: "true", ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.FulfillmentOrder.find({ session: session, id: 1046000799, include_order_reference_fields: "true", }); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_order":{"id":1046000799,"created_at":"2025-10-01T15:06:37-04:00","updated_at":"2025-10-01T15:06:37-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"fulfill_by":null,"supported_actions":["cancel_fulfillment_order"],"destination":{"id":1042572131,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503295,"shop_id":548380009,"fulfillment_order_id":1046000799,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"order_name":"#1001","order_processed_at":"2008-01-10T11:00:00-05:00","channel_id":null,"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}} ``` *** ## getRetrieves a list of fulfillment orders for a specific order [![](https://shopify.dev/images/logos/GraphQL.svg)![](https://shopify.dev/images/logos/GraphQL-dark.svg)](https://shopify.dev/docs/api/admin-graphql/latest/queries/order) [order](https://shopify.dev/docs/api/admin-graphql/latest/queries/order) Retrieves a list of fulfillment orders for a specific order. [API access scopes](#api-access-scopes) govern which fulfillments orders are returned. An API client will only receive a subset of the fulfillment orders which belong to an order if they don't have the necessary access scopes to view all of the fulfillment orders. In the case that an API client does not have the access scopes necessary to view any of the fulfillment orders belongs to an order, an empty array will be returned. ### Parameters *** api\_version string required *** order\_id string required *** include\_financial\_summaries boolean default false Include the financial summary data for each line item, if available. *** include\_order\_reference\_fields boolean default false Indicates whether the order reference fields should be returned in the result. *** order\_id The ID of the order that is associated with the fulfillment orders. *** ### Examples Retrieve a list of all fulfillment orders for an order Retrieve a list of fulfillment orders for an order and include the financial summary data for each Query parameters include\_​financial\_​summaries=​true boolean default false Include the financial summary data for each line item, if available. Retrieve a list of fulfillment orders for an order and include the order reference data for each Query parameters include\_​order\_​reference\_​fields=​true boolean default false Indicates whether the order reference fields should be returned in the result. get ## /admin/api/2025-01/orders/450789469/fulfillment\_​orders.​json ```bash curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-01/orders/450789469/fulfillment_orders.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` {} ## Response JSON ```json HTTP/1.1 200 OK { "fulfillment_orders": [ { "id": 1046000793, "created_at": "2025-10-01T15:06:27-04:00", "updated_at": "2025-10-01T15:06:28-04:00", "shop_id": 548380009, "order_id": 450789469, "assigned_location_id": 24826418, "request_status": "submitted", "status": "open", "fulfill_at": null, "fulfill_by": null, "supported_actions": [ "cancel_fulfillment_order" ], "destination": { "id": 1042572125, "address1": "Chestnut Street 92", "address2": "", "city": "Louisville", "company": null, "country": "United States", "email": "bob.norman@mail.example.com", "first_name": "Bob", "last_name": "Norman", "phone": "+1(502)-459-2181", "province": "Kentucky", "zip": "40202" }, "line_items": [ { "id": 1072503289, "shop_id": 548380009, "fulfillment_order_id": 1046000793, "quantity": 1, "line_item_id": 518995019, "inventory_item_id": 49148385, "fulfillable_quantity": 1, "variant_id": 49148385 } ], "international_duties": null, "fulfillment_holds": [], "delivery_method": null, "assigned_location": { "address1": null, "address2": null, "city": null, "country_code": "DE", "location_id": 24826418, "name": "Apple Api Shipwire", "phone": null, "province": null, "zip": null }, "merchant_requests": [] } ] } ``` ### examples * #### Retrieve a list of all fulfillment orders for an order ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-01/orders/450789469/fulfillment_orders.json" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.FulfillmentOrder.all({ session: session, order_id: 450789469, }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::FulfillmentOrder.all( session: test_session, order_id: 450789469, ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.FulfillmentOrder.all({ session: session, order_id: 450789469, }); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_orders":[{"id":1046000793,"created_at":"2025-10-01T15:06:27-04:00","updated_at":"2025-10-01T15:06:28-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"fulfill_by":null,"supported_actions":["cancel_fulfillment_order"],"destination":{"id":1042572125,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503289,"shop_id":548380009,"fulfillment_order_id":1046000793,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}]} ``` * #### Retrieve a list of fulfillment orders for an order and include the financial summary data for each ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-01/orders/450789469/fulfillment_orders.json?include_financial_summaries=true" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.FulfillmentOrder.all({ session: session, order_id: 450789469, include_financial_summaries: "true", }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::FulfillmentOrder.all( session: test_session, order_id: 450789469, include_financial_summaries: "true", ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.FulfillmentOrder.all({ session: session, order_id: 450789469, include_financial_summaries: "true", }); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_orders":[{"id":1046000798,"created_at":"2025-10-01T15:06:36-04:00","updated_at":"2025-10-01T15:06:36-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"fulfill_by":null,"supported_actions":["cancel_fulfillment_order"],"destination":{"id":1042572130,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503294,"shop_id":548380009,"fulfillment_order_id":1046000798,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385,"financial_summaries":[{"quantity":1,"original_unit_price_set":"199.00","approximate_discounted_unit_price_set":"199.00","discount_allocations":[{"amount":"3.33","discount_application":{"allocation_method":"across","target_selection":"all","target_type":"line_item"}}]}]}],"international_duties":null,"fulfillment_holds":[],"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}]} ``` * #### Retrieve a list of fulfillment orders for an order and include the order reference data for each ##### ```curl curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-01/orders/450789469/fulfillment_orders.json?include_order_reference_fields=true" \ -H "X-Shopify-Access-Token: {access_token}" ``` ##### ```remix await admin.rest.resources.FulfillmentOrder.all({ session: session, order_id: 450789469, include_order_reference_fields: "true", }); ``` ##### ```ruby # Session is activated via Authentication test_session = ShopifyAPI::Context.active_session ShopifyAPI::FulfillmentOrder.all( session: test_session, order_id: 450789469, include_order_reference_fields: "true", ) ``` ##### ```node // Session is built by the OAuth process await shopify.rest.FulfillmentOrder.all({ session: session, order_id: 450789469, include_order_reference_fields: "true", }); ``` #### response ```json HTTP/1.1 200 OK{"fulfillment_orders":[{"id":1046000788,"created_at":"2025-10-01T15:06:20-04:00","updated_at":"2025-10-01T15:06:20-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"fulfill_by":null,"supported_actions":["cancel_fulfillment_order"],"destination":{"id":1042572120,"address1":"Chestnut Street 92","address2":"","city":"Louisville","company":null,"country":"United States","email":"bob.norman@mail.example.com","first_name":"Bob","last_name":"Norman","phone":"+1(502)-459-2181","province":"Kentucky","zip":"40202"},"line_items":[{"id":1072503285,"shop_id":548380009,"fulfillment_order_id":1046000788,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"order_name":"#1001","order_processed_at":"2008-01-10T11:00:00-05:00","channel_id":null,"delivery_method":null,"assigned_location":{"address1":null,"address2":null,"city":null,"country_code":"DE","location_id":24826418,"name":"Apple Api Shipwire","phone":null,"province":null,"zip":null},"merchant_requests":[]}]} ```