Skip to main content

Stripe and Your Subscriber List Don’t Match

With Built-in Membership, Stripe holds the billing and Benecaster holds everything else: who your subscribers are, their feed access and their buy-ups. Normally the two agree. This page is for when they don’t: Stripe shows a charge or a subscription, and Benecaster doesn’t show what you’d expect to go with it.

Start by finding the record in Stripe, then work through the section that matches what you see.


Stripe Has a Subscription for Someone Who Isn’t in Your Subscriber List

Open the subscription in your Stripe dashboard and look at its Metadata.

No benecaster_show_id in the metadata. Benecaster didn’t create this subscription. Every subscription made through your sign-up page carries the show it belongs to. One without it was usually created by hand in the Stripe dashboard, or by another tool connected to the same Stripe account. Benecaster can’t take over a subscription it didn’t create, so the person has no feed access. Cancel it in Stripe, refunding as you see fit, and send them your sign-up page.

benecaster_show_id is a different show. The subscriber list shows one show at a time. Switch to that show in Benecaster and look again.

benecaster_show_id is this show, and they’re still missing. The sign-up reached Stripe but couldn’t be saved on your site. When that happens, Benecaster stops the sign-up rather than letting it look finished. The subscriber sees “Your payment reached Stripe but your membership could not be saved on this site. The payment has been stopped from renewing — please contact the show for help with this one charge.” They get no feed URL and no welcome email, and the Stripe subscription is cancelled straight away so it never renews.

The first payment is not refunded automatically. To put it right:

  1. Find the subscription in Stripe. It carries this show’s benecaster_show_id and the subscriber’s email, and it is already cancelled.
  2. Refund its first payment from the Stripe dashboard.
  3. Ask the subscriber to sign up again. Because the first subscription is cancelled, this doesn’t bill them twice.

If that subscription is still active rather than cancelled, the automatic cancel failed too. Cancel it in Stripe yourself before refunding.


A Subscriber Was Charged for a Buy-up They Don’t Have

If a subscriber saw “Stripe accepted the purchase but the local grant record could not be written. Please contact support.” when adding a buy-up, the buy-up was added to their Stripe subscription and is being billed, but your site didn’t record that they hold it. So they’re being billed without getting access. The charge is prorated onto their next invoice, so catching it before then means they pay nothing for it.

To put it right:

  1. In Stripe, open their subscription and remove the buy-up’s item. If Stripe asks how to handle proration, choose the option that credits the unused time, so they aren’t charged for a buy-up they never had. If the invoice has already been paid, refund that line.
  2. Ask them to add the buy-up again from their account page.

Do step 1 before step 2. Benecaster decides whether someone already has a buy-up from its own records, not from Stripe. If they add it again while the first item is still on their subscription, they end up billed for it twice.


A New Subscriber Didn’t Get a Buy-up That’s Included With Their Billing Period

When you price a buy-up at 0 on a billing period, new subscribers on that period get it at sign-up. If one didn’t, check these in order:

  • They declined it. Your sign-up form lists included buy-ups under Included with this billing period, already ticked, and a subscriber can untick one. That choice is remembered, so they won’t be given it later without asking. If they want it after all, they can add it from their account page at no cost.
  • The buy-up is full. If it has a Subscriber cap and the cap was reached, new subscribers don’t get it. Everyone who already has it keeps it.
  • The sale window was closed. Outside its On sale from / On sale until dates, an included buy-up isn’t given to anyone new.
  • It hadn’t finished setting up in Stripe. A buy-up saved moments before the sign-up may not have been ready yet.

If none of these explains it, the sign-up itself still went through. Their membership and feed are fine, and only the included buy-up is missing. Contact support with the subscriber’s email address and the buy-up’s name.


You Changed a Plan in Stripe and Benecaster Still Shows the Old Tier

When you move a subscription onto another tier’s price in the Stripe dashboard, Benecaster moves the subscriber’s tier, feed access and badges when Stripe sends the customer.subscription.updated event. If it hasn’t:

  • The event didn’t arrive. Check that your Stripe webhook is subscribed to customer.subscription.updated and look for failed deliveries in the Stripe dashboard. See Stripe setup.
  • The subscriber had a change of their own pending. While a plan or billing-period change they scheduled is waiting, Benecaster finishes that change and doesn’t act on other price changes. Cancel their pending change, or let it land, then check again.
  • The price isn’t one of your tiers’ prices. Benecaster matches the subscription’s price against your tiers’ prices for that show. A price created by hand in Stripe won’t match.

It’s usually better to let the subscriber change plan from their account page, which confirms the price, handles their buy-ups and lands at their renewal. See Built-in Membership.


Your Account Page Still Says “Add-ons”

Subscribers see buy-ups under the heading Extras, and the messages beside them say extra. If your account page still shows Add-ons, your theme has its own copy of account/buyups.php, and possibly account/cadence-switch.php, made before the wording changed. A theme’s copy keeps its own text until you replace it. Nothing is broken; copy the current templates into your theme again. See Template Overrides.


A Subscriber Was Charged When the Page Said Nothing Would Be Charged Today

An upgrade from the account page’s Your Plan section is charged the day the subscriber asks — the difference for the rest of their billing period, prorated — and the page says so: “Starts today. You pay the difference for the rest of this billing period now.” If your page instead shows “Nothing is charged today” beside a more expensive plan, your theme has its own copy of account/tier-switch.php made before upgrades took effect straight away.

The charge is correct. The confirmation box before they agree comes from Benecaster, not your theme, and always shows the exact amount charged today and the price from their renewal. Only the line on the page around it is out of date. An old copy also leaves out the line naming any paid extra that ends because the new plan doesn’t offer it.

Copy the current account/tier-switch.php into your theme again. See Template Overrides.


Still Stuck?

If Stripe and Benecaster disagree in a way this page doesn’t cover, contact support. Include the Stripe subscription ID (it starts sub_), the subscriber’s email address, and which show it’s for. That’s enough to find both sides of the record.

See Also

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