Development discussions around Shopify APIs
I am trying to fulfil an order with the API.
I get the fulfillment_orders for the order:
{
"fulfillment_orders": [
{
"id": 5162433085613,
"shop_id": 59711815853,
"order_id": 4183684907181,
...
"supported_actions": [
"create_fulfillment",
"hold"
],
"destination": null,
"line_items": [
{
"id": 10909262577837,
"shop_id": 59711815853,
"fulfillment_order_id": 5162433085613,
"quantity": 1,
"line_item_id": 10763713675437,
"inventory_item_id": 43141097849005,
"fulfillable_quantity": 1,
"variant_id": 41044827701421
}
],
"fulfill_at": null,
...
}
]
}
{"fulfillment":{"message":"MSG","notify_customer":true,
"tracking_info": {"number": 1562678,"url": "https://www.my-shipping-company.com","company": "my-shipping-company"},
"line_items_by_fulfillment_order":[
{"fulfillment_order_id":5162433085613,
"fulfillment_order_line_items":[
{"id":10763713675437,
"quantity":1}
]}]}}
but when posting that I get:
Solved! Go to the solution
This is an accepted solution.
Found the problem. The tutorial at: https://shopify.dev/apps/fulfillment/order-management-apps is INCORRECT.
You can't use: https://{shop}.myshopify.com/admin/api/2021-10/fulfillments.json
You must use: https://{shop}.myshopify.com/admin/api/2021-10/orders/<number>/fulfillments.json
to fulfil an order.
This is an accepted solution.
Found the problem. The tutorial at: https://shopify.dev/apps/fulfillment/order-management-apps is INCORRECT.
You can't use: https://{shop}.myshopify.com/admin/api/2021-10/fulfillments.json
You must use: https://{shop}.myshopify.com/admin/api/2021-10/orders/<number>/fulfillments.json
to fulfil an order.
I believe I found another way to get rid of this error so I mention it here in case it helps someone else.
The documentation is not entirely clear in what exactly should be entered as the "line item ID".
We need to be aware that:
Surprisingly, the latter is correct when creating a fulfillment using the /fulfillments.json endpoint.
So maybe the tutorial is correct after all, it's only confusing.
I had the same problem, and the solution is to remove "fulfillment_order_" from in front of line_items. See below:
{
"fulfillment": {
"line_items_by_fulfillment_order": [{
"fulfillment_order_id": {api.id},
"line_items": [{Line Items Fulfillment Array}]
}],
"tracking_info": {
"company": "{Fulfillments: Tracking Company}",
"number": {Fulfillments: Tracking Number},
"url": "{Tracking URL}"
},
"notify_customer": false,
"location_id": {api.assigned_location_id}
}
}
My jaw is on the floor that this is a valid fix
happy accident or genius?!?!
Thank you regardless 🙂
I too figured this out but the hard way (debugging), the documentation really needs to improve, the line item id is not the line item id of the order but the fulfillment order have ther own line items and that is the id which is expected.
Small suggestion for all developers.
1) Retrieve the fulfillment order using order api
2) Loop the line_items of the fulfillment order and compare the line_item id with the one you want to fill
3) Once identified use the id of that element as the line_item_id in the request for fulfillment_order_line_items
Thanks,
Sadashiv.
Thanks,
Sadashiv.
User | RANK |
---|---|
16 | |
7 | |
5 | |
5 | |
5 |
Learn these 5 things I had to learn the hard way with starting and running my own business
By Kitana Jan 27, 2023Would you love to unleash the unbridled power of the Google Shopping Channel into your sho...
By Gabe Jan 6, 2023How can you turn a hobby into a career? That’s what Emmanuel did while working as a wa...
By Skye Dec 30, 2022