storeCreditAccounts field returns ACCESS_DENIED even with read_customers scope

I’m trying to read a customer’s store credit balance via the Admin GraphQL API from a Dev Dashboard custom app, but the storeCreditAccounts field returns ACCESS_DENIED regardless of what I try.

What I’ve tried:

  • Legacy custom app token with read_customers + read_gift_cards scopes → ACCESS_DENIED

  • Dev Dashboard OAuth token (offline) with read_customers scope → ACCESS_DENIED

  • The error message does not include a “Required access: X” hint like other field errors do

The query:

{ customer(id: "gid://shopify/Customer/...") {
    storeCreditAccounts(first: 1) {
      nodes { balance { amount currencyCode } }
    }
} }

Question: What scope or additional approval is required to access storeCreditAccounts? Is this restricted by plan, or is there a protected data category approval needed?

Store is on the Basic plan.

Ultimately I’m trying to display a customer’s store credit balance on a custom account dashboard page in a Dawn theme.

Hi @Shawn_Talvacchia! The scope you need is read_store_credit_accounts, not read_customers or read_gift_cards. Store credit has its own dedicated access scopes that are separate from the customer scopes.

I tested your exact query on a dev store with read_store_credit_accounts granted and it returned successfully, so your query structure is good. Once you add that scope to your app’s configuration in the Dev Dashboard or via shopify.app.toml, you should be set. If you also need to issue or debit store credit later, the mutation scope is write_store_credit_account_transactions (there’s also a read_store_credit_account_transactions scope if you need the transaction history).

I don’t believe the Basic plan is a blocker for the API itself, but I’d focus on the scope change first and confirm from there. Let me know how it goes after updating!