Trying to set Fulfillment status of test web site orders but no fulfillmentOrderId

Hi

New to Shopify. I am using GraphQL and want to set the fulfillment status of orders. My application will be used by a 3pl. I am using the standard test web site.

To set fullfillment details I need to use the CreateFulfillment however this call requires an existing ‘fulfillmentOrderId’ and fulfillmentOrderLineItems.ids.

All the orders I download using the ‘orders’ API have fulfillmentsCount = 0 and fulfillments : .

Using the GetOrderFulfillments also returns “fulfillments”: .

I understand this is where I whould get fulfillmentOrderId from?

So I am stuck. I see posts from 2022 that talk about there being a bug and that changing scopes or installing a new application will fix the issue. Neither work for me.

I have also tried giving my app all the scopes (just in case).
I checked the products are fixed shipable products (The Collection Snowboard: Oxygen) but have tried others.
I have manually marked an order to be fullfilled by ‘Snow City Warehouse’ and it shows as ‘fullfillment in progress’ in the management screen but the order still comes in as fulfillment :

see below

    {
      "node": {
        "id": "gid://shopify/Order/6044480405700",
        "name": "#1005",
        "createdAt": "2025-03-28T01:11:00Z",
        "displayFinancialStatus": "PAID",
        "displayFulfillmentStatus": "IN_PROGRESS",
        "displayAddress": {
          "firstName": "Rob",
          "lastName": "M",
          "company": null,
          "address1": "121324 A Street",
          "address2": "Fendalton",
          "city": "Christchurch",
          "country": "New Zealand",
          "countryCodeV2": "NZ",
          "zip": "8052"
        },
        "fulfillmentsCount": {
          "count": 0
        },
        "fulfillments": [],
        "lineItems": {
          "edges": [
            {
              "node": {
                "id": "gid://shopify/LineItem/14493623648452",
                "sku": "sku-hosted-1",
                "title": "The 3p Fulfilled Snowboard",
                "fulfillableQuantity": 0,
                "discountedUnitPriceSet": {
                  "shopMoney": {
                    "amount": "2629.95",
                    "currencyCode": "NZD"
                  }
                }
              }
            }
          ]
        }
      }
    },

I note the above says “fulfillableQuantity”: 0. I have others that show “fulfillableQuantity”: 1 but they still dont have any fulfillments.

The help chatbot says I can turn on autofullfilment, but that will just mark everything as shipped right?

Anyway. Any suggestions or pointers would be much appreciated.

Hi - If fulfillableQuantity is 0 , ensure that the order is not on hold or blocked by any other conditions. You can check the status of the fulfillment order to confirm.

To set the fulfillment status of orders, first retrieve the fulfillmentOrders for an order using the order query, which provides the fulfillmentOrderId and line items. Next, check the supportedActions field to confirm if the CREATE_FULFILLMENT action is available. Finally, use the fulfillmentCreateV2 mutation to create a fulfillment by specifying the fulfillmentOrderId , line items, and tracking details.

Hi Liam

Thanks for your reply.

I have checked the fulfillmentOrders of one of my orders, the below is the result. It looks like it is fine, ‘create_fulfillment’ is one of the supported actions.

Orders API result snippet…

      "node": {
        "id": "gid://shopify/Order/6039178346692",
        "name": "#1002",
        "createdAt": "2025-03-25T03:37:12Z",
        "displayFinancialStatus": "PAID",
        "displayFulfillmentStatus": "UNFULFILLED",
        "displayAddress": {
          "firstName": "Steven",
          "lastName": "Wild",
          "company": null,
          "address1": "10 Tainui Street",
          "address2": "Somerfield",
          "city": "Christchurch",
          "country": "New Zealand",
          "countryCodeV2": "NZ",
          "zip": "8024"
        },
        "fulfillmentsCount": {
          "count": 0
        },
        "fulfillments": [],
        "lineItems": {

and the fulfillmentOrders returns…

“fulfillment_orders”: [
{
“id”: 7059920486596,
“created_at”: “2025-03-24T23:37:13-04:00”,
“updated_at”: “2025-03-24T23:37:13-04:00”,
“shop_id”: 70123290820,
“order_id”: 6039178346692,
“assigned_location_id”: 77311279300,
“request_status”: “unsubmitted”,
“status”: “open”,
“fulfill_at”: “2025-03-24T23:00:00-04:00”,
“fulfill_by”: null,
“supported_actions”: [
“create_fulfillment”,
“move”,
“hold”,
“split”
],

and later

  "line_items": [
    {
      "id": 14662094880964,
      "shop_id": 70123290820,
      "fulfillment_order_id": 7059920486596,
      "quantity": 1,
      "line_item_id": 14479300985028,
      "inventory_item_id": 46841622790340,
      "fulfillable_quantity": 1,
      "variant_id": 44718598258884
    },
    {
      "id": 14662094913732,
      "shop_id": 70123290820,
      "fulfillment_order_id": 7059920486596,
      "quantity": 1,
      "line_item_id": 14479301017796,
      "inventory_item_id": 46841622757572,
      "fulfillable_quantity": 1,
      "variant_id": 44718598226116
    }
  ],

So It appears I can do the fullfilment as the above gives me the fulfillmentOrderId but I would need to call that API for every order I want to fullfill. Which seems a waste when the Orders API call is supposed to give me the fulfillmentOrderId right?

Thanks
Rob