PayPal payments not marked as Complete

Easy Digital Downloads is designed to automatically mark payments as Complete once a purchase has been successfully verified through the payment processor.

If your PayPal payments are not being automatically marked as Complete, it usually means that one of several common issues is occurring.

In Easy Digital Downloads 2.8.13, a new feature was introduced that uses PayPal's Payment Data Transfer (PDT) system to immediately mark payments as complete without relying on the PayPal IPN. Please see our setup documentation for information on how to configure PDT using your PayPal Identity Token.

In order for a payment to be marked as complete, Easy Digital Downloads has to be able to communicate with the payment processor, such as PayPal, to verify the purchase. If this communication is blocked or tampered with in any way, it can result in the purchases not getting marked as complete, which will also result in download links and purchase receipt emails not getting delivered.

There are several common reasons payments remain as "Pending":

PayPal's Instant Payment Notifications (IPN) system is not enabled or configured properly in your PayPal account

You have a plugin installed that is blocking the IPN requests

Your website cannot make remote requests through cURL

You have rules in your .htaccess file that are blocking the IPN requests

Your site has too aggressive caching that results in improper update queries

If you are using 2Checkout, please see our setup guide for configuring the 2Checkout INS.

Configuring the PayPal IPN

For orders to work properly, IPN needs to be configured for PayPal Standard and PayPal Express gateways. Without it configured payments will not get set to Complete. Configuring IPN is slightly different for PayPal Standard and PayPal Express, see the guide for the version you are using:

CloudFlare

CloudFlare is a popular service that helps improve the performance and security of your website. Occasionally it can cause conflicts with the purchase verification process.

If you are experience problems with your payments not being marked as complete and you use CloudFlare on your website, try disabling CloudFlare temporarily to see if payments are properly marked as complete when it is disabled.

Remote requests fail: cURL Disabled

If your web host has cURL and / or other remote communication extensions disabled, it can cause trouble with Easy Digital Download's ability to communicate with PayPal.

You can confirm whether this is the potential cause by going to Downloads > System Info and looking for this section:

WP Remote Post: wp_remote_post() works

If it says that wp_remote_post() does not work, please contact your web host and ask them to enable cURL.

You can further confirm whether this is the problem by going to Downloads > Reports > Logs > Payment Errors and looking to see if there are any error messages recorded that look like this:

{"errors":{"http_failure":["There are no HTTP transports available which can complete the requested request."]},"error_data":[]}

That error means your site cannot communicate with PayPal, so payments cannot be verified.

Conflicting Plugins

If the PayPal IPN is fully functional, to the best of your knowledge, and the problem still persists, it is very likely that you have another plugin, such as Bad Behavior, installed that is blocking the PayPal IPN. These kind of anti-spam plugins typically block the PayPal communication. If you do have one of these plugins installed, try deactivating it, do a test purchase, and then see if your payment is marked as complete.

Plugins that have been known to cause issues:

All-In-One Security

Bad Behavior

Complete Cache

iThemes Security

Wordfence Security

W3 Total Cache

WP Super Cache

WP-SpamShield

If you have one of these plugins activated, try deactivating it and then performing a test purchase. If payments are marked as complete once the plugin is deactivated, you will know what the cause is.

Just because you have one of these plugins installed does not, however, mean that you are guaranteed to experience problems. All of these plugins can be configured successfully to work just fine along side Easy Digital Downloads. Usually the problem is a result of one or two particular configuration options within the plugin.

Server Blocking

Occasionally a server setting can block the IPN response. Here are some known issues,

Strato

Strato is a German host and has a guestbook security setting that interferes with PayPal. Here's how to turn that setting off:

Log in Strato Customer Service.

Choose hosting package change.

Select the Settings item.

Select Point Server Side Security.

Disable the item 'filter for guestbook spam'.

Cross Domain HTTP Requests

If you have a plugin that forces HTTP traffic to HTTPS and the IPN request comes in on HTTP it'll be rejected, since those are technically different domains. If you're finding your IPN requests being rejected, make sure you're running the same protocol on all requests.