How to Turn on PayPal IPN When Using Magento & PayPal

What I’ve been really surprised by over the past few weeks is the number of sites that don’t actually have this turned on and it’s just not limited to self-builds even the really expensive Magento builds are missing this out this as a step.

Turning on the PayPal Instant Payment Notification (IPN for short) is an excellent idea as means that when a customer pays for an item using PayPal then the payment information will be updated on the Magento order details in the administration panel.

It only takes a few moments to enable and I’ll show you how to enable IPN for your Magento site below. This will mean that when you receive an order via PayPal Express for example, you can actually see the transaction details in Magento and if you’re using eSellerPro and have the eSellerPro Connector enabled for sales order processing, your order & payment details will match up automatically.


How to Enable PayPal IPN

Setting this up won’t take more than a few moments and here are 6 simple steps to do this:

#1 Login to PayPal

#2 Hover on “Profile” and select “My Selling Preferences”

PayPal IPN for Magento Step 1

#3 Halfway down the page, click on “Update” next to “Instant payment notifications”

Paypal IPN for Magento Step 2

#4 You’ll now be presented with a  page similar to this, press “Choose IPN Settings”

Paypal IPN for Magento Step 3

#5 Now enter the following details:

  • Notification URL – This is simply replacing “” with your website address. <= This is the part that normally trips everyone up as they’re not sure what to enter here.
  • IPN messages – Set this to “Receive IPN messages (Enabled)”

PayPal IPN for Magento Step 4

#6 Press Save

That’s it job done.

To test whether IPN is working or not is dead simple, just make a test transaction through your website (you will need a secondary PayPal account for this) and a few minutes later, check on the order in your Magento admin panel has been updated with the PayPal transaction details.

To help you, I have put to images below, the image on the left has no IPN details, the image on the right does.

Paypal IPN Not Working Paypal IPN Has Worked
PayPal - Magento IPN Not Working PayPal - Magento IPN Has Worked

If you’re seeing the extra information similar to the right image, congratulations PayPal Instant Payment Notifications are working for you, yay!

Did your Magento Design Company go the extra Mile?

Anyone can make a pretty website, however, did your design company go the extra mile and suggest you set up Paypal IPN for your site? Or has this caught you out too? Let me know in the comments box below.

8 replies
  1. Doug McLean
    Doug McLean says:

    Hi Mátyás,

    This is probably due to the fact that Magento sends IPN instructions to PayPal with each transaction, overriding (or in some cases running alongside) the “global” settings in your PayPal profile.

    I’m not sure if there is a way to turn this off in the Admin Panel – you might have to hack the code (take a look in app/code/core/Mage/Paypal/Model/Ipn.php).

    Out of curiosity, why do you want IPN disabled anyway? It’s a very useful feature…

  2. Doug McLean
    Doug McLean says:


    Not sure which version of Magento this article applies to, but since at least version 1.7 the reverse seems to be the case.

    From what I’ve managed to cobble together from some shoddy documentation and patchy forum threads is that, *in addition* to the IPN setting you describe, a cart can send per-transaction IPN instructions. Magento’s PayPal module, for one, automatically does so.

    So, if IPN is enabled at the global level and at the per-transaction level, what most people claim is that the per-transaction instructions will override the global settings. Well, in my experience, duplicate notifications seem to be sent! Magento acepts the first one, but rejects the second one. PayPal then sends an email the merchant, saying “your IPN is broken, fix it or we might have to reassess the validity of your account”. Scary stuff.

    It also appears that selecting the “Do not receive IPN messages (Disabled)” radio button does not solve it. You have to go back a step, to where the “Choose IPN Settings” button was previously, and click the “Turn off IPN” button. At least, this is how I got it working on my site. The “Disabled” option appeared to disable both the global and the per-transaction IPN, while the “Turn off” option only turned off the global IPN, and allowed the per-transaction notifications to continue.

    I hope this is of some help to others.

  3. Mátyás Horváth
    Mátyás Horváth says:

    Hi Matt,

    ReceiveIPNMessage is set to disabled on my PayPal account page. processIpnRequest function in Mage_Paypal_Model_Ipn class doesn’t run. I’ve debugged and no debug message created.
    But Detailed IPN information is updated somehow.
    How could it be? Any Idea? Maybe something has been changed?
    Magento version is with “paypal standard” solution.


  4. Paul Feakins
    Paul Feakins says:

    I’m not sure if PayPal have changed something recently but I’ve had a few clients whose OpenCart sites were working fine to receive orders and then suddenly stopped a few weeks ago. Changing the settings as described above fixes the problem.

  5. Simon Denvers
    Simon Denvers says:


    Nice article. Does this assume you’re using Paypal Express? i.e. does it only work if you are running Paypal Express. I’m using Standard and this doesn’t appear to work.

    Then again, my Paypal orders come in as “Payment Pending” and I’ve never managed to fix it. I’ve been playing around with the settings in Paypal and Magento for the last half hour and still can’t get the orders to generate an invoice and go to “Processing”. Looking at the internet, there are lots of people who face this problem. How to fix that would be a great blog post…

    On the plus side I have at least configured a return URL from Paypal which makes the checkout process a bit more professional. So many things to do.


    • Matthew Ogborne
      Matthew Ogborne says:

      Howdy Simon,

      That doesn’t fix that problem, you’ll need to look at your logs in var/logs/ and track down the cause or bring in a developer that can assist you.

      +1 for the Return URL though!



Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

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