Sudden IPN Issue with Paypal


For the last few days I have been experiencing IPN issues, when customers are sent back to my site after payment through Paypal, the IPN is no longer working correctly. It was working fine for the last 4 years!! nothing has changed but now customers get an error message saying unable to verify post vars

I just don’t get it, Ive gone through ever thing, all ‘https’ url’s are correct, The IPN link states that its receiving ok, the logs don’t seem to show any errors, I have run a server check using your tool and that has come up fine. i have checked the IPN history in Paypal and again everything looks fine, no issues.

Im really scratching my head over this. Any idea what the problem maybe?

Out of interest, I have another site that does not use S2Member but does use a credits based plugin, so when customers purchased credits, the IPN sends them back to the site and their credits are updated in their members area. Well this has also stopped working! i.e. their credits are not being automatically added

Could it be an issue that Paypal are experiencing? or is anybody else experiencing this?



I just made a payment trial via PayPal on one of my sites using s2Member forms, and there was no problem after payment …
Are you sure you have not changed anything? (plugin or theme updates, server and/or CDN configuration, etc …)

I’ve had the problem that users cannot register because some paypal servers are not reachable also very sporadically - but so far this has always been 1-2 hours max.

I would advise you to enable the advanced logging in s2member and then go trough the logs to look for errors - also maybe copy in the IPN message paypal tried to send (look if it arrived or not! this is visible in the paypal IPN log) to here so maybe someone finds a clue.

As there are several people affected - but not all I would guess paypal is just again changing some things - and s2member cannot cope with it (the problem is that s2member is not up to date with current paypal standards plus some things never correctly implemented in first place) so it’s bound to break at some point.

I can also see no problems for me so far - but that really does not mean you configured something wrong. It could be paypal actually having an error - or s2member not being up to date too.

Here are my logs from S2member, can anybody spot anything a miss? Ive hid some of the sensitive information. Also, my Paypal IPN log shows sent with no errors.

LOG ENTRY: Sun Nov 4th, 2018 @ precisely 6:34 pm UTC
PHP v5.6.36-1+wpengine16 :: WordPress v4.9.8 :: s2Member v170722 :: s2Member Pro v170722
Memory 56.37 MB :: Real Memory 57.00 MB :: Peak Memory 56.66 MB :: Real Peak Memory 57.00 MB
User-Agent: PayPal IPN ( )
[mc_gross] => 1.00
[invoice] => 5bdf3b4f2fe68~
[protection_eligibility] => Ineligible
[payer_id] => PH7JGJ4GSXHAC
[payment_date] => 10:33:20 Nov 04, 2018 PST
[payment_status] => Completed
[charset] => windows-1252
[first_name] => Jason
[option_selection1] =>
[option_selection2] =>
[mc_fee] => 0.22
[notify_version] => 3.9
[subscr_id] => I-121VE04UHA5T
[custom] =>
[payer_status] => verified
[business] => *******************
[verify_sign] => AgySlHkWP0q7rG7plsgGQpmu2Pb7AAx07yfraAcFdK-StJJwqonnSXBt
[payer_email] => *******************
[option_name1] => Originating Domain
[option_name2] => Customer IP Address
[contact_phone] => *********************
[txn_id] => 95T855181M6706416
[payment_type] => instant
[payer_business_name] => JLC Marketing
[last_name] => Chesters
[receiver_email] => *****************
[payment_fee] =>
[receiver_id] => QNTQGTJD3EX88
[txn_type] => subscr_payment
[item_name] => TPS Ratings £1 for 5 day trial then £35 per month
[mc_currency] => GBP
[item_number] => 1
[residence_country] => GB
[transaction_subject] => TPS Ratings £1 for 5 day trial then £35 per month
[payment_gross] =>
[ipn_track_id] => 7d3e4b8dd94b1
[option_selection] =>
[option_name] => Originating Domain
[s2member_log] => Array
[0] => IPN received on: Sun Nov 4, 2018 6:34:30 pm UTC
[1] => s2Member POST vars verified through a POST back to PayPal.
[2] => s2Member originating domain ($_SERVER["HTTP_HOST"]) validated.
[3] => s2Member txn_type identified as ( subscr_payment|recurring_payment ).
[4] => Sleeping for 15 seconds. Waiting for a possible ( subscr_signup|subscr_modify|recurring_payment_profile_created ).
[5] => Awake. It’s Sun Nov 4, 2018 6:34:45 pm UTC. s2Member txn_type identified as ( subscr_payment|recurring_payment ).
[6] => Skipping this IPN response, for now. The Subscr. ID is not associated with a registered Member.
[7] => Re-generating. This IPN will go into a Transient Queue; and be re-processed during registration.

[subscr_gateway] => paypal
[subscr_baid] => I-121VE04UHA5T
[subscr_cid] => I-121VE04UHA5T
[ccaps] => 
[level] => 1
[ip] =>
[currency] => GBP
[currency_symbol] => £


Also, the welcome email which contains the registration link is sent immediately after payment as it should do

Same problem so same answer here: Click Here!
Sorry not to know how to do better.

well there’s your problem - it is received but you seem to be using an extension button for a new member. This has nothing to do with https://

Well seen Felix :slight_smile:

Thanks Felix

But I presumed that meant that the subscriber ID was not associated with a current member/account because they were a new member!! therefore they would have to register an account!

Anyway, how do I fix this? Ive not changed anything and I have tried creating a new button via the S2member Paypal button generator

Please let me know, I don’t know what an ‘extension’ button is what you are referring too

Many thanks

Does this only occur when the same person signs up multiple times?

Here is another log from today from a new subscriber, and it is different…

[0] => IPN received on: Mon Nov 5, 2018 11:28:32 am UTC
[1] => s2Member POST vars verified through a POST back to PayPal.
[2] => s2Member originating domain ($_SERVER["HTTP_HOST"]) validated.
[3] => s2Member txn_type identified as ( web_accept|subscr_signup ).
[4] => s2Member txn_type identified as ( web_accept|subscr_signup ) w/o update vars.
[5] => Signup Confirmation Email sent to: "*******************************************
[6] => Storing Signup Tracking Codes into a Transient Queue. These will be processed on-site.
[7] => Storing IPN signup vars into a Transient Queue. These will be processed on registration.

Does this mean it has worked correctly on this occasion?


yes second is correct. And really in case of such problems always enable the log (or enable it in general - as paypal sometimes likes to change things and then you can solve them quicker. Just make 100% sure those log files are not reachable via your web server to the outside.

I do not know your paypal buttons or proform - but sadly with s2member you have to use different buttons for logged in (existing) members and for new members. It’s not possible to have existing members checkout on normal button - else they cannot register using the same email.

Without knowing the button code it’s hard to tell. So if you are 100% sure this is not an extension button - then also post paypal IPN message (you can get it from paypal IPN log) - plus the button code. Only then you have all the info to fully debug it. It does not likely look like s2memer/paypal bug but much more like your error - but 1% it is a new paypal bug.

If you have not manually created an account for the user - resend the IPN via paypal and look what happens - the paypal IPN servers are not that good on uptime - I guess only like 99.75% from what I can deduct of them failing - that’s pretty horrible for an IPN where you would expect something like 99.999%. uptime. I guess each country hosts their own Paypal IPN server - so maybe Austria is worse than elsewhere - who knows?

Seems I’m still having inconsistencies, the latest person to sign up received this after payment…

ERROR: Unable to verify $_POST vars.
Please contact Support for assistance.

This is most likely related to an invalid configuration of s2Member, or a problem with server compatibility. If you are the site owner, and you’re absolutely SURE that your configuration is valid, you may want to run some tests on your server, just to be sure $_POST variables are populated, and that your server is able to connect/communicate with your Payment Gateway over an HTTPS connection.

s2Member uses the WP_Http class for remote connections; which will try to use cURL first, and then fall back on the FOPEN method when cURL is not available. On a Windows server, you may have to disable your cURL extension; and instead, set allow_url_fopen = yes in your php.ini file. The cURL extension (usually) does NOT support SSL connections on a Windows server.

Please see this thread for details regarding the ideal server configuration for s2Member.


[0] => IPN received on: Fri Nov 9, 2018 1:20:23 pm UTC
[1] => s2Member POST vars verified with a Proxy Key
[2] => s2Member originating domain ($_SERVER["HTTP_HOST"]) validated.
[3] => s2Member txn_type identified as ( subscr_payment|recurring_payment ).
[4] => Updated Payment Times for this Member.
[5] => Payment Notification URLs have been processed.

Any ideas?

This problem only concerns Windows based servers with SSL protected website, is this your case?
If yes, “disable your cURL extension and instead, set allow_url_fopen = yes in your php.ini file” like describe in your error message!
If no, this is maybe a server or s2Member configuration problem… Do you have try to disable all your other plugins, security configurations and cache modules?