s2Member v260215 (Framework and Pro) was released on February 15th, 2026.
Unified Changelog for s2Member & s2Member Pro v260215
(Framework) Bug Fix: Prevent PHP fatal error when multiple PayPal Checkout buttons appear on the same page (PHP 8+).
(Framework) Bug Fix: PayPal Checkout admin actions (Test Credentials / Webhook / Clear Cache) now submit via POST instead of redirecting (avoids “headers already sent” warnings).
(Framework) Bug Fix: PayPal cancellation notifications now backfill missing membership mapping fields (item_number, item_name, period1, period3) from stored IPN Signup Vars using the subscription ID ( recurring_payment_id / subscr_id ), so Auto-EOT is set correctly on cancel.
(Framework) Bug Fix: Auto-EOT PayPal status checks now query PayPal Checkout subscriptions via PayPal’s REST Subscriptions API (instead of PayPal's legacy “Recurring Payments” API), preventing “11592” errors and allowing Auto-EOT to detect inactive PayPal Checkout subscriptions.
(Framework) Security: PayPal Checkout webhook environment inference now validates the paypal-cert-url host before using it (hardens environment inference used during verification).
(Framework) Security: PayPal Checkout cancel redirect now validates the destination URL and safely falls back to the site home URL.
(Framework) Security: PayPal Checkout tokens now use s2Member’s hardened unserialize routine.
(Framework) Security: Harden unserialization of stored custom capabilities metadata when loading user access rules.
(Framework) Security: Harden the registration password handler.
(Framework) Improvement: Harden PayPal Checkout endpoint behavior on problematic hosts; return consistent JSON errors (HTTP 500) on notify-proxy failures.
(Framework) Improvement: Harden PayPal Checkout REST API/webhook handling for network failures and unexpected/non-JSON responses (avoids PHP 8+ warnings).
(Framework) Improvement: PayPal Checkout webhook setup now treats "no change" updates and existing webhook URLs as success (adopts the existing webhook ID automatically).
(Framework) Improvement: PayPal Checkout webhook signature verification now auto-detects Sandbox vs Live from inbound headers (so webhooks validate correctly even if the site’s current environment setting differs).
(Framework) Improvement: PayPal Checkout logging now includes env_setting (site setting) and env_webhook (inferred from inbound webhook headers) for clearer Sandbox/Live environment troubleshooting.
(Framework) Improvement: PayPal Checkout webhook idempotency cache (event/txn transients) now retains entries for 1 year (reduces long-term option bloat while preserving replay protection).
(Framework) Improvement: s2Member’s PayPal “Unsubscribe” button links to PayPal’s subscription management page, and with the new PayPal Checkout integration, when output="button" and a PayPal subscription ID is present, s2Member will attempt to cancel the subscription directly.
(Framework) UI: Add a description for paypal-checkout.log in the Log Viewer dropdown (so it’s not “No description available”).
(Pro) Improvement: PayPal Checkout buttons now support accept="card" to enable guest debit/credit card payment in the PayPal-hosted checkout experience when available (availability depends on PayPal settings/eligibility and browser privacy protections).
Upgrading to the Latest Version
You should get a notification about the update in your admin area. WP Admin > Plugins
You can also download the zip file from your Account page, and upload it. WP Admin > Plugins > Add New > Upload