How do I troubleshoot Instant Payment Notification (IPN)?
Instant Payment Notification (IPN) is a server-side notification system used to update your database with purchase details and payment status.
Here are some ways to troubleshoot IPN activity:
Why does the IPN response include blank values?
Although PayPal returns related variables for each kind of IPN or PDT message, it doesn't return all variables for each transaction. Use of invalid parameters also produces a null value. Check that all parameters have correct values. For a complete listing of all valid variables supported with IPN/PDT, visit the PayPal Developer Portal and view the topic IPN and PDT variables.
Why is my IPN not working or in a retrying state?
Some possible causes of the 404 error/IPN failure are:
- Your PayPal button code refers to an IPN URL that doesn't exist. Check that the code refers to an active URL.
- You made a mistake typing in the IPN URL.
- Your htaccess is blocking direct access to the IPN URL. If htaccess does any redirecting (for example, from "domain.com" to "www.domain.com") and you use domain.com as your IPN domain, the redirection will cause all post data to be dropped. Your code then returns the 404 error, and PayPal places the IPN response into a retrying state. Eventually, access is disabled because the IPN listener response failed.
Why didn't I receive any IPN responses for a specific timeframe?
Although PayPal usually processes IPN messages immediately:
- IPN isn't synchronized with actions on your website.
- Internet connectivity isn't always 100 percent reliable.
- IPN messages can be lost or delayed.
The IPN service automatically resends messages until the listener acknowledges them. The service resends messages for up to four days. Because IPN isn't a real-time service, your checkout flow shouldn't wait for the IPN message to complete. If the checkout flow depends on receiving an IPN message, system load or other reasons can delay processing. Configure your checkout flow to handle a possible delay.
Why am I not receiving IPN notifications?
Review the IPN History for your account. Under History, click IPN History. This will give you the status of each IPN message PayPal generated. Messages must be marked as Sent for PayPal to mark them as having been delivered. Your listener must respond to every IPN message it gets, whether you act on it or not:
- If your IPN listener doesn't respond, PayPal assumes the IPN was never received and re-sends it. PayPal IPN will continue to re-send the message periodically until your listener responds, although the interval between retries increases with each attempt. An IPN will be re-sent for up to four days.
- If the IPNs are marked as Sent, this means PayPal delivered them to your IPN handler (the URL of which will be available too) and got an HTTP 200 OK response from your IPN handler.
- If PayPal doesn't receive an HTTP 200 response, for whatever reason (SSL handshake validation, network timeout, script error 500, server error 503, and so on), then PayPal will retry delivery of the IPN message up to an additional 15 times.
Why is the IPN parameter sometimes missing a value for receiver_email?
Even when you use the IPN parameter receiver_email, you may get a blank result if the buyer hasn't defined an email address or it isn't turned on in their account.
My IPN issue has been resolved, or I disabled IPN. Why am I still getting IPN warning emails?
A third-party shopping cart (such as Magento) will include an IPN within its own API call to PayPal. Use of IPNs within an API call overrides any PayPal account settings, including existing IPN configurations within the PayPal account. If your PayPal account's IPN settings are disabled and you're getting IPN Failure notifications, it's likely because the shopping cart's API call included an IPN. To do further troubleshooting, debug the shopping cart's API variables and variable values, or contact your shopping cart's technical support staff.
Still need help? Try this online troubleshooting tool, which can help you troubleshoot or learn more about IPN.