Shopify Managed Pricing 404? Unpacking Why Your App's Billing Page Fails

Hey there, fellow Shopify developers and store owners! It's your friendly neighborhood Shopify expert here, diving into a topic that's caused more than a few head-scratches in the community: the dreaded Shopify Admin 404 when setting up Managed Pricing for an app. We recently had a great discussion sparked by @HaroldAA, who was wrestling with this exact issue for their embedded app. They had everything seemingly set up — Managed Pricing enabled, a public plan, free trial, English listing — but kept hitting a 404 when redirecting to Shopify's hosted pricing page. Sound familiar? You're definitely not alone!

This isn't just a minor hiccup; it's a critical blocker for getting your app's billing flow working smoothly. So, let's unpack what the community found to be the most common culprits and how you can troubleshoot this frustrating 404.

The Big Reveal: Your App's "Under Review" Status

If there's one thing the community emphatically agreed on, it's this: your app's review or draft status is the number one reason for a Managed Pricing 404. As mastroke put it, "Yes, draft/in-review apps cause 404s. Until the app is not published and live it will show 404 only." This was echoed by emilyjhonsan98 and LitExtension, who both confirmed that Shopify often restricts access to that hosted pricing page until your app is fully approved and published. It's a common oversight — you've done all the setup, but the page simply isn't "live" yet for public consumption.

So, if your app is still pending review or is in a draft/unlisted state, this is very likely your primary issue. The good news is, your fallback to an internal /app/billing page (as @HaroldAA was doing) is absolutely the right approach until your app is live.

Decoding the 404: Other Key Culprits

While the review status is a big one, it's not the only reason you might be seeing a 404. The community brought up several other critical points:

URL Mismatches and Structure

Even a tiny typo in your redirect URL can send you straight to a 404. Here's what our experts highlighted:

  • Exact Handle Match: Both mastroke and lumine emphasized that the pricing-handle or app-handle in your URL must exactly match what's in your Partner Dashboard — even a silent rename of your listing can cause issues.
  • Correct Format: There are a couple of recommended formats. mastroke suggested https://[shop].myshopify.com/admin/billing/[pricing-handle], while emilyjhonsan98 mentioned https://{shop}.myshopify.com/admin/billing/managed_pricing/plans?app_id={your_app_id}. Always double-check your app_id or pricing-handle and the overall URL structure.
  • Breaking out of Iframes: @HaroldAA was already using target: "_top", which is crucial. As LitExtension pointed out, if your redirect isn't properly breaking out of the iframe, it can cause issues.

Partner Dashboard Configuration Checks

Your Partner Dashboard is your source of truth. Make sure these settings are spot on:

  • Managed Pricing Enabled: Both emilyjhonsan98 and LitExtension highlighted that Managed Pricing must be explicitly toggled ON under App Setup. Remember to wait about 30 minutes for any changes to fully propagate.
  • Active Plans: Ensure your plans aren't just saved, but actually "Active" in the Partner Dashboard. LitExtension noted "No active plans" as a possible issue.
  • Public App Status: Your app needs to be set as a public app for Managed Pricing to function correctly.

App Listing Completeness & Locale

There was a bit of debate here, but the general consensus leans towards completeness being vital:

  • Missing Plan Details: mastroke and emilyjhonsan98 stated that "incomplete plan details" or "missing plan descriptions or features" can cause issues, even triggering a 404 because Shopify expects all required fields. While LitExtension argued this might only result in a minimal page, it's definitely best practice to ensure all your plan details are filled out completely.
  • Locale Mismatch: lumine brought up that if your listing is set to English only, and the merchant admin loads as en-CA or en-AU instead of plain en, it can 404. While LitExtension felt this usually leads to empty plans, ensuring your app's listing supports all relevant locales merchants might use is always a good idea.

Installation Context

Finally, how your app is installed matters. mastroke pointed out that "App hasn’t been installed through the official listing flow (direct install URLs bypass managed pricing)" can also lead to a 404. Make sure you're testing installs through the proper channels.

Can You "Preview" Managed Pricing While in Review?

This was another key question from @HaroldAA. Unfortunately, the short answer is "not really." Both mastroke and LitExtension confirmed there's no CLI command or Partner API endpoint to directly verify the hosted pricing page status or handle while your app is under review. Your Partner Dashboard under App setup → Pricing is your best bet for confirming your pricing handle is saved correctly, but an actual preview isn't available until the app is live.

Actionable Steps & Best Practices to Resolve the 404

Pulling all these insights together, here’s a checklist to help you banish that Managed Pricing 404:

  1. Confirm App Publication Status: This is step one! Ensure your app is fully approved and in a "Published" state, not "Draft," "In Review," or "Unlisted." Until then, keep using your internal billing page.
  2. Verify Partner Dashboard Settings:
    • Go to App setup → Pricing in your Partner Dashboard.
    • Confirm Managed Pricing is explicitly toggled ON.
    • Check that your plans are marked as "Active."
    • Make sure your app is configured as a "Public app."
    • If you've made recent changes, wait at least 30 minutes for them to propagate.
  3. Double-Check Your Redirect URL:
    • Ensure the pricing-handle or app_id in your URL exactly matches what's in your Partner Dashboard.
    • Use the correct format, such as https://[shop].myshopify.com/admin/billing/[pricing-handle] or https://{shop}.myshopify.com/admin/billing/managed_pricing/plans?app_id={your_app_id}.
    • Test the constructed URL directly in a clean browser tab (signed into the merchant admin, no embed or host param) to isolate if the issue is with the URL itself or your redirect mechanism.
  4. Complete Your App Listing: Fill out all plan descriptions, features, and other required fields in your app listing for all active languages.
  5. Consider Locale: If your listing supports only one language (e.g., plain en), be mindful if merchants are using regional variants like en-CA or en-AU. Ensuring multi-locale support for your listing is always a good idea.
  6. Install Via Official Flow: Always test your app by installing it through the official Shopify App Store listing flow, not via direct install URLs.
  7. Test on a Development Store: Once your app is approved and listed, test the hosted page on a development store to confirm everything is working as expected.

It can be frustrating to hit a 404, especially when you're so close to launching your app's billing. But as the community discussion showed, most of these issues boil down to a few common configuration points, with the app's publication status being the most frequent culprit. By systematically checking these areas, you should be able to get your Managed Pricing page up and running smoothly. Keep at it, and you'll get there!

Share:

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools