Below is what I got from my web hosting support and it worked for me. Read all of it and you will find the fix is in the paypal.php file, near the top: change ‘testing-mode’ to ‘live-mode’. For some reason this is not being changed through your settings in the admin screen.
After you make this change it may take a couple of days for all of your unsent IPN messages to be sent. You can check their status by logging into PayPal, select “History” from the menu, select “IPN History” from the drop-down. View the list of messages and their status. Some will have a status of “retrying”. Those that have been successful will have a status of “sent”.
“Regarding the 404 error specifically, this seems to be by design, as the following bit of code shows:
# Check for IPN post if non then return 404 error.
if (!$_POST[‘txn_type’]){
if( $email_IPN_results ) send_mail($send_mail_to,$sysname.” [ERROR – 404]”,”IPN Fail: 404 error!”,””,__LINE__);
header(“Status: 404 Not Found”);
die();
}else{
header(“Status: 200 OK”);
}
—-
Now that we know Paypal is encountering the same 404 error that I encounter when I attempt to visit https://www.whateveryourdomainis.com/wp-content/plugins/donate-plus/paypal.php via a command line, I suspect the issue is isolated to the settings within the paypal.php file not being setup properly to coincide with what Paypal is sending, or vice versa. It may be entirely isolated to the “$verifymode = $dplus[‘testing_mode’];” setting within this file, needing to be set to “live_mode”.”