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”
#3 Halfway down the page, click on “Update” next to “Instant payment notifications”
#4 You’ll now be presented with a page similar to this, press “Choose IPN Settings”
#5 Now enter the following details:
- Notification URL – This is simply http://your-magento-store.com/paypal/ipn/ replacing “your-magento-store.com” 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)”
#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 |
---|---|
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.
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…
Hi
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.
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 1.7.0.2 with “paypal standard” solution.
Thanks
Mátyás
Hi Mátyás,
I’m not sure I’m afraid you’ll need to speak with a Magento developer to nail this down as it will be specific to your site.
Hope that helps!
Matt
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.
Howdy Paul,
You can set PayPal to send email notifications as well, this is always advised as then you see when they stop then :)
Glad it helped!
Matt
Hi,
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.
Cheers,
Simon
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!
Matt