Python ShopifyAPI unable to save orders fulfillments

Topic summary

Python ShopifyAPI (v12.3.0) fulfillment creation started failing with HTTP 404 on fulfillment.save(), affecting all orders despite valid auth and permissions. The failing call targets deprecated Fulfillment endpoints that were recently removed.

Cause: Recent Fulfillment API deprecations require using the Fulfillment Order flow. The library’s Fulfillment() still calls old endpoints, leading to 404s.

Solutions shared:

  • Implement direct REST calls (API version 2023-07):
    1. GET orders/{id}/fulfillment_orders to retrieve fulfillment orders.
    2. Filter for status=open and method_type=shipping.
    3. POST /fulfillments with line_items_by_fulfillment_order, tracking_info, and notify_customer.
      A working code example was provided in-thread.
  • Library-based alternative: use shopify.FulfillmentV2() instead of shopify.Fulfillment(), which targets the new endpoint.

Required API access scopes for this flow:

  • write/read_assigned_fulfillment_orders
  • write/read_merchant_managed_fulfillment_orders
  • write/read_third_party_fulfillment_orders
    These are configured as API access scopes for the app.

Status: Workarounds available (direct REST or FulfillmentV2). Awaiting upstream library alignment; no further unresolved issues noted.

Summarized with AI on December 24. AI used: gpt-5.

Hello @jagdish_0106

You should grant those permissions to the app that will perform the fulfillments.

Maybe “permissions” is not the best choice of word here, because I think it is actually called “API access scopes”.

Here you have the reference: https://shopify.dev/docs/api/usage/access-scopes