I’ve been digging through the Admin GraphQL API trying to find a way to check whether a merchant has “Self-serve returns and cancellations” enabled on their store (the setting found under Settings > Customer accounts).
I’ve gone through the Shop object and related types, but I can’t find any field that exposes this. It seems like this setting is only accessible/toggleable from the Shopify admin UI itself, with no corresponding GraphQL (or REST) field to read its current state.
A few questions for the community:
Has anyone found a workaround to fetch this value programmatically?
Is this something that’s on Shopify’s roadmap to expose via the shop query or elsewhere in the Admin API?
If not, is there a recommended way to request this as a feature (Shopify Ideas forum, partner feedback form, etc.)?
This would be really useful for apps that need to conditionally show/hide return-related UI or logic based on whether self-serve returns are actually enabled for a given store, rather than relying on merchants to manually confirm.
Any insight from Shopify staff or fellow devs who’ve run into this would be appreciated!
Hi — I haven’t found a public Admin GraphQL or REST field that exposes the merchant-level “Self-serve returns and cancellations” toggle either. The documented APIs support return-related workflows, but they don’t appear to provide a capability/setting flag for this Customer Accounts configuration.
I’d avoid relying on Admin UI scraping or undocumented internal endpoints, since those can change without notice and aren’t suitable for a public app.
A practical fallback is to design the app flow so it handles both cases gracefully: use the documented return/customer-account APIs where available, and otherwise show your own return flow or ask the merchant to confirm/configure the setting during onboarding.
For a feature request, I’d post it in the Shopify Developer Community and submit it through the Partner feedback channel, including the use case: apps need a read-only capability flag to decide whether to display native self-serve return/cancellation UI.
It would be useful if Shopify exposed this as a field on Shop (or a dedicated customer-account settings/capabilities object), ideally with a corresponding webhook when the merchant changes the setting.
If anyone from Shopify can confirm whether there is a supported API surface or roadmap item for this, that would be appreciated.
I went hunting for the same field and came up empty on the Shop object too. customerAccountsV2 is there but it only covers the login side, the accounts version and whether login is required at checkout, nothing about returns.
What helped me was dropping the question. You probably do not need the toggle, you need to know whether native return requests are going to land in your app’s lap. That part is observable. Return.status carries REQUESTED as a value, and Shopify documents returnRequest as creating a return that needs merchant approval, resolved by returnApproveRequest or returnDeclineRequest. A store with self serve on produces returns sitting in REQUESTED that nobody on the merchant side created.
So subscribe to the returns/request webhook and treat the first one you receive as the signal to stand your own return flow down. Polling the returns list for it works but you will burn query cost on stores that never fire one.
Worth being blunt about what that gives you. A REQUESTED return is a positive signal only. Not seeing one is not proof the setting is off, it just means nobody has asked yet, which on a fresh install is almost always. And returnRequest is a public mutation with the write_returns scope, so in theory another app could be the one creating them.
If you need a hard answer on install day I think you are stuck asking during onboarding the way Saad described. The difference the webhook makes is that a merchant who answered wrong gets corrected silently later instead of you finding out through a support ticket.
You’re not missing it, there’s no field. I’ve been through the Shop object too and that toggle under Settings > Customer accounts isn’t exposed in Admin GraphQL or REST, so you can’t read it at all.
What I’d do instead of hunting for it is stop branching on it. We hit the same wall with a different store-level setting and ended up keeping our own copy: ask once during onboarding, save it to an app-owned metafield on the shop, and put a switch in your app settings so the merchant can correct it later. Merchants get it wrong or change it behind your back, so the return-related UI should degrade gracefully rather than break when your copy goes stale.
The only indirect signal I know of is the returns request webhook. If one fires, self-serve is definitely on. Silence tells you nothing, so it’s a one-way confirmation and not a check.
For the feature request, the shopify/shopify-app issue trackers on GitHub tend to get more traction than the Ideas board.