Title: Login for Stripe Customer Portal | Stripe Billing Login Page | Magic Link Customer Account
Author: Brandon Ernst
Published: <strong>نوفمبر 12, 2024</strong>
Last modified: October 8, 2026

---

Search plugins

![](https://ps.w.org/login-stripe-customer-portal/assets/banner-772x250.png?rev=
3190489)

![](https://ps.w.org/login-stripe-customer-portal/assets/icon.svg?rev=3552237)

# Login for Stripe Customer Portal | Stripe Billing Login Page | Magic Link Customer Account

 By [Brandon Ernst](https://profiles.wordpress.org/brandonfire/)

[Download](https://downloads.wordpress.org/plugin/login-stripe-customer-portal.1.1.2.zip)

[Live Preview](https://arq.wordpress.org/plugins/login-stripe-customer-portal/?preview=1)

 * [Details](https://arq.wordpress.org/plugins/login-stripe-customer-portal/#description)
 * [Reviews](https://arq.wordpress.org/plugins/login-stripe-customer-portal/#reviews)
 *  [Installation](https://arq.wordpress.org/plugins/login-stripe-customer-portal/#installation)
 * [Development](https://arq.wordpress.org/plugins/login-stripe-customer-portal/#developers)

 [Support](https://wordpress.org/support/plugin/login-stripe-customer-portal/)

## Description

**The fastest way to put a branded Stripe Customer Portal login page on your WordPress
site – no passwords, no developer required.**

Customers want to update their card, change their plan, or download an invoice WITHOUT
emailing support. Stripe’s Customer Portal already does all of that – what’s been
missing is a clean, branded **login entry point on your own domain**.

**Login for Stripe Customer Portal** solves that in 60 seconds: paste your Stripe
Secret Key, save, and a passwordless magic-link form is live on your site. Customers
enter their email, click the link in their inbox, and land directly inside Stripe’s
hosted Customer Portal – already authenticated.

[https://customerportalplugin.com/](https://customerportalplugin.com/) – visit the
website to see the plugin in action, browse the email template gallery, and view
the PRO feature tour.

### ✅ FREE FEATURES

 * **🔐 Stripe Customer Portal login** – connect your Stripe account, customers 
   manage billing themselves.
 * **✉️ Magic-link email authentication** – one-time link valid for 1 hour; no passwords
   to manage.
 * **🧩 Shortcode embed** – drop `[login-stripe-customer-portal]` on any page; works
   multiple times on one page.
 * **💬 Inline confirmation** – submissions stay on your page (new in 1.1.0 – no
   more blank `wp_die` screens).
 * **🔗 Custom URL slug** – host the login at `yoursite.com/billing/`, `/account/`,
   or any path you like.
 * **↩️ Custom return URL** – pick where customers land after logging out of Stripe’s
   portal.
 * **🎛️ Existing-customer gate** – optionally restrict access to email addresses
   that already have a Stripe customer record.
 * **🛡️ Security hardened** – SHA-256 token hashing, per-email + per-IP rate limiting,
   CSRF nonces, no enumeration oracle.
 * **🇪🇺 GDPR-compliant** – exporter + eraser registered with WordPress Privacy Tools
   out of the box.
 * **🧰 WP-CLI commands** – `wp lscp purge-tokens / limiter-reset / send / config`.
 * **🧹 Daily token cleanup** – WP-Cron sweep removes expired magic-link tokens 
   automatically.
 * **🧑‍💻 Developer extension surface** – 12+ filters and actions for customizing
   every stage of the flow.

📕 [Documentation](https://docs.customerportalplugin.com/) · 🆘 [Support forum](https://wordpress.org/support/plugin/login-stripe-customer-portal/)·
🌐 [Website](https://customerportalplugin.com/)

### 🚀 UNLOCK MORE WITH PRO

Need branded emails, a styled login form, role automation on Stripe events, or to
run multiple Stripe accounts from one site? **[Upgrade to PRO](https://customerportalplugin.com/pricing/)**–
every license tier includes every feature, including white-label.

[**👉 Compare PRO plans on the website**](https://customerportalplugin.com/pricing/)

#### 🎨 Branded magic-link emails

Replace the plain HTML email with one of **6 pre-built templates** (Minimal, Card,
Bold, Stripe-like, Newsletter, Card-with-logo). Pick a brand color, drop in your
logo URL, customize the subject / heading / CTA / footer – every change is shown
in a **live preview iframe** inside the admin BEFORE you save. No “send a test email”
loop required.

#### 💅 Login-form styler

Style the public login form to match your site – **6 form templates** (Minimal, 
Card, Inline, Full-width, Centered, Branded), brand color, custom heading / subheading/
button label / email placeholder, all with the same live-preview iframe.

#### 🔗 WP user  Stripe customer bridge

Pre-fill the magic-link form for logged-in WP users (one click instead of typing).
On every successful redemption, link the Stripe customer id to the WP user as `_lscp_stripe_customer_id`
user-meta – your other plugins and themes can read it. Optionally auto-create the
WP user (with a configurable default role) the first time someone redeems.

#### 🛒 WooCommerce / MemberPress / LearnDash integration

Adds a configurable **“Manage Billing”** button to:

 * The **WooCommerce My Account** dashboard (classic _and_ block-based templates).
 * The **MemberPress** account home.
 * The **LearnDash** profile page (`[ld_profile]`).

One click sends the user to your branded portal login – pre-filled with their email
if they’re logged in.

#### 🪝 Stripe webhooks  WP role automation

> **PRO-only feature.** The webhook REST endpoint, signature verification, and idempotency
> cache all ship in the PRO build. Without PRO, Stripe events sent to your site 
> are not processed by this plugin – subscription state will not auto-sync to WP
> roles. If you only need the public login form + portal redirect, FREE is enough.

A REST endpoint (`/wp-json/lscp/v1/webhook`) verifies the Stripe `Stripe-Signature`
header (HMAC-SHA256 + 5-minute timestamp tolerance, constant-time compare) and **
automates WordPress role changes** on the events that matter:

 * `customer.subscription.created` / `.updated`  assign your configured “active”
   role.
 * `customer.subscription.deleted`  remove the role (or assign a downgrade role).
 * `invoice.payment_failed`  assign your “past due” role.
 * `invoice.paid`  fire an extensible action (`lscp_pro_webhook_invoice_paid`).

7-day SHA-256-keyed idempotency cache means Stripe retries are safe – no double-
firing.

#### 🌐 Multi-Stripe-account routing

Run **multiple Stripe accounts from one WordPress install**. Each account gets its
own URL slug (`/billing-eu/`, `/billing-us/`), API key, validate-existing toggle,
redirect URL, and From email. Requests are routed transparently via WordPress’s `
pre_option_*` filters – the FREE plugin code is unchanged.

#### 🏷️ Agency white-label

Replace “Powered by Gaucho Plugins” with your own brand name across every admin 
string. Hide the upgrade prompts entirely. **Included with every PRO tier** – no
need to buy the most expensive plan.

#### 💌 Priority email support

PRO customers get a dedicated support inbox – typical reply within one business 
day.

#### 💵 PRO licensing

Every PRO tier unlocks every PRO feature, white-label included. Tiers differ only
in how many sites a license covers.

[**👉 Compare plans on the website**](https://customerportalplugin.com/pricing/)

### ✅ PERFECT FOR

 * **SaaS founders** using Stripe Billing who want customers to self-serve.
 * **Membership sites** that need a branded billing portal.
 * **WooCommerce stores** using Stripe Subscriptions (PRO adds the My Account button).
 * **MemberPress / LearnDash sites** that want a one-click Manage Billing entry 
   point.
 * **Digital agencies** managing client portfolios with multiple Stripe accounts.

### 🤝 WORKS WITH

 * **Stripe Billing** (subscriptions, invoices, customer portal) – required.
 * **WooCommerce** – PRO integration adds the Manage Billing button to My Account.
 * **MemberPress** – PRO integration adds the button to the account page.
 * **LearnDash** – PRO integration adds the button to the profile page.
 * Any WordPress theme – classic _or_ block-based.
 * Any caching plugin (the rewrite endpoint marks itself uncacheable).
 * WP Mail SMTP, FluentSMTP, Brevo, SendGrid, Postmark, etc. (uses standard `wp_mail`).

### 📚 RESOURCES

 * **Website:** [customerportalplugin.com](https://customerportalplugin.com/)
 * **Documentation:** [docs.customerportalplugin.com](https://docs.customerportalplugin.com/)
 * **Pricing & PRO upgrade:** [customerportalplugin.com/pricing](https://customerportalplugin.com/pricing/)
 * **Changelog:** [customerportalplugin.com/changelog](https://customerportalplugin.com/changelog/)
 * **Free support:** [WordPress.org support forum](https://wordpress.org/support/plugin/login-stripe-customer-portal/)
 * **PRO support:** included with every PRO license

### 🧰 GAUCHO PLUGINS PORTFOLIO

 * [**Payment Page**](https://wordpress.org/plugins/payment-page/) – Stripe payment
   forms in under 60 seconds.
 * [**Split Pay**](https://wordpress.org/plugins/bsd-woo-stripe-connect-split-pay/)–
   Split WooCommerce payments across multiple connected Stripe accounts.
 * [**Gyta Buyback**](https://wordpress.org/plugins/gyta-buyback/) – Trade-in / 
   buyback for WooCommerce.
 * [**China Payments**](https://wordpress.org/plugins/wp-stripe-global-payments/)–
   WeChat Pay + Alipay in WooCommerce.
 * [**Speed in China**](https://wordpress.org/plugins/speed-in-china/) / [**Blocked in China**](https://wordpress.org/plugins/blocked-in-china/)–
   China-region site diagnostics.
 * [**Version Info**](https://wordpress.org/plugins/version-info/) – WP, PHP, MySQL,
   web-server versions in the admin dashboard.

### External Services

This plugin connects to the following external services.

#### Stripe (api.stripe.com)

This plugin uses your Stripe Secret API key to authenticate customers and generate
secure links to the Stripe Customer Portal. Customer email addresses are sent to
Stripe when a user requests a login link. Stripe hosts the Customer Portal where
customers manage billing information.

 * [Stripe Terms of Service](https://stripe.com/legal/ssa)
 * [Stripe Privacy Policy](https://stripe.com/privacy)

#### Freemius (api.freemius.com, freemius.com)

This plugin includes the Freemius SDK for license and update management. Data is
sent to Freemius only when you opt in through the Freemius connect screen.

 * [Freemius Terms of Service](https://freemius.com/terms/)
 * [Freemius Privacy Policy](https://freemius.com/privacy/)

## Screenshots

[⌊Settings page - Stripe API key, redirect URL, customer portal slug.⌉⌊Settings 
page - Stripe API key, redirect URL, customer portal slug.⌉[

Settings page – Stripe API key, redirect URL, customer portal slug.

[⌊Public login form - customer enters their email.⌉⌊Public login form - customer
enters their email.⌉[

Public login form – customer enters their email.

[⌊Confirmation message - inline, on the same page (1.1.0 UX fix).⌉⌊Confirmation 
message - inline, on the same page (1.1.0 UX fix).⌉[

Confirmation message – inline, on the same page (1.1.0 UX fix).

[⌊Magic-link email - branded template preview (PRO).⌉⌊Magic-link email - branded
template preview (PRO).⌉[

Magic-link email – branded template preview (PRO).

[⌊Form-styler - brand color + heading + button (PRO).⌉⌊Form-styler - brand color
+ heading + button (PRO).⌉[

Form-styler – brand color + heading + button (PRO).

## Installation

 1. Upload the plugin files to `/wp-content/plugins/` or install through the WordPress
    plugins screen.
 2. Activate via the Plugins screen.
 3. Navigate to **Stripe Portal** in the WordPress admin menu.
 4. Paste your Stripe Secret API key, pick a slug for the login page (e.g. `customer-
    portal`), set a return URL, and save.
 5. Visit `yourdomain.com/<your-slug>/` to see the login form – or drop `[login-stripe-
    customer-portal]` on any page.
 6. (Recommended) Go to **Settings  Permalinks  Save** once after changing the slug.

Full setup guide: [docs.customerportalplugin.com](https://docs.customerportalplugin.com/)

## FAQ

### What problem does this plugin solve?

Stripe’s hosted Customer Portal is great, but the URL to access it is unique per
customer and not shareable. This plugin puts a clean **public login page on your
own domain** so customers can enter their email and get an instant magic-link to
their portal session – without needing a password, your support team, or a custom
Stripe API integration.

### Do I need PRO to use the plugin?

No. The free version on WordPress.org has everything you need to put a working magic-
link Stripe portal login on your site: shortcode embed, custom URL slug, GDPR tools,
rate limiting, SHA-256-hashed tokens, WP-CLI commands. PRO adds branding, integrations,
webhook automation, and multi-account routing.

### How do I get my Stripe Secret API key?

Log into your Stripe Dashboard  Developers  API keys. Copy the Secret Key (starts
with `sk_live_…` for live mode or `sk_test_…` for test mode). Paste it into **Stripe
Portal  Settings**.

### Can I customize the login page styling?

Yes – two ways:

 * **Free:** Add custom CSS targeting `.lscp-portal-form`. The form HTML is fully
   filterable via the `lscp_form_template` filter for advanced theming.
 * **PRO:** Use the built-in form styler – 6 templates, brand color pickers, custom
   heading/button label, live preview in admin. No CSS required.

### Can I brand the magic-link email?

 * **Free:** the email body is filterable via `lscp_email_html_body` (developer 
   route).
 * **PRO:** pick from 6 pre-built templates in the admin, set your brand color +
   logo + custom heading/CTA, see a live preview as you type.

### Does the plugin replace WooCommerce / MemberPress / LearnDash billing?

No – it complements them. Your Stripe products, subscriptions, and billing logic
stay in Stripe. With PRO, a **“Manage Billing”** button gets added to the WC / MP/
LD account page so logged-in customers go to your branded portal login in one click.

### How does the magic link login actually work?

 1. Customer enters their email on your login form.
 2. Plugin (rate-limited) issues a single-use token, stores its SHA-256 hash as a 1-
    hour transient, and emails the customer a link.
 3. Customer clicks the link  token is verified, marked used, and the Stripe Customer
    Portal session is created.
 4. Customer is redirected to Stripe’s hosted portal – already authenticated.

The token never appears in your database in cleartext. The link expires after one
hour or after a single use, whichever comes first.

### Can I run multiple Stripe accounts on one site?

Yes, with PRO. The Multi-Account tab lets you add as many Stripe accounts as your
license allows, each with its own URL slug, API key, redirect URL, and from email.
The free version is single-account.

### Does the webhook listener handle Stripe retries safely?

Yes. PRO’s webhook endpoint dedupes by Stripe `event.id` with a 7-day SHA-256-keyed
transient – a retried event returns `200 {"replayed": true}` without re-firing your
role automation rules.

### Is the plugin GDPR compliant?

Yes. The free version registers a Privacy Tools exporter and eraser so site owners
can satisfy data subject access and erasure requests via **Tools  Export / Erase
Personal Data**.

### Where can I find the changelog?

Recent changes are below. The full changelog (every release) is at [customerportalplugin.com/changelog](https://customerportalplugin.com/changelog/).

### Where can I get support?

 * **Free:** [WordPress.org support forum](https://wordpress.org/support/plugin/login-stripe-customer-portal/).
 * **PRO:** priority email support is included with every PRO license.

## Reviews

![](https://secure.gravatar.com/avatar/57d47fc6afd086bc1cae42f4e7c6fe9ee2e5d35777ae7fb65c831fd5cdd82f47?
s=60&d=retro&r=g)

### 󠀁[A simple no-fuss plug-in that works](https://wordpress.org/support/topic/a-simple-no-fuss-plug-in-that-works/)󠁿

 [sgchan](https://profiles.wordpress.org/sgchan/) October 12, 2025

It is a simple plugin that sends a customer an email, based on the given address,
to log into Stripe's customer portal.

 [ Read all 2 reviews ](https://wordpress.org/support/plugin/login-stripe-customer-portal/reviews/)

## Contributors & Developers

“Login for Stripe Customer Portal | Stripe Billing Login Page | Magic Link Customer
Account” is open source software. The following people have contributed to this 
plugin.

Contributors

 *   [ Brandon Ernst ](https://profiles.wordpress.org/brandonfire/)
 *   [ Gaucho Plugins ](https://profiles.wordpress.org/gauchoplugins/)
 *   [ Freemius ](https://profiles.wordpress.org/freemius/)

[Translate “Login for Stripe Customer Portal | Stripe Billing Login Page | Magic Link Customer Account” into your language.](https://translate.wordpress.org/projects/wp-plugins/login-stripe-customer-portal)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/login-stripe-customer-portal/),
check out the [SVN repository](https://plugins.svn.wordpress.org/login-stripe-customer-portal/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/login-stripe-customer-portal/)
by [RSS](https://plugins.trac.wordpress.org/log/login-stripe-customer-portal/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.2

 * Updated Freemius SDK to the latest version.

See changelog.txt for the full version history.

## Commercial plugin

This plugin is free but offers additional paid commercial upgrades or support. [View support](https://customerportalplugin.com/support/)

## Meta

 *  Version **1.1.2**
 *  Last updated **5 days ago**
 *  Active installations **10+**
 *  WordPress version ** 5.0 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.2 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/login-stripe-customer-portal/)
 * Tags
 * [account](https://arq.wordpress.org/plugins/tags/account/)[customer](https://arq.wordpress.org/plugins/tags/customer/)
   [login](https://arq.wordpress.org/plugins/tags/login/)[portal](https://arq.wordpress.org/plugins/tags/portal/)
   [stripe](https://arq.wordpress.org/plugins/tags/stripe/)
 *  [Advanced View](https://arq.wordpress.org/plugins/login-stripe-customer-portal/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/login-stripe-customer-portal/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/login-stripe-customer-portal/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/login-stripe-customer-portal/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/login-stripe-customer-portal/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/login-stripe-customer-portal/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/login-stripe-customer-portal/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/login-stripe-customer-portal/reviews/)

## Contributors

 *   [ Brandon Ernst ](https://profiles.wordpress.org/brandonfire/)
 *   [ Gaucho Plugins ](https://profiles.wordpress.org/gauchoplugins/)
 *   [ Freemius ](https://profiles.wordpress.org/freemius/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/login-stripe-customer-portal/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://customerportalplugin.com/)