PayPal Instant Payment Notification for WordPress

zipIf you want to receive notification for completed payments you need IPN or upgrade to the Pro version of the plugin. You will need a PayPal Business or Premier account.

To enable IPN in your PayPal account:

  1. Go to the plugin settings and select the IPN tab.
  2. Copy the Listener URL
  3. Log into your PayPal account
  4. Go to Profile > Profile and Settings > My Selling Preferences
  5. Look for an Instant Payment Notification option.
  6. Click on the update link (on the right).
  7. Click Choose IPN Settings
  8. Enter the Notification URL and make sure you have selected to receive IPN messages.
  9. Save the settings.

But IPN can be blocked or restricted by your server settings, theme or other plugins. The good news is you can simulate the notifications to check if all is working.

To carry out a simulation:

  1. Download, install and activate the plugin.
  2. Enable IPN on the IPN settings page.
  3. Enable the PayPal Sandbox on the plugin setup page
  4. Fill in and send your payment form (you do not need to make an actual payment)
  5. Go to the dashboard Payments History and copy the long number in the last column from the payment you have just made
  6. Go to the IPN simulation page:
  7. Login and enter the IPN listener URL
  8. Select ‘Express Checkout’ from the drop down
  9. Scroll to the bottom of the page and enter the long number you copied at step 5 into the ‘Custom’ field
  10. Click ‘Send IPN’. Scroll up the page and you should see an ‘IPN Verified’ message.
  11. Go back to your Payments Report and refresh, you should now see the payment completed message

That’s all there is to is. If the simulation worked you will now be getting payment confirmations on the Payment history report.

  1. Albert Constandache on 23 Nov 2019:

    I solved the problem, thank you sir, you are my hero!

    Reply to Albert Constandache

  2. Albert Constandache on 23 Nov 2019:

    I don’t know how to put a description in PayPal. This is the last thing I have to do on my website, so I have to fix it somehow. Can you help me? (maybe directly through mail). And thanks for your answers!

    Reply to Albert Constandache

  3. Albert Constandache on 23 Nov 2019:

    On paypal IPN history it says the response was sent. Also on sandbox I got 2 payments in one single transaction. I must tell PayPal about this issue? In IPN simulator it shows that the handshake was verified.

    Reply to Albert Constandache

    • Graham on 23 Nov 2019:

      I’m looking at the form on your site and there are all sort of configuration issues. You are connecting to the sandbox but trying to use in-context payments. This won’t work. When I do get to the PayPal page you don’t have a description.

  4. Albert Constandache on 23 Nov 2019:

    The payment record didn’t update, and I don’t know what to do 🙁

    Reply to Albert Constandache

    • Graham on 23 Nov 2019:

      That means IPN isn’t working

  5. Albert Constandache on 21 Nov 2019:

    I set up the IPN and works in sandbox and live mode. I am receiving the handshake, but the autoresponse mail does not get send. I tried at least 10 times in both modes, but no mail was ever send. I tried without IPN, the option “After submission to PayPal”, and the mail was sended instantaneously.

    Reply to Albert Constandache

    • Graham on 22 Nov 2019:

      Hi Albert,
      Does the payment record update with confirmation of payment?

  6. Ken Blanchard on 06 May 2019:

    “IPN was sent and the handshake was verified.”

    From the simulator (it was the paypal not the wordpress where the big number was).

    Seems like the connection is there, but the email never gets sent.

    Reply to Ken Blanchard

  7. Ken Blanchard on 06 May 2019:

    Maybe step 5 should be done on the paypal site not my wordpress site??

    Reply to Ken Blanchard

  8. Ken Blanchard on 06 May 2019:

    Step 5 – there is no long number, just the date ( no time either ) and the item reference ( which cant be made different than the title of it )

    Reply to Ken Blanchard

  9. Cindy on 17 Apr 2019:

    Thanks, Graham, for working on this and posting the update. I’ve just installed it and will keep a lookout for future orders.

    I really appreciate your work on this plugin – it is the perfect fit for our needs. Thank you again!

    Reply to Cindy

  10. Cindy on 28 Mar 2019:

    One more thing I notice when I am sandbox testing today – my test submission shows up twice in the payments table with two different payment codes

    Reply to Cindy

  11. Cindy on 28 Mar 2019:

    Graham, we’ve been live with your Quick Paypal Payments plug-in since early December, 2018. Initially. everything was working beautifully – thank you!

    About a month ago, an order was placed. The PayPal account holder received notification that payment was made, but my QPP Payments page did not show “Payment Complete”
    I did sandbox testing using PayPal’s ipnSumulator, and got positive results.
    Today there was another case where PayPal received payment, but I did not get any notification and it doesn’t show as Payment Complete in the database.
    Any ideas on what else I should look at? Thank you.

    Reply to Cindy

    • Graham on 31 Mar 2019:

      Hi Cindy,
      I’m busy trying to find a fix for this. I’ll let you know as soon as I’m done.

  12. Julie on 17 Feb 2019:

    I have added the form to our website but it is not live yet. I tested the form according to you IPN
    Simulation instructions. When I submit the form and go to the Payments page, there is 2 payments listed from the one submission. There are different “long numbers’ on each payment. The URL for the form is: Please advise.

    Reply to Julie

    • Graham on 17 Feb 2019:

      Hi Julie,
      The simulator is a bit iffy so doesn’t always perform as expected.

  13. Donal on 10 Sep 2018:

    Hi again, I wrote this morning that I thought the IPN wasn’t working. Well it is. My mistake. You can ignore that!

    Still the issue with spurious cancellation page showing instead of success from time to time.

    Thanks for this plugin. Nice and straightforward, no messing about.

    Reply to Donal

    • Graham on 12 Sep 2018:

      As you say, I think the problem is people exiting the PayPal page to early. Maybe you can change the content of the cancellation page to reflect the actions of the payee.

  14. Donal on 10 Sep 2018:

    Hi Graham, thanks for this plugin, second year using it and I added SSL this year to enable IPN. It works perfectly, or so I thought when I noticed that an incomplete purchase according to the plugin had actually been paid. I must check all incomplete entries on my site now to compare. Any idea why this would happen?

    A second issue that was just reported to me by a few people yesterday is that payment has gone through but they are being brought back to the cancel page. Payments page shows as completed and I have the payment on PayPal. I suspect they are hitting the back button on PayPal quickly after paying and not allowing correct redirection.

    Reply to Donal

  15. Brandon on 18 Jan 2018:

    Is there a way to get PayPal to return the fields “Your email address, First Name, Last Name, Address Line 1, Address Line 2, City, State, ZIP Code, Country, Phone Number, Payment”?
    Or do those have to be fields in the form to get that info into the Payments dashboard page?

    Reply to Brandon

    • Graham on 19 Jan 2018:

      It’s a bit of both. The form passes the info to PayPal but if the details are different to those in the PayPal database they will be ignored. There is a setting that forces PayPal to use the form data but it’s sort of irrelevant if people already have an account. The address is only used when you create an account.

      As to sending the details back to the plugin – it is returned as part of the IPN dataset but I don’t use the information. It would take quite a lot of code to extract, format and import to the payment records. And I’m not even sure you would be able to hold this data legally as there is a difference between storage of user entered data and data gathered from other sources.

  16. Chris on 08 Dec 2016:


    I am struggling getting IPN to work under sandbox mode, firstly when I submit a payment, I get two lines in the payments panel, both with different ‘payment’ codes. If i try to use the IPN simulator with either of these codes, paypal reports “IPN was sent and the handshake was verified.” however neither update as complete.

    Reply to Chris

    • Graham on 08 Dec 2016:

      The Sandbox IPN isn’t very good. Sometimes I have to wait for hours for PayPal’s development servers to start working properly and report back completed payments. Which is why most of the time I just don’t bother. I make payments of $0.01 on a live form to test things and it works every time.

    • Chris on 12 Dec 2016:

      Cool, As I said everything else looks ok (The handshake is successful etc) so im sure it will work ok. Unfortunately I dont have access to the PP account so have passed on instructions to set it up and will test as you did.

      Many thanks for a great plugin! 🙂

  17. TheDude on 06 Sep 2016:

    The page for the IPN that I set up doesn’t respond to PayPal. In fact, it returns a 404 error, so the handshake is never sent. PayPal keeps sending a message with the following subject: “PayPal Instant Payment Notification Warning”. It then says “IPN requests… to the URL(s) are failing.” I tried to use the default listener URL as well, and it, too, did not work. However, using the sandbox accounts I set up in the developer profile DOES work, and so do live transactions.

    Reply to TheDude

    • Graham on 06 Sep 2016:

      I’m a bit confused. You don’t need an IPN page all you need is the listener URL. This need to be a php function that processes the IPN information. Not even sure how you are seeing a 404 error as IPN all happens server site not client side. Can you send me a link to your listener URL?

    • TheDude on 12 Sep 2016:

      Yes, well, I set up the listener URL according to the instructions, which is what I’m referring to by “page for the IPN”.

      Also used Neither works.

    • Graham on 12 Sep 2016:

      Have you enabled IPN and set up the listener URL in your paypal account? Have you enabled the autoresponder to send notifications after payment? If you have done both IPN should work and you will see the ‘Paid’ message in the payment report and get an email once payment is complete.

      Note, the listener URL isn’t a page you can visit, it’s something that only exists server side.

    • TheDude on 12 Sep 2016:

      I can confirm that I have set everything up per your inquiry. In fact, the emails coming from PayPal itself is showing the listener URL. The emails simply say this:

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

      As previously stated, everything IS showing up as paid. The problem is PayPal keeps sending these messages saying there is something wrong with the IPN. I assume it is because they send the info to the URL but, because the listener only listens and does not confirm receipt in any way (according to PayPal, at least), it assumes the system is not receiving the messages at all.

    • Graham on 12 Sep 2016: will never work. PayPal is looking for a function that allows it to process the IPN information. This function is called qpp_ipn. So change the listener URL in your PayPal account to and everything should work.

  18. matt on 01 Sep 2016:

    Paypal says it only accepts https// and it won’t work with http:// How do I over come this?

    Thank you!

    Reply to matt

    • Graham on 02 Sep 2016:

      Not quite sure where you are using the http://. Can you give me a bit more information

    • Matt on 02 Sep 2016:

      The plugin offers the following for me to insert into paypal for the IPN responder.

      When I enter it into paypal as https:// same, Paypal says it sent it but the plugin never receives it. When I enter it in paypal just as Http: it times out.

    • Graham on 02 Sep 2016:

      https will only work if your site is https. IPN only happens after payment and you won’t even know it’s happening (because it’s all server side not client side). You are timing out because the site is password protected. If PayPal can’t access the IPN function then it will fail.

  19. StefLBM on 28 Apr 2016:

    Yes, I can do that, gimme a mail to create this please

    Reply to StefLBM

  20. StefLBM on 28 Apr 2016:

    Thank you for your great job ! It’s what I need…
    So, the plugon seems to work great, but I got some issue with IPN :

    When I try your method, at step 4, i ahve no ‘long number in the last column’ : How can I see this number appear ?
    The IPN simulator at the Paypal developpers site telles me “ipn was not send and the handshake was not verified”
    is another plugin in conflict ? Had I to search a solution with my provider (O2Switch) or with Cloudflare ?

    Thank you

    Reply to StefLBM

    • Graham on 28 Apr 2016:

      Have you got sandbox enabled? Have you made a test payment? If you have done both click on the ‘Payments’ link in the dashboard to see the long number.

    • StefLBM on 28 Apr 2016:

      With sandbox enabled, the page redirects me to Paypal sandbox. Then I pay , and … nothing
      So I switch to “live”, made a payment, I can see it in my paypal account, but nothing “verified” on the payments link in WP dashboard (The payment appears with the columns : “date, label, amount, mail”, that’s all

    • Graham on 28 Apr 2016:

      Have you enabled IPN? Sorry if this is teaching you to suck eggs but this triggers the ‘Payment’ column on the payment report. The Sandbox option shows the long number in this column.

      PS: I’ve added a line to the instructions so it’s clear you need to enable IPN and the Sandbox

    • StefLBM on 28 Apr 2016:

      Yes, IPN is activated both on sandbox and live
      URL de notification
      Envoi du message Activé

    • Graham on 28 Apr 2016:

      In which case I don’t know what to suggest. I’ve just enabled IPN on the plugin IPN page and can see the ‘Payments’ column. Enabling sandbox means I now see the long number. Could you give me a temporary login to your site so I can see what’s happening?

    • StefLBM on 29 Apr 2016:

      Uninstalling your plugin, then deactivate all other plugins, reinstall yours, and reactivate other plugins : works !
      Now, in Paypal IPN details, got a 403 error. I think this is not your plugin that fails, right ?

    • StefLBM on 29 Apr 2016:

      Finally, thers’s a conflict with WP-Spamshield Which consider payapl as a SpamBot.
      I deactivate WP Spamshield, and enjoy.
      Thanks Graham for your great plugin, i will make a donation soon,

    • Graham on 29 Apr 2016:

      Glad you got it all sorted. The whole IPN this is incredibly complicated, it took me ages to get it all to work properly.

Web Analytics