This post will discuss how to debug IPN issues that may come up between Paid Memberships Pro and PayPal.

IPN stands for “Instant Payment Notification” and it is used by PayPal Express, PayPal Standard, and PayPal Website Payments Pro to send information about PayPal orders and subscriptions to your website. (Payflow Pro does NOT use IPN. If you are using Payflow, make sure you are also using the Payflow Pro recurring orders addon.)

If PayPal is not able to send IPN messages to your site or those messages are not being processed well, you could run into one or more of the following issues:

  • Recurring subscription orders NOT showing up in the PMPro orders list.
  • Emails about failed payments NOT being sent to your members.
  • Cancellations at PayPal NOT canceling memberships in WordPress/PMPro.
  • PayPal Standard checkouts NOT updating a user’s membership after payment clears in PayPal.

First Make Sure That IPN Is Turned On

The IPN service is on by default, but it might have been turned off for some reason. Our article here has instructions for logging into PayPal to make sure that the IPN service is “turned on”.

General Troubleshooting

These two steps are useful when troubleshooting IPN issues and can be used when working on any of the solutions below.

1. By adding the line below to your wp-config.php, you will tell PMPro to email the WP admin user whenever the IPN URL is loaded.

define('PMPRO_IPN_DEBUG', true);

If you have this set and DO NOT receive any emails about the IPN handler, (you might have email issues on your site or…) your IPN URL is probably not being loaded by PayPal. You can test this by navigating to the IPN URL directly. Point your browser to /wp-admin/admin-ajax.php?action=ipnhandler on your site. You should see something like the following, which will also be sent to the admin email address:

Logged On: 06/28/2015 20:41:43 Array ( ) FP! VERIFIED ERROR: receiver_email (N/A) and business email (N/A) did not match ( -------------

Important: Don’t be alarmed by the error here. This is normal since you are not PayPal.

You can also change the IPN log email to go to other emails addresses by specifying them in the constant. e.g.

define('PMPRO_IPN_DEBUG', ',');

2. PayPal saves a history of IPN messages and information about if the message went through or if there were any errors in the “PayPal IPN History”.

You can find instructions for locating the IPN History here.

Common Issues

These are some common issues that we’ve seen people run into and how to go about fixing it.

1. Your IPN URL is being cached by your WordPress install or your host.

If you visit your IPN URL twice in a row, you should see a different timestamp at the beginning. If not, your IPN URL may be cached, which would keep some messages from getting to your site from PayPal.

To fix this, make sure to exclude your IPN URL from any caching plugins running on your site or caching systems installed on your host.

2. Your host is blocking PayPal from accessing the URL.

If you get a normal response when accessing your IPN URL (a timestamp and error message) but see error codes in your PayPal IPN History, it’s possible that your host is blocking PayPal from accessing the IPN URL.

Usually an email like the following will clear this up with your host:

Dear host,
I believe that PayPal may be blocked from accessing the IPN URL on my site. The URL is _____. Can you please make sure that posted messages from PayPal will reach this URL?

3. You have imported subscriptions from an old non-PMPro membership plugin or switched domains while using Paid Memberships Pro.

Imported subscriptions will still be hitting the old IPN URL from when the subscription was setup. If you switched domains while using Paid Memberships Pro, you may still need to foward messages to the old domain to your new domain.

Here are a couple scripts to forward IPN requests from other membership systems to the PMPro IPN URL format. These scripts may need to be installed on the same site as your PMPro site or on an older site if you switched domains.

s2member (related blog post here)


Similar scripts can be created for other services or domain switches. Just post to our member forums and we’ll help you out.

4. Your business email address is different in your PayPal and PMPro settings.

There are various reasons this could be. You’ll notice an error like “receiver_email (N/A) and business email (N/A) did not match (email)” in your IPN log emails. Sometimes you can simply update the Gateway Account Email setting in the PMPro payment settings. Sometimes you’ll need to use code like this to allow the PMPro IPN handler to process requests from different email addresses.

Note the receiver_email or business_email values from your IPN logs and use them to tweak this script. Add it to your active theme’s functions.php or a custom plugin:

5. Something else.

If you are having IPN issues with PMPro and this document doesn’t help you to figure things out, please post to our member forums and we will help you out. We’ll also update this post over time as new information comes out.

I am using the pmpro-shipping plugin and currently testing using PayPal Express Sandbox/Testing gateway and keep getting the message upon return to site:

“This transaction cannot be processed. The country code in the shipping address must match the buyer’s country of residence.”

Can’t seem to figure out why this would be the case. The PayPal sandbox accounts I’m using all have US as the country and I’m using US as the country when checking out on the site and enter in the shipping address.

Also, I’ve enabled debug and am not getting any emails for these test transactions. However, PayPal is able to connect to my site using the IPN Simulator on PayPal and I do get the IPN email logs for these. Really not sure what I’m doing wrong at this point. Have made sure IPN is enabled and the proper IPN URL.

Hello, thank you for the information you gave here. It sounds like this was a general issue with PayPal subscriptions and that the issue could have been resolved on PayPal’ side. Please reach out to if you need any further clarification or guidance.

I’m having problem at member checkout using paypal standard. When I apply for membership using paypal standard, I can successfully checkout but if look at my backend in order it shows status as “review” & does not create a pmpro member. Also if I check notifications at paypal, it shows paid with transaction id but its not displayed at backend in order details.

If a user cancels a payment on the paypal port, their membership level on my site will not change. They cancel from paypal, not from our website.I don’t set IPN in my PayPal account settings.

I am having problems with PayPal Express and IPN settings and feedback.

As soon as users complete payment they receive a 503 error when returning to the site. The payment is completed correctly and the recurring subscription is shown on PayPal.

I have enabled IPN using the guide So messages disabled, notifications enabled.

The next time someone checked out I received a PayPal message:

PayPal Instant Payment Notification Disabled

Please check your server that handles PayPal Instant Payment Notification (IPN) messages. Messages sent to the following URL(s) are not being received:


I had to set a URL in the IPN before I could press the Disable Messages button and proceed to switch IPN on.

This is pretty frustrating as I am now having to handle all memberships manually

Also to let you know that the response to the ipnhandler URL on my site gives the result:

Logged On: 01/14/2019 11:12:54


This is what you would expect when visiting the URL directly. One thing to check for is that the timestamp there changes every time you hit the IPN directly.

If you log into PayPal and find the IPN History, you will see what kind of response and error or success code PayPal gets when sending the actual IPN requests.

We would need more information to debug further. If you post to the member forums, we can get more information from you to have a look.

Something I would look into is any plugin that is related to new users, logging in, hooks into user_register, or does things for new users when they are registered. It could be that one of them is timing out, failing, or conflicting with what PMPro is trying to do.

We have spent countless hours trying to get PMPro to update payment and membership information from the PayPal IPN. This includes our web designer exchanging emails with PMPro tech support (with long gaps between responses) which has been little to no help. We even hired someone to write some code to get PMPro to work with some success, but it’s still not right. Very frustrating.

I sat alongside a client who was signing up for a membership today. Watched her do it. Seemed like everything went through. Even hit the Pay button at the end on Paypal, and did not get any error message. Took her back to our site and assumed it was paid. Got back to my computer and it showed her membership as [deleted] and status as “review”. What does that mean? Using Paypal Express and had this happen to other clients. How do I fix this before I lose more clients?

Leave a Reply

For faster support related to issues on your specific site please open a ticket in our members support area.

Your email address will not be published. Required fields are marked *