Skip to main content

Subscriber Billing Portal

Built-in membership subscribers can manage their own subscriptions through a billing portal section on your podcast’s account page. The portal is embedded directly in the [benecaster_account] shortcode output — no redirect to Stripe’s hosted portal, no external page.

The portal is only visible to subscribers managed through Benecaster’s built-in membership. Subscribers on external bridges (MemberPress, WooCommerce Subscriptions, etc.) do not see this section — they manage their subscription through their membership plugin’s account page.


What Subscribers Can Do

Update Payment Method

Clicking “Update payment method” opens an inline card input form — your subscriber’s browser loads Stripe Elements without leaving your site. Card details go directly to Stripe; your site never handles the raw card number.

After entering new card details and clicking “Save,” the new card becomes the default for future renewals immediately.

Update Billing Address

On a show that collects sales tax through Stripe Tax, the portal has a Billing address part between the payment method and the subscription details. Stripe uses the address to work out the tax on each renewal. See Setting Up Sales Tax and VAT for collecting tax.

It is Stripe’s own address form, filled in with the address Stripe already holds for the subscriber. Save billing address sends the address to Stripe; your site never stores it. An incomplete address is refused with “Please enter your full billing address.”, and one Stripe can’t place with “We could not work out the tax for that address. Please check it and try again.”

When Stripe can’t place a subscriber. If Stripe stops adding tax to a subscriber’s renewals because it can’t work out where their address is, the Billing address part shows for them with this notice above the form, and keeps showing until it is resolved:

We could not work out the sales tax for your billing address, so your payments are being taken without tax for now. Please check your address below. Your access is not affected.

They are also sent the Billing Address Needed for Tax email, whose button brings them here. When they save an address Stripe can place, the portal confirms “Billing address saved. Tax will be added from your next renewal.” and the notice goes away. Nothing is charged for the renewals that went without tax. See When Stripe Cannot Place a Subscriber for what you see on your side.

Theme overrides. The portal is the template account/billing-portal.php. An override made before the Billing address part existed has no address form, so a subscriber Stripe can’t place has nowhere to fix it. Refresh the override from the current built-in template. See Template Overrides.

Cancel Subscription

Clicking “Cancel subscription” shows a confirmation dialog before proceeding. Cancellation is always scheduled for the end of the current billing period — the subscriber retains feed access until then. The button changes to “Subscription ending on [date]” after cancellation is confirmed.

Resume Subscription

When a subscription is pending cancellation, a “Resume subscription” button appears. Clicking it un-cancels the subscription before the period ends and removes the “ending on” notice.

A subscriber who has chosen to move to your free plan sees neither button. Their subscription is set to end because that is how the move works, not because they cancelled, so the section points them to the Free Plan section, where the move can be called off. See The Subscriber Account Page.

View Billing History

The last 24 invoices are listed with date, invoice number, amount, and status. Each row has links to view the full invoice on Stripe’s hosted invoice page and download the PDF.


Payment Failure Notice

When a subscription payment fails, a persistent amber notice appears at the top of the subscription section: “Your payment failed — Update your payment method to keep your subscription active.” The notice includes a direct link to the payment method update form.

The notice clears automatically when:

  • Stripe retries successfully and the subscription returns to active
  • The subscription is cancelled (terminal state)

No action is required from you — the notice state is computed at render time from the subscription status.


For External Bridge Subscribers

Subscribers on external bridges (MemberPress, WooCommerce Subscriptions, Restrict Content Pro, or Paid Memberships Pro) never see the built-in membership billing portal. The [benecaster_account] shortcode gates the portal section on the user having a built-in membership subscription — external bridge subscribers have none. Their existing account page sections (feed URL, token reset, QR code) are unaffected.


Technical Notes

  • The billing portal uses Stripe Elements (embedded card form), not Stripe’s full-page Billing Portal redirect.
  • The subscribe shortcode JS and CSS only enqueue when at least one native subscription row is present for the page’s show context.
  • All portal REST endpoints (benecaster/v1/account/billing-portal*) use cookie authentication. No admin nonce required for subscriber-facing actions.

See Also

Need this built rather than just documented? See our services →