WooCommerce Subscriptions uses PayPal’s IPN (Instant Payment Notification) system to keep data in sync with PayPal.
When PayPal processes a payment or other subscription event, like a cancellation, it sends an IPN to the site. Subscriptions processes this IPN and performs the appropriate actions concerning the related orders and subscriptions.
For example, when a recurring payment is due, payment occurs via PayPal and an IPN is sent confirming that the payment was processed. The site receives this message, creates an order to record the transaction and sets the status of the corresponding order and subscription to reflect the processed payment.
On occasion, errors occur when processing an IPN. The reasons for the errors vary. A couple of the most common reasons include IPN’s for orders that don’t exist in the store and third-party plugin or custom code conflicts.
IPN issues also appear with varied symptoms, from a renewal order not getting generated even though PayPal charged a customer to multiple renewal orders being created when PayPal only charged once or PayPal and Subscriptions disagreeing on how much the customer was / should have been charged.
This guide explained how to find information used to debug issues with WooCommerce Subscriptions the PayPal Standard’s IPN system.
When an error occurs while processing an IPN, WooCommerce Subscriptions will display a notice such as the following at the top of your store’s WordPress administration dashboard.
When this notice is displayed, it’s because the exact nature of the error cannot be automatically pinpointed. It will require further investigation by the support team to find the error and its causes. Additionally, to make sure it will not happen again, some form of intervention will likely be necessary to address the error.
When opening a ticket to report this error, there are a few pieces of information that will help the support team provide a smoother experience.
Please make sure to include a copy of the system status report. The system status report provides a snapshot of the site’s code and data, such as WooCommerce version and which plugins are installed. This type of information helps the support team to better understand the context of the error.
Finally, if some of the information below can be included, that can help to diagnose the error.
PayPal provides information about subscriptions via the Subscription Details Page.
This page will look something like the picture below – PayPal change their interface from time-to-time and display different interfaces for different countries and account types, your page may appear differently.
A screenshot of this screen for a problematic subscription on your site would be very helpful. You can match them up by the profile ID or the customer.
This page holds information about what PayPal knows about the subscription. If there are differences between these details and the ones WooCommerce and Subscriptions have then that’s a clue.
Found by clicking the View History link on the subscription page (near the top, under Subscription details). It looks similar to this:
When Subscriptions sends any data to PayPal, it will be recorded here. When it was created, when it was suspended or reactivated, when it was cancelled. If Subscriptions claims that it suspended the subscription, but PayPal did not register that change, that’s a clue.
PayPal keeps a record of IPN messages. These are also accessible via your PayPal account. These can be very valuable when diagnosing IPN errors. For example, if the was retried IPN, we’ll see that so we know the retries might cause multiple orders to be created, but something’s wrong because it had to retry.
To find the IPN history:
- Search by profile ID for the last payment transaction on this page (Activity > All transactions):
- View the transaction details and get the ID from there:
- Put the Transaction ID into the IPN History screen to search:
- Click on the message ID link, and grab that screenshot too:
These are all information we’ll need alongside the usual WooCommerce ticket requirements: System Status Report, FTP details, and sometimes database access details.