Skip to main content

Stripe Direct-Payment-Link Recovery

Memberstack Team
Memberstack Team
  • Updated

Stripe Direct-Payment-Link Recovery

⏱️ TL;DR

  • The Problem: If you send a customer a raw, direct Stripe Payment Link (generated inside your Stripe dashboard), they will pay successfully, but no Memberstack member is created, and no plans are attached. They will have paid you, but they won't have access to your site.
  • Why this happens: Stripe Payment Links bypass Memberstack entirely. Because Memberstack didn't initiate the checkout, Stripe has no metadata to tie the new payment to a Memberstack member ID.
  • How to fix a single member (The Recovery):
    1. Create a free member account in Memberstack using the customer's email.
    2. Add the Stripe Customer ID (cus_...) directly to their Memberstack profile (by using Set/Create Stripe Customer option in their profile). 
    3. Click "Resync with Stripe" inside their Memberstack profile.
  • How to prevent it: Never share direct Stripe Payment Links. Always use Memberstack Checkout Buttons on your website or auto-open checkout using URL parameters .

1. What Happens When a Member Pays via a Direct Stripe Link?

To understand how to fix this, it helps to understand why the system breaks when you bypass Memberstack:

When a user checks out via a Memberstack button on your site, Memberstack generates a Stripe Checkout Session loaded with metadata (including their unique Member ID starting with mem_). When Stripe processes the payment, it sends a webhook back to Memberstack saying: "Hey, mem_123 just paid for pln_abc!"

When you use a direct Stripe Payment Link:

  1. Stripe processes the payment.
  2. Stripe creates a brand new Customer ID (cus_...) and Subscription ID (sub_...).
  3. Because the checkout did not start in Memberstack, there is no member metadata attached to the payment.
  4. Stripe sends a webhook to Memberstack, but because there is no Member ID attached, Memberstack has no idea who this payment belongs to. It silently ignores the event to prevent security conflicts.

2. Step-by-Step Recovery Flow (Manually Mapping the Member)

If a customer has already paid via a Stripe Payment Link, do not refund them! You can manually map their Stripe payment to their Memberstack account in under 5 minutes.

Step 1: Find the Stripe Customer ID

  1. Log into your Stripe Dashboard and search for the customer's email.
  2. Open their customer profile.
  3. Locate and copy the Customer ID (starts with cus_). You do not need the Subscription ID; Memberstack will pull that automatically once the Customer ID is linked.

Step 2: Link the Customer to Memberstack
Choose one of the two scenarios below depending on whether the member already has an account on your website.

Scenario A: The member does not exist in Memberstack yet

  1. Go to Members in your Memberstack Dashboard and click Add Member.
  1. Enter their email address and click Add Member to save.
  1. Click on the newly created member's profile in your Members list.
  1. Click on the member record to open their profile in the side panel. Click on 'Actions' and select 'Set/Create Stripe Customer, 
  2. Select 'Set existing Stripe Customer ID' in the dialog box and paste...their Stripe Customer ID (cus_...) into the Stripe Customer ID field, and click Save.

Scenario B: The member already has an account in Memberstack

If the member already signed up on your site (for example, as a free member) before paying, you can link their existing account directly from the dashboard:

  1. Go to Members in your Memberstack Dashboard and click on the member's profile.
  2. Click Click on 'Actions' in the right side panel and select 'Set/Create Stripe Customer.
  3. Select 'Set existing Stripe Customer ID' in the dialog box and paste their Stripe Customer ID (cus_...) into the Stripe Customer ID field.
  4. Click Save.

Step 3: Resync with Stripe 

  1. Go to your Members list and click on the member's profile.
  2. In the top-right corner, click Actions and select Resync with Stripe.
  3. Within 60 seconds, Memberstack will query Stripe using the newly mapped Customer ID, pull in their active subscription, and grant them full premium access on your site.

3. Recovery Flow for Mistyped Emails (Duplicate Customers)

Sometimes, a customer will buy a plan using a mistyped email in Stripe (e.g., john.doe@gamil.com instead of john.doe@gmail.com), or they will check out using a personal email but want their Memberstack account under their work email.

This creates a mismatch where Stripe has one email, and Memberstack has another.

How to resolve email mismatches:

  1. Update Stripe First: Go to the customer's profile in Stripe, click on the ellipsis button and select 'Edit information , and change their email to their correct, intended email address.
  2. Update Memberstack: Go to the member's profile in Memberstack and update their email to match the correct email you just set in Stripe.
  3. Go to the member's profile in Memberstack, opt to Set existing Stripe customer ID , and paste their Stripe Customer ID (cus_...) into the Stripe Customer ID field.
  1. Resync: Click Actions in the top-right corner and select Resync with Stripe.

4. How to Prevent This from Happening Again

To ensure you never have to manually map a Stripe ID again, follow these rules:

  • Rule 1: Direct users to your website's pricing page or auto-open checkout using URL parameters  
    • Because Memberstack needs to track sessions and create members, you should always direct users to either:
    • A page on your website (such as yoursite.com/signup) containing your Memberstack signup form or checkout button.
    • Auto-open checkout based on URL parameters using code. For more information please see this article.  This approach safely redirects the user to a secure Stripe Checkout session while preserving Memberstack's metadata tracking. 
  • Rule 2: Don't Share Stripe Links in Emails or PDFs.
    If you are sending sales emails, invoices, or onboarding PDFs, never paste raw Stripe checkout links. Always direct users to a hidden signup/pricing page on your Webflow site, or build a checkout link as mentioned in the linked article above.
  • Rule 3: Delete Unused Payment Links in Stripe.
    To prevent team members from accidentally sending out raw Stripe Payment Links, go to Stripe, then Payment Links' under 'Payments' dropdown menu and deactivate any links that bypass Memberstack.

Was this article helpful?

Didn’t find your answer?

Get an instant answer from Rey, or reach a human. Either way, we’re happy to help.

Comments

No comments yet. Start the conversation below.

Please sign in to leave a comment.

Sitemap