A customer adds products to the cart, enters their billing details, clicks Place Order and expects to complete the payment.
Instead, something goes wrong.
The payment option doesn’t appear. The checkout keeps loading. The customer is redirected back to checkout. The order remains pending. Or WooCommerce displays a vague message such as:
There was an error processing your order. Please check for any charges in your payment method and review your order history before placing the order again.
Payment problems are particularly serious because your WooCommerce store can appear completely functional while quietly losing sales at the final step.
The right approach isn’t to immediately reinstall WooCommerce or switch payment providers.
First determine where the payment process is failing.
How WooCommerce Payment Processing Works
Before troubleshooting, it helps to understand the basic flow.
A typical WooCommerce payment looks something like:
Customer → Checkout → WooCommerce → Payment Gateway → Payment Provider → Callback/Webhook → WooCommerce Order
A problem at any of these stages can produce what appears to be a “payment gateway problem.”
For example, the gateway itself may be working perfectly, but WooCommerce never receives the successful payment webhook.
Or checkout may fail before WooCommerce even sends a request to the payment provider.
That’s why we need to diagnose the complete flow.
1. Identify Exactly What Is Not Working
Don’t start by changing plugins.
First reproduce the issue.
Is the payment method missing?
The customer reaches checkout but cannot see Razorpay, Stripe, PayPal or another expected gateway.
Does clicking Place Order fail?
The gateway appears correctly, but checkout returns an error when the customer submits the order.
Does payment succeed but the order remain pending?
Money may have been captured, but WooCommerce doesn’t update the order.
Does the problem affect only some customers?
Check whether the issue depends on:
- Country
- Currency
- Shipping method
- Product
- Device
- Browser
- Logged-in status
- Order amount
- Payment method
This information can dramatically reduce the amount of troubleshooting required.
2. Check Whether the Payment Gateway Is Enabled
Go to:
WooCommerce → Settings → Payments
Confirm that the required payment method is enabled.
Then open the gateway’s settings.
Check its configuration carefully.
Depending on the gateway, this may include:
- API key
- API secret
- Merchant ID
- Account ID
- Webhook secret
- Test/live mode
- Supported currency
- Checkout options
A gateway can be installed correctly but still unavailable because its configuration is incomplete.
3. Check Test Mode vs Live Mode
This is one of the easiest configuration mistakes to make.
Many payment gateways have separate:
Test/Sandbox credentials
and:
Live/Production credentials
If your WooCommerce gateway is configured for live mode while using test credentials, transactions can fail.
The opposite can happen too.
Verify:
Gateway mode → Credentials → Payment provider account
All three should correspond to the same environment.
Never test a production payment flow assuming that sandbox credentials will behave identically.
4. Verify the API Credentials
Payment gateway plugins usually communicate with their provider using API credentials.
One incorrect character can prevent payment processing.
Instead of assuming the credentials are correct because they worked six months ago, verify them in the payment provider dashboard.
Also check whether:
- Credentials were regenerated
- API access was revoked
- Merchant account changed
- Plugin is using old credentials
- Test credentials are being used in production
Avoid sharing API secrets in screenshots, support tickets or public logs.
5. Check WooCommerce Status and Logs
WooCommerce provides useful diagnostic information under:
WooCommerce → Status
Review the environment information for obvious problems.
Depending on the gateway/plugin, logs may be available under:
WooCommerce → Status → Logs
Select the relevant payment gateway log if logging is enabled.
A log might reveal an error such as:
Authentication failed
or:
Invalid API key
or:
Unsupported currency
Now you aren’t troubleshooting “WooCommerce payment not working.”
You’re troubleshooting a specific gateway response.
6. Enable Gateway Logging Carefully
Many WooCommerce payment plugins include an option such as:
Enable Logging
or:
Debug Log
If available, temporarily enable it and reproduce the payment problem.
Then inspect the new log entries.
Do not leave excessive debug logging enabled indefinitely on a busy production store unless you have a reason to do so.
Also be careful about sharing logs because they can contain transaction or customer-related information.
7. Check the WooCommerce System Status
Your payment problem may actually be caused by the environment.
Review:
WooCommerce → Status
Look at areas such as:
- WordPress version
- WooCommerce version
- PHP version
- PHP memory limit
- Database version
- Active theme
- Template overrides
Also look for outdated WooCommerce template warnings.
An outdated checkout template can become especially relevant after WooCommerce or a gateway plugin update.
8. Check for Plugin Conflicts
Payment gateway plugins don’t operate in isolation.
Checkout can be affected by:
- Caching plugins
- Security plugins
- Checkout customization plugins
- Currency switchers
- Subscription plugins
- Optimization/minification plugins
- Custom WooCommerce code
- Other payment plugins
If the problem started after installing or updating another plugin, investigate that change first.
Test safely
On staging, deactivate suspected plugins and retest checkout.
If you’re unsure which plugin is responsible, use a systematic conflict-testing process instead of randomly disabling plugins on a live store.
This is also where our WordPress Plugin Conflict guide becomes a useful internal link.
9. Check the Theme for Checkout Conflicts
Sometimes the payment plugin is fine.
The theme is causing the problem.
This is particularly possible when the theme:
- Overrides WooCommerce templates
- Heavily customizes checkout
- Loads custom JavaScript
- Changes checkout fields
- Uses outdated WooCommerce templates
On a staging environment, temporarily test with a standard compatible theme.
If checkout suddenly works, investigate the theme or child-theme customization.
Don’t permanently switch the production site’s theme just to diagnose a checkout issue.
10. Check the Browser Console
Open checkout and then:
Developer Tools → Console
Look for JavaScript errors.
For example:
Uncaught TypeError...
or a failed gateway SDK request.
Payment gateways often depend heavily on JavaScript for:
- Hosted payment fields
- Card validation
- Payment popups
- Tokenization
- Checkout events
A JavaScript error from an unrelated plugin can sometimes prevent the payment gateway’s JavaScript from running correctly.
11. Check the Network Tab
Open:
Developer Tools → Network
Then attempt checkout again.
Look for failed:
- AJAX requests
- REST API requests
- Gateway requests
- Checkout requests
Responses such as:
400
403
404
500
can provide important clues.
Click the failed request and inspect its response.
You may find the actual server error hidden behind WooCommerce’s generic checkout message.
12. Check WooCommerce Checkout AJAX
WooCommerce checkout uses background requests for parts of the checkout process.
Security rules, caching or server configuration can interfere with these requests.
If an important checkout request returns 403 or 500, investigate the server/application response rather than assuming the customer’s card was declined.
Potential causes include:
- Security plugin rules
- Web application firewall
- Server ModSecurity rules
- PHP errors
- Plugin conflicts
- Custom checkout code
13. Exclude Cart and Checkout From Caching
Full-page caching can cause serious problems on dynamic WooCommerce pages.
Important pages such as:
- Cart
- Checkout
- My Account
should normally be handled appropriately by your WooCommerce-compatible caching configuration.
If checkout started failing after enabling a cache/CDN/optimization plugin, inspect its WooCommerce exclusions.
Don’t simply disable all caching permanently.
Configure it correctly for dynamic eCommerce behaviour.
14. Check JavaScript Optimization
Features such as:
- Combine JavaScript
- Delay JavaScript
- Defer JavaScript
- Remove unused JavaScript
- Script minification
can improve performance, but aggressive optimization can also break payment gateway scripts.
If a payment popup doesn’t open or checkout freezes after a performance change, temporarily disable the relevant JavaScript optimization on staging.
If that fixes the problem, exclude the required gateway/checkout scripts rather than abandoning optimization entirely.
15. Check SSL and HTTPS
A production eCommerce checkout should use HTTPS.
Verify that:
https://yourstore.com/checkout/
loads securely.
Look for:
- Invalid SSL certificate
- Mixed-content warnings
- HTTP API endpoints
- Incorrect WordPress URLs
- Redirect loops
Payment providers may reject insecure or incorrectly configured callbacks.
Browsers can also block insecure resources loaded inside a secure checkout.
16. Check WordPress and Site URLs
Go to:
Settings → General
Verify:
WordPress Address (URL)
Site Address (URL)
If your site should run over HTTPS, make sure the configuration reflects the actual production environment.
Incorrect URL configuration can affect redirects, callbacks and checkout behaviour.
Be careful when changing these values on an established site because incorrect URLs can make the site inaccessible.
17. Check the Store Currency
Some payment gateways only support particular currencies or merchant configurations.
For example, your store might be configured in one currency while the payment provider account doesn’t support processing it.
Check:
WooCommerce → Settings → General → Currency options
Then compare it with the gateway’s supported currencies and your merchant account.
If a gateway disappears only for a particular currency, this should be high on your troubleshooting list.
18. Check Country Restrictions
Payment methods can be restricted by:
- Billing country
- Shipping country
- Merchant location
- Gateway account
- Currency
- Payment plugin settings
If Indian customers see the payment method but international customers don’t, don’t immediately assume the plugin is broken.
Test the gateway’s availability rules.
19. Check Minimum and Maximum Order Amounts
Some gateways or custom payment rules only appear within specific order-value ranges.
Test:
₹100
₹1,000
₹10,000
or appropriate values for your store.
If the gateway disappears above or below a particular amount, inspect:
- Gateway limits
- Custom checkout rules
- Payment-method restrictions
- Currency conversion
- Merchant-account limits
20. Check Webhooks
This is particularly important when:
Customer successfully pays → WooCommerce order remains Pending Payment
The payment provider may need to notify WooCommerce that payment succeeded.
That often happens through a webhook/callback.
Conceptually:
Customer
↓
Payment Provider
↓
Payment Successful
↓
Webhook
↓
WooCommerce
↓
Order → Processing
If the webhook fails:
Payment Successful
↓
Webhook ❌
↓
WooCommerce never receives confirmation
↓
Order remains Pending
The customer may have actually paid.
That’s why you should never automatically tell them to pay again without checking the payment provider first.
21. Verify the Webhook URL
Open the gateway’s documentation/settings and verify the configured webhook endpoint.
Then check the payment provider dashboard for webhook delivery history.
Look for:
200
versus failures such as:
403
404
500
A 500 webhook response may mean WooCommerce received the request but PHP/plugin code failed while processing it.
A 404 may indicate the callback URL is wrong.
A 403 may point toward security or firewall blocking.
The exact response matters.
22. Check Whether Security Is Blocking Webhooks
Security tools sometimes block legitimate payment-provider requests.
Potential layers include:
- WordPress security plugin
- Cloudflare
- Hosting firewall
- ModSecurity
- Reverse proxy
- Custom server rules
Don’t disable your entire security setup permanently.
Confirm the exact blocked request and safely allow the required payment-provider endpoint according to the provider’s guidance.
23. Check WooCommerce Order Notes
Open the affected order:
WooCommerce → Orders → Order
Look at the order notes.
Payment gateway plugins often add useful events such as:
Payment pending
Payment failed
Payment completed
or provider-specific transaction information.
Order notes can help reconstruct what WooCommerce believes happened.
24. Payment Successful but WooCommerce Shows Pending
This deserves special attention.
Suppose:
Payment provider: Successful
Bank/customer: Charged
WooCommerce: Pending Payment
Do not immediately change the order status and assume everything is solved.
Investigate:
Step 1 — Confirm the transaction
Verify the transaction directly in the payment-provider dashboard.
Step 2 — Check transaction/order identifiers
Make sure the successful transaction corresponds to the correct WooCommerce order.
Step 3 — Check webhook history
Was a success event sent?
Step 4 — Check webhook response
Did your store return 200, or did it fail?
Step 5 — Check WooCommerce logs/order notes
Did the gateway receive/process the notification?
This prevents duplicate payments and incorrect manual order updates.
25. Check PHP Errors
A payment request may reach WooCommerce but fail because of a PHP exception.
Check:
- WordPress debug log where appropriately configured
- WooCommerce logs
- PHP error log
- Hosting logs
For controlled troubleshooting, WordPress debugging can be configured to log errors rather than display them publicly.
For example:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Don’t leave unnecessary production debugging enabled after troubleshooting.
26. Check PHP Version Compatibility
Your payment plugin may require a supported PHP version.
Problems can appear after:
- Hosting PHP upgrade
- Plugin update
- WooCommerce update
- WordPress update
Check the gateway plugin’s requirements and your server environment.
Also look for deprecated/fatal errors in the PHP logs.
27. Check WooCommerce and Gateway Plugin Versions
Running a very old payment plugin with a newer WooCommerce version can create compatibility problems.
Likewise, immediately updating everything directly on production can introduce new issues.
Use a controlled update process:
Backup → Staging → Update → Test checkout → Deploy
For payment systems, testing should include more than checking whether the homepage loads.
28. Check WooCommerce Database Updates
After some WooCommerce updates, database updates may need to complete.
Review WooCommerce status/admin notices.
Don’t ignore database update warnings indefinitely, particularly on a store that has been upgraded through many WooCommerce versions.
Back up the database before significant maintenance.
29. Check Custom Checkout Code
If your theme’s functions.php or a custom plugin modifies checkout, inspect it.
Common customizations include:
- Removing checkout fields
- Changing required fields
- Validating mobile numbers
- Adding GST fields
- Changing available payment gateways
- Applying fees
- Restricting payment methods
A small mistake in a filter such as gateway availability logic can completely hide a payment method.
For example, custom logic may intentionally disable a gateway based on order total but contain an incorrect condition.
30. Test With a Simple Product
Create or use a basic product without unusual configuration.
Test checkout without:
- Complex variations
- Subscription rules
- Custom product add-ons
- Special shipping logic
If payment works for a simple product but fails for another product type, you’ve learned something important.
The problem may not be the gateway globally.
A Real-World Example: Gateway Missing at Checkout
Suppose a store has:
- UPI/payment gateway enabled
- Correct API credentials
- Working checkout for most customers
But customers from one country can’t see the payment method.
Step 1 — Check gateway status
Enabled.
Step 2 — Check JavaScript
No error.
Step 3 — Check gateway restrictions
The gateway is configured only for the store’s supported domestic currency/location.
The gateway isn’t broken.
It is simply not available for that checkout context.
That distinction prevents unnecessary plugin changes.
A Real-World Example: Customer Paid but Order Is Pending
A customer reports that ₹2,500 was charged.
WooCommerce says:
Pending Payment
Step 1 — Check payment-provider dashboard
Transaction: Successful.
Step 2 — Check WooCommerce order notes
No successful payment notification recorded.
Step 3 — Check webhook history
Provider sent the webhook.
Response:
403 Forbidden
Step 4 — Check server security
A firewall rule blocked the webhook endpoint.
Now the real issue is clear:
The gateway processed the payment, but the server prevented WooCommerce from receiving the confirmation.
WooCommerce Payment Gateway Troubleshooting Checklist
When a WooCommerce payment gateway isn’t working, check:
- Gateway is enabled
- Test/live mode is correct
- API credentials are valid
- WooCommerce logs
- Gateway debug logs
- WooCommerce system status
- Plugin conflicts
- Theme conflicts
- Browser Console
- Network requests
- Checkout AJAX
- Cache exclusions
- JavaScript optimization
- HTTPS/SSL
- WordPress/site URLs
- Store currency
- Country restrictions
- Order-value restrictions
- Webhook configuration
- Webhook delivery logs
- Security/firewall blocking
- WooCommerce order notes
- PHP logs
- PHP compatibility
- Plugin/WooCommerce versions
- Database updates
- Custom checkout code
Change one thing at a time and retest.
Otherwise you may accidentally fix the issue without knowing what caused it — or introduce another problem.
How to Prevent WooCommerce Payment Problems
Use a Staging Website
Test payment-related plugin and theme updates before pushing them to production.
Keep Reliable Backups
Especially before WooCommerce, payment-plugin or database updates.
Monitor Failed Orders
A sudden increase in failed or pending orders can reveal checkout problems before customers start contacting you.
Monitor Webhooks
If your payment provider offers webhook logs, check failures when order statuses stop updating.
Don’t Over-Optimize Checkout
Performance matters, but aggressive caching or JavaScript optimization shouldn’t compromise the payment flow.
Test Checkout After Important Changes
Whenever you update:
- WooCommerce
- Theme
- Payment gateway
- Security plugin
- Cache plugin
- Checkout customization
run an actual checkout test.
A successful homepage load doesn’t prove that your store is working.
Final Thoughts
A WooCommerce payment gateway not working is more than a technical inconvenience.
It can directly cost your store sales.
But the gateway itself isn’t always the problem.
The failure could be happening at:
Checkout → JavaScript → WooCommerce → Gateway API → Payment Provider → Webhook → Order
Start by reproducing the exact problem.
Then use logs, browser DevTools, gateway transaction data and WooCommerce order notes to identify where the payment flow stops.
That gives you a much better chance of fixing the real cause without making unnecessary changes to a live eCommerce store.
Need WooCommerce Help?
Need Help With Your WooCommerce Checkout or Payment Gateway?
KDP Infusion can help diagnose and resolve WooCommerce checkout and payment issues, including gateway integrations, webhook problems, plugin conflicts and custom checkout requirements.
- Checkout and payment troubleshooting
- Custom WooCommerce development
- Shipping and pricing customization
- WooCommerce API integrations
- Store performance optimization
Frequently Asked Questions
The gateway may be disabled or unavailable because of currency, billing country, shipping method, order amount, product type or custom gateway restrictions. Plugin/theme conflicts can also affect gateway availability.
That generic message can represent several underlying problems, including gateway API failures, PHP errors, checkout validation, plugin conflicts or server issues. Check WooCommerce/gateway logs and browser/network responses for the actual error.
A common possibility is that WooCommerce didn't receive or successfully process the payment provider's webhook/callback. Confirm the transaction with the provider, then inspect webhook history, order notes and gateway logs.
Yes. Incorrect caching of dynamic checkout/cart/session behaviour can cause checkout problems. Configure your caching solution specifically for WooCommerce rather than caching every page identically.
Yes. Delaying, combining or modifying gateway scripts can interfere with checkout functionality. If the problem started after optimization changes, test those settings on staging and exclude necessary checkout/gateway scripts.
Compare evidence from both sides. Check WooCommerce order notes/logs and the payment-provider transaction/webhook logs. This helps identify where the payment flow stopped.
Not until you've confirmed whether the payment provider actually processed the transaction. A customer may already have been charged even though WooCommerce didn't receive the confirmation.
Use the gateway's official test/sandbox mode where available, preferably on staging. Verify successful payments, failed payments, redirects, webhook processing and WooCommerce order-status changes.