# FulfillmentOrder

The FulfillmentOrder resource represents either an item or a group of items in an order that are to be fulfilled from the same location. There can be more than one fulfillment order for an order at a given location.

{{ '/api/reference/fulfillment_order_relationships.png' | image }}

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 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.

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.

Retrieving fulfillment orders

All fulfillment orders related to a given order can be retrieved with the Get fulfillment orders by order ID endpoint. 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 resource. The assignment_status parameter in the Retrieve a list of assigned fulfillment orders query controls whether all assigned fulfillment orders should be returned or only those where a merchant has sent a fulfilment request 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 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. 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.

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 to the fulfillment service which operates the location to request that they fulfill the associated items. A fulfillment service has the option to accept or reject 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 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 endpoint. They can provide tracking information right away or create fulfillments without it and then update tracking information for fulfillments.

Learn about managing fulfillment orders as a fulfillment service.

API access scopes

Fulfillment orders are governed by the following API access scopes:

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 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 to fulfillment order webhooks to be notified whenever fulfillment order related domain events occur.

Learn about fulfillment workflows.

## Resource Properties ### FulfillmentOrder * assigned_location_id: The ID of the location that has been assigned to do the work. * Type: x-string * Example: 3183479 * destination:

The destination where the items should be sent.

* Type: x-string * Example: {"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:

The type of method used to transfer a product or service to a customer.

* Type: x-string * Example: {"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: 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. * Type: x-string * Example: "2021-01-01" * fulfill_by: The latest date and time by which all items in the fulfillment order need to be fulfilled. * Type: x-string * Example: "2021-01-01" * fulfillment_holds:

Represents the fulfillment holds applied on the fulfillment order.

* Type: x-string * Example: [{"reason"=>"incorrect_address", "reason_notes"=>"the apartment number is missing."}] * id: An ID for the fulfillment order. * Type: x-string * Example: 255858046 * international_duties:

The international duties relevant to the fulfillment order.

* Type: x-string * Example: {"incoterm"=>"DAP"} * line_items:

Represents line items belonging to a fulfillment order:

* Type: x-string * Example: [{"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: The ID of the order that's associated with the fulfillment order. * Type: x-string * Example: 3183479 * request_status:

The request status of the fulfillment order. Valid values:

* Type: x-string * Example: "unsubmitted" * shop_id: The ID of the shop that's associated with the fulfillment order. * Type: x-string * Example: 255858046 * status:

The status of the fulfillment order. Valid values:

* Type: x-string * Example: "open" * supported_actions:

The actions that can be performed on this fulfillment order.

* Type: x-string * Example: ["create_fulfillment", "request_fulfillment", "cancel_fulfillment_order", "request_cancellation"] * merchant_requests:

A list of requests sent by the merchant to the fulfillment service for this fulfillment order.

* Type: x-string * Example: [{"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:

The fulfillment order's assigned location. This is the location where the fulfillment is expected to happen.

The fulfillment order's assigned location might change in the following cases:

  1. The fulfillment order has been entirely moved to a new location. For example, the fulfillment order move endpoint has been called, and you see the original fulfillment order in the moved_fulfillment_order field within the response.
  2. Work on the fulfillment order has not yet begun, which means that the fulfillment order has the open, scheduled, or on_hold status, and the shop's location properties might be undergoing edits (for example, in the Shopify admin).

If the move operation has moved the fulfillment order's line items to a new location, but hasn't moved the fulfillment order instance itself, then the original fulfillment order's assigned location doesn't change. This happens if the fulfillment order is being split during the move, or if all line items can be moved to an existing fitting fulfillment order at a new location.

Once the fulfillment order has been taken into work or canceled, which means that the fulfillment order has the in_progress, closed, cancelled, or incomplete status, assigned location acts as a snapshot of the shop's location content. Up-to-date shop's location data may be queried through get location endpoint with assigned_location.location_id supplied.

* Type: x-string * Example: {"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:

The date and time (ISO 8601 format) when the fulfillment order was created.

* Type: string * Example: "2022-01-01T11:00:00-01:00" * updated_at:

The date and time (ISO 8601 format) when the fulfillment order was last updated.

* Type: string * Example: "2022-01-01T11:00:00-01:00" ## Retrieves a list of fulfillment orders for a specific order

Retrieves a list of fulfillment orders for a specific order.

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.

### Endpoint /admin/api/#{api_version}/orders/{order_id}/fulfillment_orders.json (GET) ### Parameters * api_version (required): * order_id (required): * include_financial_summaries: Include the financial summary data for each line item, if available. * include_order_reference_fields: 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. ### Responses #### 200 Retrieves a list of fulfillment orders for a specific order Examples: ##### Retrieve a list of all fulfillment orders for an order Request: ``` GET /admin/api/unstable/orders/450789469/fulfillment_orders.json ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_orders":[{"id":1046000784,"created_at":"2024-09-19T10:13:13-04:00","updated_at":"2024-09-19T10:13:13-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"supported_actions":["cancel_fulfillment_order"],"destination":{"id":1042572117,"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":1058737488,"shop_id":548380009,"fulfillment_order_id":1046000784,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"fulfill_by":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":[]}]} ``` ##### Retrieve a list of fulfillment orders for an order and include the financial summary data for each Request: ``` GET /admin/api/unstable/orders/450789469/fulfillment_orders.json ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_orders":[{"id":1046000778,"created_at":"2024-09-19T10:13:03-04:00","updated_at":"2024-09-19T10:13:03-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"supported_actions":["cancel_fulfillment_order"],"destination":{"id":1042572111,"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":1058737482,"shop_id":548380009,"fulfillment_order_id":1046000778,"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":[],"fulfill_by":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":[]}]} ``` ##### Retrieve a list of fulfillment orders for an order and include the order reference data for each Request: ``` GET /admin/api/unstable/orders/450789469/fulfillment_orders.json ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_orders":[{"id":1046000792,"created_at":"2024-09-19T10:13:24-04:00","updated_at":"2024-09-19T10:13:24-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":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":1058737495,"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":[],"fulfill_by":null,"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":[]}]} ``` ## Retrieves a specific fulfillment order Retrieves a specific fulfillment order. ### Endpoint /admin/api/#{api_version}/fulfillment_orders/{fulfillment_order_id}.json (GET) ### Parameters * api_version (required): * fulfillment_order_id (required): * include_financial_summaries: Include the financial summary data for each line item, if available. * include_order_reference_fields: Indicates whether the order reference fields should be returned in the result. ### Responses #### 200 Retrieves a specific fulfillment order Examples: ##### Get a single fulfillment order by its ID Request: ``` GET /admin/api/unstable/fulfillment_orders/1046000787.json ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_order":{"id":1046000787,"created_at":"2024-09-19T10:13:16-04:00","updated_at":"2024-09-19T10:13:16-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":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":1058737490,"shop_id":548380009,"fulfillment_order_id":1046000787,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"fulfill_by":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":[]}} ``` ##### Get a single fulfillment order by its ID and include the financial summary data Request: ``` GET /admin/api/unstable/fulfillment_orders/1046000795.json ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_order":{"id":1046000795,"created_at":"2024-09-19T10:13:28-04:00","updated_at":"2024-09-19T10:13:28-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":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":1058737498,"shop_id":548380009,"fulfillment_order_id":1046000795,"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":[],"fulfill_by":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":[]}} ``` ##### Get a single fulfillment order by its ID and include the order reference data for each Request: ``` GET /admin/api/unstable/fulfillment_orders/1046000788.json ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_order":{"id":1046000788,"created_at":"2024-09-19T10:13:17-04:00","updated_at":"2024-09-19T10:13:17-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"supported_actions":["cancel_fulfillment_order"],"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":[{"id":1058737491,"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":[],"fulfill_by":null,"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":[]}} ``` ## Cancel a fulfillment order Marks a fulfillment order as cancelled. ### Endpoint /admin/api/#{api_version}/fulfillment_orders/{fulfillment_order_id}/cancel.json (POST) ### Parameters * api_version (required): * fulfillment_order_id (required): ### Responses #### 200 Cancel a fulfillment order Examples: ##### Cancel a fulfillment order Request: ``` POST /admin/api/unstable/fulfillment_orders/1046000785/cancel.json {} ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_order":{"id":1046000785,"created_at":"2024-09-19T10:13:14-04:00","updated_at":"2024-09-19T10:13:15-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"closed","fulfill_at":null,"supported_actions":[],"destination":{"id":1042572118,"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":[],"fulfill_by":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":[]},"replacement_fulfillment_order":{"id":1046000786,"created_at":"2024-09-19T10:13:15-04:00","updated_at":"2024-09-19T10:13:15-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"unsubmitted","status":"open","fulfill_at":null,"supported_actions":["request_fulfillment","create_fulfillment","hold"],"destination":{"id":1042572119,"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":1058737489,"shop_id":548380009,"fulfillment_order_id":1046000786,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"fulfill_by":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":[]}} ``` ## Marks a fulfillment order as incomplete Marks an in progress fulfillment order as incomplete, indicating the fulfillment service is unable to ship any remaining items and intends to close the fulfillment order. ### Endpoint /admin/api/#{api_version}/fulfillment_orders/{fulfillment_order_id}/close.json (POST) ### Parameters * api_version (required): * fulfillment_order_id (required): * message: An optional reason for marking the fulfillment order as incomplete. ### Responses #### 200 Marks a fulfillment order as incomplete Examples: ##### Transition a fulfillment order from in progress to incomplete Request: ``` POST /admin/api/unstable/fulfillment_orders/1046000791/close.json {"fulfillment_order":{"message":"Not enough inventory to complete this work."}} ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_order":{"id":1046000791,"created_at":"2024-09-19T10:13:21-04:00","updated_at":"2024-09-19T10:13:22-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"closed","status":"incomplete","fulfill_at":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":1058737494,"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":[],"fulfill_by":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":[]}} ``` ## Moves a fulfillment order to a new location 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:

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

### Endpoint /admin/api/#{api_version}/fulfillment_orders/{fulfillment_order_id}/move.json (POST) ### Parameters * api_version (required): * fulfillment_order (required): An object containing * fulfillment_order_id (required): ### Responses #### 200 Moves a fulfillment order to a new location Examples: ##### Move a fulfillment order to a new location Request: ``` POST /admin/api/unstable/fulfillment_orders/1046000781/move.json {"fulfillment_order":{"new_location_id":655441491,"fulfillment_order_line_items":[{"id":1058737485,"quantity":1}]}} ``` Response: ``` HTTP/1.1 200 OK {"original_fulfillment_order":{"id":1046000781,"created_at":"2024-09-19T10:13:09-04:00","updated_at":"2024-09-19T10:13:10-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":487838322,"request_status":"submitted","status":"closed","fulfill_at":null,"supported_actions":[],"destination":{"id":1042572114,"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":[],"fulfill_by":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":[]},"moved_fulfillment_order":{"id":1046000782,"created_at":"2024-09-19T10:13:10-04:00","updated_at":"2024-09-19T10:13:10-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":655441491,"request_status":"unsubmitted","status":"open","fulfill_at":null,"supported_actions":["create_fulfillment","move","hold"],"destination":{"id":1042572115,"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":1058737486,"shop_id":548380009,"fulfillment_order_id":1046000782,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"fulfill_by":null,"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} ``` ## Marks the fulfillment order as open 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. ### Endpoint /admin/api/#{api_version}/fulfillment_orders/{fulfillment_order_id}/open.json (POST) ### Parameters * api_version (required): * fulfillment_order_id (required): ### Responses #### 200 Marks the fulfillment order as open Examples: ##### Transition a fulfillment order from scheduled to open Request: ``` POST /admin/api/unstable/fulfillment_orders/1046000794/open.json {} ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_order":{"id":1046000794,"created_at":"2024-09-19T10:13:27-04:00","updated_at":"2024-09-19T10:13:28-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"unsubmitted","status":"open","fulfill_at":null,"supported_actions":["request_fulfillment","create_fulfillment","hold"],"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"},"line_items":[{"id":1058737497,"shop_id":548380009,"fulfillment_order_id":1046000794,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"international_duties":null,"fulfillment_holds":[],"fulfill_by":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":[]}} ``` ## Reschedules the fulfill_at time of a scheduled fulfillment order 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

### Endpoint /admin/api/#{api_version}/fulfillment_orders/{fulfillment_order_id}/reschedule.json (POST) ### Parameters * api_version (required): * fulfillment_order_id (required): * new_fulfill_at (required): The new fulfillment deadline of the fulfillment order. Must be in future. ### Responses #### 200 Reschedules the fulfill_at time of a scheduled fulfillment order Examples: ##### Update the fulfill_at time of a scheduled fulfillment order Request: ``` POST /admin/api/unstable/fulfillment_orders/1046000790/reschedule.json {"fulfillment_order":{"new_fulfill_at":"2025-10-19 14:13 UTC"}} ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_order":{"id":1046000790,"created_at":"2024-09-19T10:13:19-04:00","updated_at":"2024-09-19T10:13:20-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"unsubmitted","status":"scheduled","fulfill_at":"2025-10-19T10:13:00-04:00","supported_actions":["mark_as_open"],"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":1058737493,"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":[],"fulfill_by":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":[]}} ``` ## Holds fulfillment of a fulfillment order Halts all fulfillment work on a fulfillment order. Changes the fulfillment order status to ON_HOLD and creates a fulfillment hold. ### Endpoint /admin/api/#{api_version}/fulfillment_orders/{fulfillment_order_id}/hold.json (POST) ### Parameters * api_version (required): * fulfillment_hold (required): An object containing * fulfillment_order_id (required): ### Responses #### 200 Holds fulfillment of a fulfillment order Examples: ##### Apply a fulfillment hold on a fulfillment order because some inventory is out of stock Request: ``` POST /admin/api/unstable/fulfillment_orders/1046000780/hold.json {"fulfillment_hold":{"reason":"inventory_out_of_stock","reason_notes":"Not enough inventory to complete this work.","fulfillment_order_line_items":[{"id":1058737484,"quantity":1}]}} ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_order":{"id":1046000780,"created_at":"2024-09-19T10:13:06-04:00","updated_at":"2024-09-19T10:13:08-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"unsubmitted","status":"on_hold","fulfill_at":null,"supported_actions":["release_hold"],"destination":{"id":1042572113,"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":1058737484,"shop_id":548380009,"fulfillment_order_id":1046000780,"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."}],"fulfill_by":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":[]}} ``` ## Sets deadline for fulfillment orders Sets the latest date and time by which the fulfillment orders need to be fulfilled. ### Endpoint /admin/api/#{api_version}/fulfillment_orders/set_fulfillment_orders_deadline.json (POST) ### Parameters * api_version (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 ### Responses #### 200 Sets deadline for fulfillment orders Examples: ##### Set a fulfillment deadline for a fulfillment order Request: ``` POST /admin/api/unstable/fulfillment_orders/set_fulfillment_orders_deadline.json {"fulfillment_order_ids":[1046000779],"fulfillment_deadline":"2021-05-26T10:00:00-04:00"} ``` Response: ``` HTTP/1.1 200 OK {} ``` ## Releases all holds on a fulfillment order 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 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. ### Endpoint /admin/api/#{api_version}/fulfillment_orders/{fulfillment_order_id}/release_hold.json (POST) ### Parameters * api_version (required): * fulfillment_order_id (required): ### Responses #### 200 Releases all holds on a fulfillment order Examples: ##### Transition a fulfillment order from on_hold to open Request: ``` POST /admin/api/unstable/fulfillment_orders/1046000783/release_hold.json {} ``` Response: ``` HTTP/1.1 200 OK {"fulfillment_order":{"id":1046000783,"created_at":"2024-09-19T10:13:11-04:00","updated_at":"2024-09-19T10:13:12-04:00","shop_id":548380009,"order_id":450789469,"assigned_location_id":24826418,"request_status":"submitted","status":"open","fulfill_at":null,"supported_actions":["cancel_fulfillment_order"],"destination":{"id":1042572116,"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":1058737487,"shop_id":548380009,"fulfillment_order_id":1046000783,"quantity":1,"line_item_id":518995019,"inventory_item_id":49148385,"fulfillable_quantity":1,"variant_id":49148385}],"outgoing_requests":[],"international_duties":null,"fulfillment_holds":[],"fulfill_by":null,"delivery_method":null}} ```