Skip to content

Stripe BillingThe Stripe customer portal isn’t working

Customers click Manage billing and get an error, an expired link, or a portal that won’t let them do what they need. Most cases come from settings saved in only one mode, links that were reused, or a session created without the details Stripe needs. Here’s each one in Stripe’s words, and the fix, or hand it over at a fixed price.

Short answer

Save the portal settings in the Dashboard for live mode as well as sandboxes, since each has its own. Create a new portal session on your server each time a signed-in customer clicks the button, because session links are short-lived, and pass a return_url unless a default is set. Then listen to subscription webhooks so the app follows what customers change.

Why the portal fails, and the fix

  1. 01

    Settings saved in only one mode

    “Choose your settings for sandboxes and live mode, based on your product and price catalog.” Stripe, Integrate the customer portal

    A portal that works in testing and fails for real customers often has no live mode settings. Turn off View test data, configure the portal in live mode, and add your live mode webhooks.

  2. 02

    A saved or emailed portal link

    “New portal sessions expire after a 5 minute period.” Stripe, Customer portal

    Portal session links expire, so a link stored in your database or sent by email stops working. Create a new session when the customer clicks Manage billing, after checking they’re signed in.

  3. 03

    A session created without the right details

    “Make sure to authenticate customers on your site before creating sessions for them.” Stripe, Integrate the customer portal

    The session needs the customer ID that matches the signed-in user, and a return_url unless you set a default in the Dashboard. Look up the customer ID in your own database for the signed-in user, never from the browser, or one user could open another’s billing.

  4. 04

    The app doesn’t notice portal changes

    “When subscriptions are upgraded, downgraded, or canceled, you need to make sure that customers receive only the products or services they’re actively subscribed to.” Stripe, Integrate the customer portal

    When a customer upgrades, downgrades or cancels in the portal, Stripe tells your app through webhooks. Without them, the app keeps the old plan.

Checked against the vendor’s docs on : Stripe docs: Integrate the customer portal; Stripe docs: Customer portal.

Rather hand it over?

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

Related: Stripe canceled, app access wrong · Stripe works in test mode, not live · Stripe paid but account not upgraded

Questions

More on this error

Can I test the portal before customers see it?

Yes. Stripe says you can open the portal for a sandbox customer from the Dashboard: open the customer, click Actions, then Open customer portal.

Is there one link I can share with every customer?

Stripe can create one shareable link for each portal configuration. For a Manage billing button inside your app, create a new session per click instead.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; we reply by email, usually within one business day.