If you are experiencing many pending/ failed transactions in WooCommerce, it is most likely a scenario when the customer is shown a notice from the ePDQ system that payment was made. However, if they have closed their browser or move to another website during that time, it would cause the payments to fail.
Normally when a customer waits, they are redirected back to the website along with the payment data from ePDQ.
Basically, we need the data from ePDQ (if it comes with the customer or not) to complete the order, store some of the data to use for refunds, etc.
You might have followed the steps mentioned in this article to enable Direct HTTP server-to-server request to fix it.
However, there are a few complications with enabling this feature if your hosting provider blocks it. You might need to ask your hosting provider to unblock it, as seen in this article.
Even with those steps, it might take a bit of back and forth (between you, our support team, and your hosting provider) to have it done. We have seen repeated issues related to Direct HTTP server-to-server requests, and our new ePDQ order status check feature should fix this going forward.
How does your new feature work?
Our plugin tracks when the order has cancelled, and we get an order note as seen below which is found from the right-hand side of the current WooCommerce order that you are viewing:
“Unpaid order cancelled – time limit reached. Order status changed from Pending payment to Cancelled.”
Previously, what happens is the website will auto cancel the order after a set time limit which can be set from your WooCommerce > Settings > Products > Inventory > Hold stock(minutes).
Note: We recommend setting it anywhere between 30 – 60 minutes.
When we track that, we ping the ePDQ system with the website order number and ask them for the order’s status.
Basically, rather than relying on the ePDQ to ping the website with data, we will do it on our end (should the hosting company have issues or something else is blocking the request).
In other words, when the transaction cancels after this set time, our plugin will make a request to the ePDQ platform to check the status of the transaction. If the order has been paid for, it will change the status back to processing, and you will get order notes as seen below:
You’ll also have the option to manually make an order status check on an order before the time limit is reached.
What can I do to enable this feature?
The feature would run by default, and you would only need to make sure that you updated our plugin to its latest version.