Unclear error message when calling FulfillmentRequest

chappersjr
Shopify Partner
22 1 1

Hi,

Occasionally when I call the FulfillmentRequest via rest using:

/admin/api/2020-01/fulfillment_orders/{id}/fulfillment_request.json

 I get an error message which I do not understand:

The fulfillment order's assigned fulfillment service must be of api type

 

Is this something I have to check each time I make this request? It seems to only occur occasionally for the same store.

Heres my request Id: 

6038c2ba-f594-4479-a861-3a40343d0394 

 Thanks,

Charlie

Replies 5 (5)

syf_
Shopify Staff
95 21 24

Hi Charlie,

I would be happy to look into this for you, if you're still running into that error.

I haven't been able to reproduce the said behaviour, and the logs associated with the request id you provided have expired. If you wouldn't mind, could you provide the request id of a more recent request (within the last week) you've made so I can investigate this behaviour further.

Thank you!

 

Best,

Seth.

syf_ | Developer Support @ Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit Shopify.dev or the Shopify Web Design and Development Blog

syf_
Shopify Staff
95 21 24

Hi Charlie,

After doing some investigation, I've been able to find out the reason you get that error message for some requests. Find below an explanation of what that error means, and why you're possibly seeing it.

  •  Every line_item in an order has a fulfillment_service which indicates a third-party warehouse that's fulfilling the item as described here. Valid values are manual (merchant would fulfill item), or the name of the provider, such as amazon or shipwire (a warehouse capable of fulfilling the item) as shown in the docs here.

  • An order item with fulfillment_service as manual indicates the merchant would be fulfilling that order 'themselves' (used loosely here to mean there isn't an automated third-party service), and hence no need to make a request to a third-party service to handle that order. On the other hand, if the fulfillment_service of the order item is a service (amazon, shipwire, etc.), then the merchant would be using that service to fulfill the order item.

  • The FulfillmentOrder resource which represents either an item or a group of items in an order that are to be fulfilled from the same location has a fulfillment_service_handle field indicating how a fulfillment order would be handled. This isn't documented but I believe the fulfillment_service_handle expects the same valid values as fulfillment_service mentioned above. Thus, the only time one would need to send a fulfillment request for a fulfillment order is when the fulfillment_service_handle has a valid value other than manual.

  • Making a fulfillment request sends a request to a service provider asking them to handle a fulfillment order (all orders associated with it) or an order item from the fulfillment order. For such a call to be valid, the fulfillment_service_handle should have the value of a valid fulfillment service centre capable of API integrations.

To answer your question about checks, yes, I believe that is the case. You would have to check to make sure the fulfillment_service_handle field of a fulfillment order is not manual before making a fulfillment request.

I hope this throws more light on the error in question and helps you take measures to avoid having this error message or to handle the error appropriately should you encounter it.

Let me know if there's anything you'd like me to throw more light on. Thank you!

 

Best,

Seth.

syf_ | Developer Support @ Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit Shopify.dev or the Shopify Web Design and Development Blog

BenHarkins
Shopify Partner
14 0 4

Thanks for this answer, Seth. I was having a similar issue.

 

So, is there a way to set locations (as they are setup through the UI) to be marked as something other than 'manual' for the fulfillment service provider? I have a situation where I have a private app that is invoked by a webhook to hand off the fulfillment request (using the locations on the fulfillment orders to route the requests).

 

It seems like (for two locations) I would need to set up two separate apps as fulfillment service providers, but then would lose the ability to control shipping profiles and inventory through Shopify, right?

 

It seems like this restriction (not being able to update the status for a "manual" fulfillment order programmatically) is unnecessarily restrictive, especially given the private app use case.

dungletan
Visitor
3 0 0

Hi Team,

I have the same error when calling the fulfillment order via Admin API:

 

shopify.png

 

It is happening with all the fulfillment_orders API: 

Does anyone have experience with this error, please help me.
Thanks,
Brian

ShopifyDevSup
Shopify Staff
1440 235 489

Hi @dungletan,

We have overviews of the recommended workflows for each kind of app that interacts with fulfillment Orders in the dev docs. Are you using an order management app?

 

  • If so, then you should only be using that request to interact with third party fulfillment services, which mange their own 'api type' locations on a shop. 
     

For Fulfillment Orders that are assigned to merchant managed locations, you can query for the available actions to see what options are available, and act accordingly. There's no need to make a request to a third party. 

 

Hope that clears things up.

Developer Support @ Shopify
- Was this reply helpful? Click Like to let us know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog