A space to discuss GraphQL queries, mutations, troubleshooting, throttling, and best practices.
Hi Shopify Support,
We are currently using syncing fulfillments from NetSuite to Shopify in our integrations.
We have observed that when the order contains combination of digital items and physical items, on performing fulfillments for both items in one request we are currently facing as error as "{"errors":["All fulfillment orders must have the same delivery method type. Multiple delivery method types [\"none\", \"shipping\"] were found."]}"
API endpoint: https://etail-dev-plus.myshopify.com/admin/api/2022-07/fulfillments.json
Attaching the postman request.
We want to understand if this is the expected behavior in Shopify when fulfillment data has both digital and physical items.
We have identified that for physical items the delivery method type is "shipping" and for digital items delivery method type is "none"
Please let us know if you require any more details.
We will be waiting for your response.
Thanks
Hi There,
So let me get this straight you are trying to fulfill two different fulfillment orders in the same request, 1 of them contains shippable products and the other contains non-shippable (digital) products?
Can you post the complete JSON from your POSTMAN?
Cheers,
Gary
I'm having issues fulfilling Orders with different Items
as you can see in the image
1st item have a Shipping Profile
2nd item have no shipping Profile
how can i bypass that ?
When i POST : /admin/api/2022-07/fulfillments.json
i get this error
{
"errors": ["All fulfillment orders must have the same delivery method type. Multiple delivery method types [\"none\", \"shipping\"] were found."]
}
JSON
[
{
"id": "1000001",
"recordType": "itemfulfillment",
"order_id": "2000002",
"Tracking Numbers": "3000003",
"Quantity": "4",
"eTail Order Line Id": "4000004",
"Shopify Fulfillment Service": "manual",
"location_id": "5000005",
"internalid": "1000001",
"fulfillmentOrders": [
{
"id": 6000006,
"shop_id": 7000007,
"order_id": 2000002,
"assigned_location_id": 5000005,
"request_status": "unsubmitted",
"status": "open",
"supported_actions": [
"create_fulfillment",
"hold"
],
"destination": {
"id": 8000008,
"address1": "123 Example St",
"address2": "Apt 456",
"city": "Faketown",
"company": "Fake Company",
"country": "United States",
"email": "[email protected]",
"first_name": "John",
"last_name": "Doe",
"phone": "5555555555",
"province": "Fakestate",
"zip": "12345"
},
"line_items": [
{
"id": 9000009,
"shop_id": 7000007,
"fulfillment_order_id": 6000006,
"quantity": 2,
"line_item_id": 4000004,
"inventory_item_id": 10000001,
"fulfillable_quantity": 2,
"variant_id": 11000002
}
],
"fulfill_at": "2023-03-30T12:00:00-07:00",
"fulfill_by": null,
"international_duties": null,
"fulfillment_holds": [],
"delivery_method": {
"id": 12000003,
"method_type": "shipping", ==> Here
"min_delivery_date_time": null,
"max_delivery_date_time": null
},
"assigned_location": {
"address1": "789 Another St",
"address2": null,
"city": "Different City",
"country_code": "US",
"location_id": 5000005,
"name": "789 Another St",
"phone": null,
"province": "Another State",
"zip": "67890"
},
"merchant_requests": [],
"LocationChangeResponse": {}
},
{
"id": 6000007,
"shop_id": 7000007,
"order_id": 2000002,
"assigned_location_id": 5000005,
"request_status": "unsubmitted",
"status": "open",
"supported_actions": [
"create_fulfillment",
"hold"
],
"destination": {
"id": 8000009,
"address1": "123 Example St",
"address2": "Apt 456",
"city": "Faketown",
"company": "Fake Company",
"country": "United States",
"email": "[email protected]",
"first_name": "John",
"last_name": "Doe",
"phone": "5555555555",
"province":"Another province",
"Fakestate": "",
"zip": "12345"
},
"line_items": [
{
"id": 9000010,
"shop_id": 7000007,
"fulfillment_order_id": 6000007,
"quantity": 2,
"line_item_id": 4000005,
"inventory_item_id": 10000003,
"fulfillable_quantity": 2,
"variant_id": 11000004
}
],
"fulfill_at": "2023-03-30T12:00:00-07:00",
"fulfill_by": null,
"international_duties": null,
"fulfillment_holds": [],
"delivery_method": {
"id": 12000005,
"method_type": "none", => Here
"min_delivery_date_time": null,
"max_delivery_date_time": null
},
"assigned_location": {
"address1": "789 Another St",
"address2": null,
"city": "Different City",
"country_code": "US",
"location_id": 5000005,
"name": "789 Another St",
"phone": null,
"province": "Another State",
"zip": "67890"
},
"merchant_requests": [],
"LocationChangeResponse": {}
}
],
},
{
"id": "1000002",
"recordType": "itemfulfillment",
"order_id": "2000003",
"Tracking Numbers": "3000004",
"Quantity": "4",
"eTail Order Line Id": "4000005",
"Shopify Fulfillment Service": "manual",
"location_id": "5000005",
"internalid": "1000002"
}
]
Yeah, like I thought, you cant combine the two fulfillmentorders into one fulfillment, you need to split it out if they have different delivery methods.
Cheers,
Gary
Hi Gary,
thanks for the reply.
But, it was not the same with different api endpoint which is deprecated now. We used to POST fulfillment orders that has different delivery method types.
So, apart from the making separate requests like splitting it out if they have different delivery methods, don't we have other solution and why is this change has not been notified in any of the community post or forums.
Is this a bug from the Shopify side or is this is the expected behavior?
we will be waiting for your response?
Thanks
Sankeerthana
Hi Sankeerthana,
I have to be honest with you, I have never seen that structure for making a fulfillment with shopify. Prior to 2022-07 I used the fulfillments.json endpoint with a very simple json structure. Since 2022-07 and the introduction of the new fulfillment api the structure changes somewhat but like I said. Never seen that structure before so I am not sure I can help you with your exact problem other than tell you what I would try in your situation. That is:
I would first get the fulfillmentorders for a particular order for the location I am interested in using the /admin/api/2023-01/orders/{order_id}/fulfillment_orders.json. Then I would loop over the returned fulfillment orders and fulfill each one separately following the data structure on this page https://shopify.dev/docs/api/admin-rest/2023-01/resources/fulfillment#post-fulfillments
Sorry I can't be of more help.
Cheers,
Gary