Uregent!! Unable to sync fulfillments when order contains both digital type items and physical type

Uregent!! Unable to sync fulfillments when order contains both digital type items and physical type

Sankeerthana
Shopify Partner
15 0 1

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.
postman error.png

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

Replies 5 (5)

garyrgilbert
Shopify Partner
431 41 181

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

 

 

- Was my reply helpful? Click Like to let me know!
- Was your question answered? Mark it as an Accepted Solution

lDriss
Tourist
3 0 2

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"
}
]

 



 

lDriss_0-1680209510568.png

 

garyrgilbert
Shopify Partner
431 41 181

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

- Was my reply helpful? Click Like to let me know!
- Was your question answered? Mark it as an Accepted Solution
Sankeerthana
Shopify Partner
15 0 1

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

 

garyrgilbert
Shopify Partner
431 41 181

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

- Was my reply helpful? Click Like to let me know!
- Was your question answered? Mark it as an Accepted Solution