Updating App scopes to include FulfillmentOrder Scopes

Topic summary

Migration context: An app on API version 2022-04 needs to move from deprecated Fulfillment endpoints (removed in 2022-07) to the FulfillmentOrder resource. This requires new scopes: read/write_third_party_fulfillment_orders and read/write_assigned_fulfillment_orders.

Issue: Attempting to add these scopes via the standard OAuth authorize URL returned 403 (Forbidden) with “Scope undefined for API access: oauth.” Both code and Postman produced the same error.

Resolution: Instead of re-authorizing with the OAuth URL, opt in to Fulfillment Orders as a fulfillment service by updating the fulfillment service via API: PUT /admin/api/{api_version}/fulfillment_services/{fulfillment_service_id}.json. This aligns with Shopify’s migration guidance (Step 3: Opt in to fulfillment orders as a fulfillment service).

Outcome: No uninstall/reinstall needed. The approach worked, and the thread is resolved.

Summarized with AI on February 1. AI used: gpt-5.

I have an app that is running on version 2022-04 (orders are being fulfilled through Fulfillment endpoints that got removed in version 2022-07) So I’ve Updated my code according to the documentation as version 2022-07 uses FulfillmentOrder resource instead, that needs new scopes to be installed as well

'read_third_party_fulfillment_orders',
'write_third_party_fulfillment_orders',
'read_assigned_fulfillment_orders',
'write_assigned_fulfillment_orders'

As the documentation mentions no need to uninstall and reinstall the application to add the new scopes instead we can use

https://{shop}.myshopify.com/admin/oauth/authorize?client_id={client_id}&scope={scopes}&redirect_uri={redirect_uri}&state={nonce}&grant_options[]={access_mode}

but it always returns with a status code 403 (Forbidden) and an error message Scope undefined for API access: oauth I’ve used both code and postman to trigger this request but the result was the same. Any help?

Solved it!
Rather than adding the new scopes using

https://{shop}.myshopify.com/admin/oauth/authorize?client_id={client_id}&scope={scopes}&redirect_uri={redirect_uri}&state={nonce}&grant_options[]={access_mode}

You need to add them using

PUT https://{shop}.myshopify.com/admin/api/{api_version}/fulfillment_services/{fulfillment_service_id}.json

for more details check https://shopify.dev/apps/fulfillment/migrate