Random completed PayPal transactions are not being updated in CiviCRM and the contribution records are incorrectly left as "Pending." I have worked with PayPal to confirm that all IPN notifications are being successfully sent from their end. CiviCRM's logs do not show any errors; they simply do not show that they received any notification from PayPal.

To make matters more confusing, when I resend IPN notifications through PayPal, they are then correctly received by CiviCRM the second time around and the contribution record is updated.

Any ideas on how to rectify this situation? I cannot find any pattern as to which notifications go unreceived and which contributions are successfully updated. I am on WordPress 5.5.3 and CiviCRM 5.30.1.

2 Answers 2


As an update to this thread, the issue was identified as a bug in the PayPal integration (https://lab.civicrm.org/dev/core/-/issues/1931) and was resolved in an update pushed by CiviCRM Admin Utilities 0.8 released on 20 November 2020. Payments have been closing perfectly for us since applying the patch.


First check to see if they're unrecieved or received but not processed by looking for them in civicrm_system_log. If they're not there, you can review web server logs.

If they are there, you can replay them using the notificationlog extension. Check the ConfigAndLog directory to see the Civi log errors when you do that - as well as review the logs for when the IPN was originally received.

  • They are not received according to civicrm_system_log. They also do not show up on ConfigAndLog. The web server logs do show the IPN.
    – raaboyl
    Nov 17, 2020 at 15:20
  • Do the web server logs show a 200 HTTP status? Or a different status? Especially look out for 3xx statuses, which indicate a redirect. Only a 307 redirect will tell PayPal to resend a POST request. Nov 17, 2020 at 16:10
  • Web server logs show a 200 HTTP status for both received and unreceived IPNs. (PayPal confirms that IPN notification URLs return an HTTP response of 200 even when the message is not sent to listener expectations.)
    – raaboyl
    Nov 17, 2020 at 19:59
  • Any other ideas? It's getting to the point where I need to monitor Civi and PayPal daily and resend IPN notifications (which, again, go through correctly the second time), which really defeats the purpose of automation!
    – raaboyl
    Nov 22, 2020 at 17:30
  • Sure: You can try sending the IPNs by hand using curl to view the entire communication for hints.I'm not sure if you're using mod_php or a dedicated PHP interpreter (like php-fpm) but check the PHP logs for errors if the latter. You can enable debug-level logging on Apache to store the POST requests in logs. Either Apache isn't passing the data to PHP, and is giving the 200 on its own - not sure how that could happen intermittently tbh - or PHP is returning the 200 status, in which case the data is either going to Civi, or directed elsewhere. Nov 23, 2020 at 16:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.