A customer messages you a bank confirmation screenshot, but WooCommerce still shows the order as pending. It's tempting to just mark it paid and move on — but that fixes the symptom, not the disagreement between what the bank says happened and what your website recorded. First verify the transaction in your payment provider's merchant dashboard, then match it to the order and find out why the confirmation never reached WooCommerce.
There are two separate questions here: did the payment succeed, and did the website record that result correctly? Keeping them separate is what stops you from taking a duplicate payment or fulfilling an order that was never actually paid. This guide is for Kuwait store owners using a WooCommerce payment integration — exact settings depend on your bank or provider, installed plugin and version.
What does "Pending payment" actually mean?
WooCommerce's pending status means the store is still awaiting payment. If the provider has independently confirmed success, the two records disagree and need investigation — pending status alone can't tell you what happened at the bank or gateway. Source: WooCommerce order troubleshooting.
For physical products, a paid order normally moves to Processing, while Completed usually means fulfillment is finished. Don't use Completed just to clear a payment problem. Source: WooCommerce order statuses.
Step 1: Verify the transaction before changing anything
Open the order and your provider's merchant dashboard side by side. Compare the order reference, transaction reference, amount, currency and time, and confirm you're looking at the live account rather than a test account. A customer may have tried more than once, so check the specific transaction tied to that order.
| What you find | Next action |
|---|---|
| Provider confirms payment; WooCommerce is pending | Investigate the confirmation and order-update process. |
| Provider cannot confirm payment | Ask the provider to trace the transaction reference. |
| References or amounts don't match | Resolve the mismatch before altering the order. |
| More than one successful transaction appears | Reconcile each transaction and assess any refund through the provider. |
A bank notification is useful evidence to investigate — it's not a substitute for confirming the merchant-side transaction status.
Step 2: Read the order notes and gateway logs
In WordPress, open WooCommerce → Orders, select the affected order and review its notes for a transaction reference, a failure message, or a recorded change around the time of payment. Then check WooCommerce → Status → Logs — gateway logging varies by extension, so you may need to enable its logging setting before reproducing the issue. Source: WooCommerce payment troubleshooting.
Record the exact time and error rather than changing several settings at once, and keep API keys and customer details out of any screenshots you share.
Step 3: Check how the gateway confirms payment
A customer reaching a thank-you page and the gateway notifying your server are different events. Depending on the integration, confirmation may involve a return callback, a webhook, or a payment-status query.
MyFatoorah, for example, documents a webhook option for its WooCommerce integration that helps recover order updates missed because of a connection loss or delayed callback — a provider-specific feature, not a universal KNET setting. Source: MyFatoorah WooCommerce documentation. Ask your developer to compare the plugin's current setup against that provider's instructions — the registered endpoint, live credentials and any signing secret the integration requires.
MyFatoorah requires HTTPS for its webhook endpoint and documents signature validation to verify the source of events. Don't remove that validation just to make a failing request appear successful. Source: MyFatoorah webhook documentation.
Step 4: Look for a blocked or failing request
A security rule, a server error, or an endpoint that changed during a website move are all possible causes worth investigating — not proof of what happened on your site. If delivery records are available, compare their timestamp with your hosting or security logs; a blocked request and a request that reaches the site but crashes need different fixes.
Have your developer make a narrow correction to the affected route. Turning off protection across the whole website creates unnecessary exposure and can hide the actual problem.
Step 5: Review caching and recent changes
WooCommerce advises excluding cart and checkout pages from page caching, since they contain customer-specific content — check those exclusions if checkout behaves inconsistently. Source: WooCommerce page troubleshooting. Don't assume the checkout-page exclusion also covers every gateway notification route; follow the payment plugin's own requirements there.
Write down recent changes — a gateway update, a checkout redesign, a domain move, a security setting, or custom code. If the problem started right after one of these, that's a useful starting point for the developer, and it's worth testing compatibility changes on a separate copy of the site where possible.
Step 6: Reconcile the affected order carefully
Once the provider confirms a matching successful payment, follow its supported order-recovery process — it may offer a status refresh or another way to bring the records back into agreement. If manual reconciliation is necessary, document the verified transaction reference in the order notes and check stock, emails and fulfillment tasks. Changing a WooCommerce status doesn't itself collect or refund money — fixing the order and repairing the underlying integration are separate tasks, and both need to be done before calling the issue resolved.
What to send your developer or provider
Prepare the order number, payment reference, time of the attempt, amount, provider name, plugin version and any relevant error message. Note whether one order or several are affected, and whether it happens in both Arabic and English checkout. Never send a customer's card PIN or one-time password — a support team shouldn't need either to trace a merchant transaction.
Frequently asked questions
Should I tell the customer to pay again?
Not until you establish the first attempt's final status. If the customer reports a debit, investigate it with the provider before requesting another payment.
Can I fix the problem by changing Pending to Completed?
That changes the store's record, not the payment system. Verify payment first, then use the appropriate reconciliation and fulfillment process.
Is KNET always responsible when this happens?
No. The issue may involve the payment plugin, server, provider or website configuration — diagnose the records before assigning the cause.
What should I test after the repair?
Use the provider's supported test environment to check successful, failed and interrupted payment journeys, and confirm the resulting order state and customer messages before treating the issue as resolved.
Related reading
Orders stuck in pending after a KNET payment?
Tell me your provider name and plugin version, and I'll help trace where the confirmation is actually breaking.