GraphiQL app permission error

I installed the GraphiQL explorer app with all admin and storefront permissions. When querying the ShopifyPaymentsAccount object, I get a permissions error. I am logged in as the store owner.

1 Like

Hey @Michael_Zareno :waving_hand: - happy to take a look into this! Would you be able to share the full GraphQL query you’re using and your Shop’s ID/myshopify.com URL? I can take a look on our end here to see if we can determine what’s causing the issue/try to replicate it.

Hope to hear from you soon!

Hi Alan,
I’m working in the Shopify GraphiQL app. The site is:

The query is a simple one:

query MyQuery {
shopifyPaymentsAccount {
payouts(query: “id:123546239282”) {
edges {
node {
id
}
}
}
}
}

The response:

{
“errors”: [
{
“message”: “Access denied for payouts field.”,
“locations”: [
{
“line”: 3,
“column”: 5
}
],
“path”: [
“shopifyPaymentsAccount”,
“payouts”
],
“extensions”: {
“code”: “ACCESS_DENIED”,
“documentation”: “Shopify API access scopes”
}
}
],
“data”: {
“shopifyPaymentsAccount”: null
},
“extensions”: {
“cost”: {
“requestedQueryCost”: 3,
“actualQueryCost”: 3,
“throttleStatus”: {
“maximumAvailable”: 4000,
“currentlyAvailable”: 3997,
“restoreRate”: 200
}
}
}
}

I uninstalled and reinstalled the app, selecting all permissions in the admin and storefront scopes. I’ll change that after development, which is going to be with n8n. We have working workflows in n8n already, but we want to migrate them away from the REST API.

Mike

Thanks @Michael_Zareno - I was able to do some more digging into this on my end and there does seem to be something odd happening here. We might have to move this to DM since there is some shop-specific info we’ll have to share, but I’ll loop back with you as soon as I have more info here.

Speak soon!

I have the same issue, also have granted all access scopes while installing the app and am logged in as shop admin.
Please let me know when you find a solution or explaination.

I can access the balance, but not balance transactions or payouts.
Example query for payouts that returns an access denied error:

query MyQuery {
shopifyPaymentsAccount {
bankAccounts(first: 5) {
nodes {
payouts(first: 10) {
nodes {
status
net {
amount
currencyCode
}
}
}
}
}
}
}

Response:

{
“errors”: [
{
“message”: “Access denied for payouts field.”,
“locations”: [
{
“line”: 5,
“column”: 9
}
],
“path”: [
“shopifyPaymentsAccount”,
“bankAccounts”,
“nodes”,
0,
“payouts”
],
“extensions”: {
“code”: “ACCESS_DENIED”,
“documentation”: “Shopify API access scopes”
}
}
],
“data”: {
“shopifyPaymentsAccount”: null
},
“extensions”: {
“cost”: {
“requestedQueryCost”: 24,
“actualQueryCost”: 6,
“throttleStatus”: {
“maximumAvailable”: 2000,
“currentlyAvailable”: 1994,
“restoreRate”: 100
}
}
}
}

I am also getting this same error. It has been driving me crazy for the past few days and I am unsure what is going on.

Even running a simple payout request gets me an access denied. I’ve tried on 3 different Shopify stores and nothing charged.

{
  shopifyPaymentsAccount {
    payouts {
      nodes {
        net {
          amount
        }
      }
    }
  }
}
{
  "errors": [
    {
      "message": "Access denied for payouts field.",
      "locations": [
        {
          "line": 3,
          "column": 5
        }
      ],
      "path": [
        "shopifyPaymentsAccount",
        "payouts"
      ],
      "extensions": {
        "code": "ACCESS_DENIED",
        "documentation": "https://shopify.dev/api/usage/access-scopes"
      }
    }
  ],
  "data": {
    "shopifyPaymentsAccount": null
  },
  "extensions": {
    "cost": {
      "requestedQueryCost": 3,
      "actualQueryCost": 3,
      "throttleStatus": {
        "maximumAvailable": 20000,
        "currentlyAvailable": 19997,
        "restoreRate": 1000
      }
    }
  }
}

Looking deeper into the scopes, I see I have access to view shopify payments, which should allow access to payouts

query AccessScopeList {
  currentAppInstallation {
    accessScopes {
      handle
    }
  }
}
{
  "data": {
    "currentAppInstallation": {
      "accessScopes": [
        {
          "handle": "read_fulfillments"
        },
        {
          "handle": "read_payment_customizations"
        },
        {
          "handle": "read_payment_gateways"
        },
        {
          "handle": "read_payment_mandate"
        },
        {
          "handle": "read_payment_terms"
        },
        {
          "handle": "read_products"
        },
        {
          "handle": "read_shopify_payments"
        },
        {
          "handle": "write_shopify_payments_accounts"
        },
        {
          "handle": "read_shopify_payments_bank_accounts"
        },
        {
          "handle": "write_shopify_payments_dispute_evidences"
        },
        {
          "handle": "write_shopify_payments_dispute_file_uploads"
        },
        {
          "handle": "write_shopify_payments_disputes"
        },
        {
          "handle": "unauthenticated_read_content"
        },
        {
          "handle": "unauthenticated_read_product_listings"
        },
        {
          "handle": "read_shopify_payments_accounts"
        },
        {
          "handle": "read_shopify_payments_dispute_evidences"
        },
        {
          "handle": "read_shopify_payments_dispute_file_uploads"
        },
        {
          "handle": "read_shopify_payments_disputes"
        }
      ]
    }
  },
  "extensions": {
    "cost": {
      "requestedQueryCost": 2,
      "actualQueryCost": 2,
      "throttleStatus": {
        "maximumAvailable": 20000,
        "currentlyAvailable": 19998,
        "restoreRate": 1000
      }
    }
  }
}

Just bumping this as we’re approaching 2 weeks without a solution, and a number of users have a similar issue

Bumping again! I would love to have solution for this issue!

helloo! it seems that all scopes of all Shopify GraphiQL Apps have been modified to this:

‘data": {
    ‘currentAppInstallation": {
      ‘accessScopes": [
        {
          ‘handle": “read_content”.
        },
        {
          ‘handle": ’read_products’
        },
        {
          ‘handle": ’unauthenticated_read_content’
        },
        {
          ‘handle": ’unauthenticated_read_product_listings’
        }
      ]
    }

Also, I can’t change the permissions by uninstalling the app and reinstalling it with all the scopes enabled.

Hey folks - :waving_hand: - still looking into the larger issue, but hope to have an update soon - thank you for your patience on this.

@victor I’m not seeing those changes on my end here, my GraphiQL app is still retaining the scopes I’ve set for it. Are you still encountering the issue there?

If so, just let me know and if you can share your shop’s ID/myshopify.com URL, I can for sure take a look into this for you.

Same issue. Non-transferable shop. I am a store owner:

Any update since May?

For:

query AccessScopeList {
currentAppInstallation {
accessScopes {
handle
}
}
}

I get:

{
“data”: {
“currentAppInstallation”: {
“accessScopes”: [
{
“handle”: “read_all_orders”
},
{
“handle”: “read_analytics”
},
{
“handle”: “write_apps”
},
{
“handle”: “write_assigned_fulfillment_orders”
},
{
“handle”: “write_brand”
},
{
“handle”: “write_brand_settings”
},
{
“handle”: “write_cart_transforms”
},
{
“handle”: “write_checkout_branding_settings”
},
{
“handle”: “write_companies”
},
{
“handle”: “write_customers”
},
{
“handle”: “read_customer_events”
},
{
“handle”: “write_customer_data_erasure”
},
{
“handle”: “write_customer_merge”
},
{
“handle”: “read_customer_payment_methods”
},
{
“handle”: “write_delivery_customizations”
},
{
“handle”: “write_discount_to_channel_publications”
},
{
“handle”: “write_discounts”
},
{
“handle”: “write_discounts_allocator_functions”
},
{
“handle”: “write_discovery”
},
{
“handle”: “read_disputes”
},
{
“handle”: “write_draft_orders”
},
{
“handle”: “write_files”
},
{
“handle”: “write_fulfillments”
},
{
“handle”: “write_gates”
},
{
“handle”: “write_gift_card_adjustments”
},
{
“handle”: “write_gift_card_transactions”
},
{
“handle”: “write_gift_cards”
},
{
“handle”: “write_inventory”
},
{
“handle”: “write_legal_policies”
},
{
“handle”: “write_locales”
},
{
“handle”: “write_locations”
},
{
“handle”: “write_marketing_events”
},
{
“handle”: “write_marketplace_fulfillment_orders”
},
{
“handle”: “write_marketplace_orders”
},
{
“handle”: “write_marketplace_payments_configurations”
},
{
“handle”: “write_marketplace_returns”
},
{
“handle”: “write_markets”
},
{
“handle”: “read_merchant_approval_signals”
},
{
“handle”: “write_merchant_managed_fulfillment_orders”
},
{
“handle”: “write_metaobject_definitions”
},
{
“handle”: “write_metaobjects”
},
{
“handle”: “read_mobile_platform_applications”
},
{
“handle”: “write_online_store_pages”
},
{
“handle”: “write_online_store_navigation”
},
{
“handle”: “write_order_edits”
},
{
“handle”: “write_order_submission_rules”
},
{
“handle”: “write_orders”
},
{
“handle”: “write_own_subscription_contracts”
},
{
“handle”: “write_payment_customizations”
},
{
“handle”: “write_payment_gateways”
},
{
“handle”: “write_payment_mandate”
},
{
“handle”: “write_payment_terms”
},
{
“handle”: “write_pixels”
},
{
“handle”: “write_price_rules”
},
{
“handle”: “write_privacy_settings”
},
{
“handle”: “write_product_feeds”
},
{
“handle”: “write_products”
},
{
“handle”: “write_product_listings”
},
{
“handle”: “write_publications”
},
{
“handle”: “write_purchase_options”
},
{
“handle”: “write_reports”
},
{
“handle”: “write_resource_feedbacks”
},
{
“handle”: “write_returns”
},
{
“handle”: “write_script_tags”
},
{
“handle”: “write_server_pixels”
},
{
“handle”: “write_shipping”
},
{
“handle”: “read_shopify_payments”
},
{
“handle”: “write_shopify_payments_accounts”
},
{
“handle”: “read_shopify_payments_bank_accounts”
},
{
“handle”: “write_shopify_payments_dispute_evidences”
},
{
“handle”: “write_shopify_payments_dispute_file_uploads”
},
{
“handle”: “write_shopify_payments_disputes”
},
{
“handle”: “write_store_credit_account_transactions”
},
{
“handle”: “read_store_credit_accounts”
},
{
“handle”: “write_taxes”
},
{
“handle”: “write_themes”
},
{
“handle”: “write_third_party_fulfillment_orders”
},
{
“handle”: “write_translations”
},
{
“handle”: “write_validations”
},
{
“handle”: “unauthenticated_write_bulk_operations”
},
{
“handle”: “unauthenticated_read_bundles”
},
{
“handle”: “unauthenticated_write_checkouts”
},
{
“handle”: “unauthenticated_read_content”
},
{
“handle”: “unauthenticated_read_customer_tags”
},
{
“handle”: “unauthenticated_write_customers”
},
{
“handle”: “unauthenticated_write_gates”
},
{
“handle”: “unauthenticated_read_metaobjects”
},
{
“handle”: “unauthenticated_read_product_inventory”
},
{
“handle”: “unauthenticated_read_product_listings”
},
{
“handle”: “unauthenticated_read_product_pickup_locations”
},
{
“handle”: “unauthenticated_read_product_tags”
},
{
“handle”: “unauthenticated_read_selling_plans”
},
{
“handle”: “unauthenticated_read_shop_pay_installments_pricing”
},
{
“handle”: “read_apps”
},
{
“handle”: “read_assigned_fulfillment_orders”
},
{
“handle”: “read_brand”
},
{
“handle”: “read_brand_settings”
},
{
“handle”: “read_cart_transforms”
},
{
“handle”: “read_checkout_branding_settings”
},
{
“handle”: “read_companies”
},
{
“handle”: “read_customers”
},
{
“handle”: “read_customer_data_erasure”
},
{
“handle”: “read_customer_merge”
},
{
“handle”: “read_delivery_customizations”
},
{
“handle”: “read_discounts”
},
{
“handle”: “read_discounts_allocator_functions”
},
{
“handle”: “read_discovery”
},
{
“handle”: “read_draft_orders”
},
{
“handle”: “read_files”
},
{
“handle”: “read_fulfillments”
},
{
“handle”: “read_gates”
},
{
“handle”: “read_gift_card_adjustments”
},
{
“handle”: “read_gift_card_transactions”
},
{
“handle”: “read_gift_cards”
},
{
“handle”: “read_inventory”
},
{
“handle”: “read_legal_policies”
},
{
“handle”: “read_locales”
},
{
“handle”: “read_locations”
},
{
“handle”: “read_marketing_events”
},
{
“handle”: “read_marketplace_fulfillment_orders”
},
{
“handle”: “read_marketplace_orders”
},
{
“handle”: “read_marketplace_payments_configurations”
},
{
“handle”: “read_marketplace_returns”
},
{
“handle”: “read_markets”
},
{
“handle”: “read_merchant_managed_fulfillment_orders”
},
{
“handle”: “read_metaobject_definitions”
},
{
“handle”: “read_metaobjects”
},
{
“handle”: “read_online_store_pages”
},
{
“handle”: “read_online_store_navigation”
},
{
“handle”: “read_order_edits”
},
{
“handle”: “read_order_submission_rules”
},
{
“handle”: “read_orders”
},
{
“handle”: “read_own_subscription_contracts”
},
{
“handle”: “read_payment_customizations”
},
{
“handle”: “read_payment_gateways”
},
{
“handle”: “read_payment_mandate”
},
{
“handle”: “read_payment_terms”
},
{
“handle”: “read_pixels”
},
{
“handle”: “read_price_rules”
},
{
“handle”: “read_privacy_settings”
},
{
“handle”: “read_product_feeds”
},
{
“handle”: “read_products”
},
{
“handle”: “read_product_listings”
},
{
“handle”: “read_publications”
},
{
“handle”: “read_purchase_options”
},
{
“handle”: “read_reports”
},
{
“handle”: “read_resource_feedbacks”
},
{
“handle”: “read_returns”
},
{
“handle”: “read_script_tags”
},
{
“handle”: “read_server_pixels”
},
{
“handle”: “read_shipping”
},
{
“handle”: “read_shopify_payments_accounts”
},
{
“handle”: “read_shopify_payments_dispute_evidences”
},
{
“handle”: “read_shopify_payments_dispute_file_uploads”
},
{
“handle”: “read_shopify_payments_disputes”
},
{
“handle”: “read_store_credit_account_transactions”
},
{
“handle”: “read_taxes”
},
{
“handle”: “read_themes”
},
{
“handle”: “read_third_party_fulfillment_orders”
},
{
“handle”: “read_translations”
},
{
“handle”: “read_validations”
},
{
“handle”: “unauthenticated_read_bulk_operations”
},
{
“handle”: “unauthenticated_read_checkouts”
},
{
“handle”: “unauthenticated_read_customers”
},
{
“handle”: “unauthenticated_read_gates”
}
]
}
},
“extensions”: {
“cost”: {
“requestedQueryCost”: 2,
“actualQueryCost”: 2,
“throttleStatus”: {
“maximumAvailable”: 2000,
“currentlyAvailable”: 1998,
“restoreRate”: 100
}
}
}
}

As you can see:
{ "handle": "write_orders" },

Hey @madfcat :waving_hand: , thanks for flagging your replication here as well. I don’t have any concrete updates to share, but I’ll pass along your report to our product team and loop back with everyone here once we have more info. Would you be open to sharing your shop URL/ID here as well so I can pass that along too?

I’ll ping our product team direct as well to see if we can share anything further, appreciate you reaching out.

I just tried to run

query GetShopifyPaymentTransactions {
  shopifyPaymentsAccount {
    id
    activated
    bankAccounts(first: 10) {
      nodes {
        bankName
      }
    }
    balanceTransactions(first: 10, reverse: true) {
      nodes {
        id
        fee {
          currencyCode
          amount
        }
        amount {
          currencyCode
          amount
        }
        test
      }
    }
  }
}

after enabling all scopes and also got the issue as others have described - can see this has been going on for a while now? :smiley: any updates?

Hey again @Evaldas_Raisutis - sending you a DM to grab some info from you to investigate further :slight_smile:

@Alan_G Any updates? This issue has been extremely frustrating

Hey @Nicklaus_Vega and all - I don’t have a fix to share, but can confirm this has been logged as an issue on our end. I can’t guarantee a turnaround time, but I’ll do some more digging internally to see if we can share some more information. Speak with you as soon as I have more info on my end here.