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
Get WooCommerce Help →