Membership Plugin

WordPress Membership Plugin

  • Home
  • Documentation
  • Addons
  • Support
    • Quick Setup
    • Documentation
    • Premium Addon Support
    • Paid Support
    • Support Forum
    • Support Forum Search
    • Forum Login
    • Forum Registration
  • Contact

[Resolved] Paid membership via PayPal results in upgrade prompt (no registration link)

Simple Membership Plugin › Forums › Simple Membership Plugin › Paid membership via PayPal results in upgrade prompt (no registration link)

Tagged: membership, paypal, Registration, upgrade

  • This topic has 8 replies, 3 voices, and was last updated 10 months ago by milloly.
Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • June 17, 2025 at 10:50 am #30631
    milloly
    Participant

    Hi!All.
    Problem Statement:
    In our membership system, PayPal payments are linked to the user’s PayPal email. This creates an issue where:

    When a payment email matches an existing member’s email in our database, the system automatically processes it as a membership upgrade instead of a new registration.

    As a result:

    1.Existing users cannot create new accounts if using the same PayPal email

    2.They unintentionally upgrade their old accounts when they intend to register anew

    3.The only workaround is to use a different PayPal account for new registrations

    User Impact:

    1.Violates user expectations (intending to register but accidentally upgrading)

    2.Causes duplicate payments for unintended upgrades

    3.Forces users to maintain multiple PayPal accounts

    Technical Context:
    The system currently prioritizes email matching over user intention, creating this friction in the registration/payment flow.

    Thanks!

    June 18, 2025 at 12:28 am #30637
    The Assurer
    Moderator

    Please turn on the debug logs.

    Are you encountering a situation similar to this?
    https://simple-membership-plugin.com/forums/topic/user-registration-and-paypal-payments-errors/

    June 18, 2025 at 2:59 am #30638
    milloly
    Participant

    Hello, Boss,

    Preconditions:
    System Design: There is no free user tier. Users purchase membership levels via PayPal and complete registration through a registration link.

    Operation 1: The PayPal email is nisinger@outlook.com, and the newly registered user’s email is also nisinger@outlook.com. Below is the system log (everything works normally):

    [2025/06/18 01:56:28] – SUCCESS: Empty caps. Calling get_wp_user_roles_by_id() to retrieve role.
    [2025/06/18 01:56:28] – SUCCESS: Cancelling all subscription of member id: 40
    [2025/06/18 01:56:28] – SUCCESS: No active subscriptions found for member ID: 40
    [2025/06/18 01:56:28] – SUCCESS: Empty caps. Calling get_wp_user_roles_by_id() to retrieve role.
    [2025/06/18 01:56:28] – SUCCESS: Cancelling all subscription of member id: 39
    [2025/06/18 01:56:29] – SUCCESS: No active subscriptions found for member ID: 39
    [2025/06/18 01:56:46] – SUCCESS: swpm_pp_create_order ajax request received for createOrder. Button ID: 107, On Page Button ID: swpm_paypal_button_0
    [2025/06/18 01:56:46] – SUCCESS: Using the cached PayPal API access token (since it is still valid). Environment mode: sandbox
    [2025/06/18 01:56:46] – SUCCESS: Executing order create (v2/checkout/orders) using URL and args.
    [2025/06/18 01:56:48] – SUCCESS: PayPal Debug ID from the REST API (by URL) request. Debug ID: f7235671520be, Request URL: https://api-m.sandbox.paypal.com/v2/checkout/orders
    [2025/06/18 01:56:48] – SUCCESS: PayPal Order ID: 1KF02029W5577644J
    [2025/06/18 01:56:55] – SUCCESS: Received request – swpm_pp_capture_order. Order ID: 1KF02029W5577644J, Button ID: 107, On Page Button ID: swpm_paypal_button_0
    [2025/06/18 01:56:57] – SUCCESS: PayPal Capture ID (Transaction ID): 1KF02029W5577644J
    [2025/06/18 01:56:57] – SUCCESS:
    Array
    (
    [gateway] => paypal_buy_now_checkout
    [txn_type] => pp_buy_now_new
    [custom] => subsc_ref=2&user_ip=127.0.0.1&reference=1KF02029W5577644J
    [txn_id] => 7EJ461603U7168612
    [subscr_id] => 7EJ461603U7168612
    [payment_button_id] => 107
    [item_number] => 107
    [item_name] => Buy: Basic US$5.8/month
    [status] => Completed
    [payment_status] => Completed
    [mc_gross] => 0.10
    [mc_currency] => USD
    [quantity] => 1
    [ip] => 127.0.0.1
    [first_name] => John
    [last_name] => Doe
    [payer_email] => nisinger@outlook.com
    [payer_id] => JT9LPDX5SEGC8
    [address_street] => 1 Main St
    [address_city] => San Jose
    [address_state] => CA
    [address_zip] => 95131
    [address_country] => United States
    )
    [2025/06/18 01:56:58] – SUCCESS: Validation passed. Going to create/update member account and save transaction data.
    [2025/06/18 01:56:58] – SUCCESS: Transaction type: pp_buy_now_new, Transaction ID: 7EJ461603U7168612
    [2025/06/18 01:56:58] – SUCCESS: Membership payment paid for membership level ID: 2
    [2025/06/18 01:56:58] – SUCCESS: swpm_handle_subsc_signup_stand_alone(). Custom value: subsc_ref=2&user_ip=127.0.0.1&reference=1KF02029W5577644J, Unique reference: 7EJ461603U7168612
    [2025/06/18 01:56:58] – SUCCESS: Could not find any record using the given email address (nisinger@outlook.com). Attempting to query database using the unique reference: 7EJ461603U7168612
    [2025/06/18 01:56:58] – SUCCESS: Did not find a match for an existing member profile for the given reference. This must be a new payment from a new member.
    [2025/06/18 01:56:58] – SUCCESS: Creating new member account. Membership level ID: 2, Subscriber ID value: 7EJ461603U7168612
    [2025/06/18 01:56:58] – SUCCESS: Member signup URL: http://localhost:1000/membership/sign-up/?member_id=42&code=67671a3fdcc97086e2a7df41b4d1b5e7
    [2025/06/18 01:56:59] – SUCCESS: Member signup (prompt to complete registration) email successfully sent to: nisinger@outlook.com
    [2025/06/18 01:56:59] – SUCCESS: Saving transaction data to the database table.
    [2025/06/18 01:56:59] – SUCCESS: Transaction data saved.
    [2025/06/18 01:56:59] – SUCCESS: Payment Notification Forwarding is Enabled. Posting the payment data to URL: /membership/paid/
    [2025/06/18 01:56:59] – SUCCESS: There was an error posting the payment data. Error message: A valid URL was not provided.

    Operation 2: The PayPal email is nisinger@outlook.com, and an existing user has already used the nisinger@outlook.com email. When purchasing a membership level without logging into the system, the expected behavior should be to send a registration link to the nisinger@outlook.com email to register a new user. However, the result is that the system directly upgrades the account bound to the nisinger@outlook.com email (duplicate purchase).

    [2025/06/18 01:43:52] – SUCCESS: swpm_pp_create_order ajax request received for createOrder. Button ID: 107, On Page Button ID: swpm_paypal_button_0
    [2025/06/18 01:43:52] – SUCCESS: [New Token] Creating a new PayPal API access token for environment mode: sandbox
    [2025/06/18 01:43:53] – SUCCESS: PayPal Debug ID from the REST API (by URL) request. Debug ID: f125956279ef1, Request URL: https://api-m.sandbox.paypal.com/v1/oauth2/token?grant_type=client_credentials
    [2025/06/18 01:43:53] – SUCCESS: PayPal access token created successfully.
    [2025/06/18 01:43:53] – SUCCESS: Executing order create (v2/checkout/orders) using URL and args.
    [2025/06/18 01:43:54] – SUCCESS: PayPal Debug ID from the REST API (by URL) request. Debug ID: f1326181347be, Request URL: https://api-m.sandbox.paypal.com/v2/checkout/orders
    [2025/06/18 01:43:54] – SUCCESS: PayPal Order ID: 6CT414362L0591824
    [2025/06/18 01:44:22] – SUCCESS: Received request – swpm_pp_capture_order. Order ID: 6CT414362L0591824, Button ID: 107, On Page Button ID: swpm_paypal_button_0
    [2025/06/18 01:44:24] – SUCCESS: PayPal Capture ID (Transaction ID): 6CT414362L0591824
    [2025/06/18 01:44:24] – SUCCESS:
    Array
    (
    [gateway] => paypal_buy_now_checkout
    [txn_type] => pp_buy_now_new
    [custom] => subsc_ref=2&user_ip=127.0.0.1&reference=6CT414362L0591824
    [txn_id] => 4HD18712T4963311A
    [subscr_id] => 4HD18712T4963311A
    [payment_button_id] => 107
    [item_number] => 107
    [item_name] => Buy: Basic US$5.8/month
    [status] => Completed
    [payment_status] => Completed
    [mc_gross] => 0.10
    [mc_currency] => USD
    [quantity] => 1
    [ip] => 127.0.0.1
    [first_name] => John
    [last_name] => Doe
    [payer_email] => nisinger@outlook.com
    [payer_id] => JT9LPDX5SEGC8
    [address_street] => 1 Main St
    [address_city] => San Jose
    [address_state] => CA
    [address_zip] => 95131
    [address_country] => United States
    )
    [2025/06/18 01:44:25] – SUCCESS: Validation passed. Going to create/update member account and save transaction data.
    [2025/06/18 01:44:25] – SUCCESS: Transaction type: pp_buy_now_new, Transaction ID: 4HD18712T4963311A
    [2025/06/18 01:44:25] – SUCCESS: Membership payment paid for membership level ID: 2
    [2025/06/18 01:44:25] – SUCCESS: swpm_handle_subsc_signup_stand_alone(). Custom value: subsc_ref=2&user_ip=127.0.0.1&reference=6CT414362L0591824, Unique reference: 4HD18712T4963311A
    [2025/06/18 01:44:25] – SUCCESS: Found a match in the member database. Member ID: 39
    [2025/06/18 01:44:25] – SUCCESS: Modifying the existing membership profile… Member ID: 39
    [2025/06/18 01:44:25] – SUCCESS: This is a payment for the same membership level (renewal scenario).
    [2025/06/18 01:44:25] – SUCCESS: Going to use the current expiry date for the Access Starts date.
    [2025/06/18 01:44:25] – SUCCESS: Setting access starts date value to: 2025-08-16
    [2025/06/18 01:44:25] – SUCCESS: Updating the current membership level (2) of this member to the newly paid level (2)
    [2025/06/18 01:44:25] – SUCCESS: swpm_membership_level_changed action triggered. Member ID: 39, Old Level: 2, New Level: 2
    [2025/06/18 01:44:25] – SUCCESS: The to (Level ID: 2) and from (Level ID: 2) values are the same. Nothing to do here.
    [2025/06/18 01:44:26] – SUCCESS: Member upgrade/update completion email successfully sent to: nisinger@outlook.com
    [2025/06/18 01:44:26] – SUCCESS: Saving transaction data to the database table.
    [2025/06/18 01:44:26] – SUCCESS: Transaction data saved.
    [2025/06/18 01:44:26] – SUCCESS: Payment Notification Forwarding is Enabled. Posting the payment data to URL: /membership/paid/
    [2025/06/18 01:44:26] – SUCCESS: There was an error posting the payment data. Error message: A valid URL was not provided.

    The current issue is:
    Once a user registers with the PayPal email, it becomes impossible to register a new user because PayPal payments always match the previously registered user and upgrade their account. The only workaround is to use a different PayPal account.

    My expectations:
    1. When a user makes a payment, do not match the PayPal email with the email field in the database. Treat PayPal solely as a payment tool.
    2. Allow the same PayPal account to register any number of accounts, regardless of whether those accounts use the PayPal email or not.

    I hope to receive your answer. Thank you very much.

    June 18, 2025 at 3:08 am #30640
    admin
    Keymaster

    What you described doesn’t align with how the Simple Membership plugin handles member registration in its standard setup. In the standard registration flow, the plugin uses the email address entered during the PayPal checkout for creating the membership account.

    Each membership account must have a unique email address. If an account already exists with a specific email, that same email cannot be used again for registration. As a result, the plugin won’t send a “complete registration” prompt if the email is already tied to an existing account.

    For your use case, we recommend using the alternate registration scenario described here:
    https://simple-membership-plugin.com/allowing-members-create-account-prior-completing-membership-payment/

    In this flow, users first register using any email address of their choice. Later, they can complete a paid membership purchase using any PayPal account—without linking it directly to the account email.

    Let me know if this 2nd option works for your setup.

    June 18, 2025 at 4:19 am #30653
    milloly
    Participant

    Thank you for your reply, Boss.

    I have a deep understanding of the standard registration process and the “register first, then pay” process in Simple Membership.

    I would like to confirm something with you.

    Is the current design of Simple Membership such that in the standard registration process (purchasing a membership level), if a user has already used the email abc@outlook.com, and the PayPal account is also bound to abc@outlook.com, then when using PayPal to pay, no registration link will be sent?

    If this is the case, it might actually be problematic.

    The PayPal email and the user’s email should be independent of each other and not interfere with one another.

    On the “Join Us” page, when purchasing a membership level via PayPal, a registration link should always be sent.

    Looking forward to your reply. Thank you.

    June 18, 2025 at 3:55 pm #30655
    admin
    Keymaster

    Yes, the Simple Membership plugin is designed to work as follows:

    #1) If a member already has an account using a specific email address (e.g., jon.doe@example.com),
    #2) And a payment is made using a PayPal account with the same email address, then the plugin will automatically associate the payment with that existing member account.

    This design allows a user to make a payment without needing to log into the site. The system can still match and apply the payment to the correct account for upgrades or renewals. Since PayPal email addresses are verified, they provide a reliable way to perform this matching. This is a feature most of our users rely on.

    Unfortunately, if this behavior doesn’t suit your project’s needs, you may need to explore alternative plugin options.

    June 19, 2025 at 2:04 am #30659
    milloly
    Participant

    Thank you for your response.

    I now fully understand the registration and payment logic of Simple Membership.

    However, I still believe that keeping PayPal/Stripe emails decoupled from the member emails in the database could help avoid duplicate payments or reduce user confusion.

    Perhaps in a future version of Simple Membership, a toggle option could be added, allowing developers to manually enable or disable the coupling of these email addresses.

    June 19, 2025 at 4:08 am #30662
    admin
    Keymaster

    Sure. If you need any new hooks, just let me know and we’ll add them to the plugin.

    On a related note, we’ve recently added a feature for subscription buttons that lets you display a custom message or warning to members who already have an active subscription. There’s also an option to hide the subscription button entirely in that case. This can be a useful way to prevent duplicate subscription payments from existing members.

    June 19, 2025 at 9:13 am #30663
    milloly
    Participant

    Thank you very much.

  • Author
    Posts
Viewing 9 posts - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.
Log In

Please read this message before using our plugin.

Search

Featured Addons and Extensions

  • Membership Form Builder Addon
  • Member Directory Listing Addon
  • WooCommerce Payment Integration
  • Member Data Exporter Addon

Documentation

  • Documentation Index Page

Copyright © 2026 | Simple Membership Plugin | Privacy Policy