Problem: Developers couldn’t mark orders as fulfilled in newer Shopify REST Admin API versions because they couldn’t obtain a fulfillment_order_id. Despite docs stating fulfillment orders are auto-created with orders, the fulfillment_orders list was empty without proper permissions. Some reverted to older API versions as a workaround.
Resolution/Key steps:
Ensure the app has full fulfillment scopes, notably read_merchant_managed_fulfillment_orders (and corresponding write scopes as needed).
Retrieve fulfillment orders: GET /api/2022-10 (or later)/orders/{order_id}/fulfillment_orders.json to get fulfillment_order_id.
For partial fulfillments, map order line item IDs to fulfillment_order_line_items; for full fulfillments, this can be omitted.
Create the fulfillment: POST /api/2022-10+ /fulfillments.json with line_items_by_fulfillment_order and tracking_info.
Example: A Python snippet for 2023-01 demonstrates fetching the fulfillment_order_id, then posting a fulfillment with tracking number, URL, and carrier.
Outcome: With correct permissions, fulfillment orders are retrievable and fulfillments can be created as intended. The discussion moved from confusion and workarounds to a clear, permission-based fix. Code snippet is central for implementation guidance. Status: resolved with actionable steps.
I’m having the same problem here, I had to revert to the lower API version just to use the fulfillment services. Even the support does not know what the fulfillment_order_id references. Any help from the devs would be great.
@Shopify_77 Any help would be much appreciated. 2 months and 0 reply!
This is not funny at all when the API docs says “Fulfillment orders are created automatically when an order is created.” but by the fact all website’s I see do not have this information. So how we should fulfill the order then?
For anyone else experiencing the same problem, I was getting no results when requesting the list of fulfillment_orders for a specific order until I gave the app the “read_merchant_managed_fulfillment_orders” permission.
To anyone who experiences the same problem in the future, granting the “read_merchant_managed_fulfillment_orders” permission to your application will work.