Why has my WooCommerce payment gateway stopped working?

Has your WooCommerce payment gateway stopped working? Learn the common causes, why orders stay pending, which checks are safe and when to ask for support.

Open a support ticket

A payment gateway is the connection between your WooCommerce shop and the company that processes your payments, such as Stripe, PayPal or your bank. When it stops working, customers may not be able to pay, or they may pay without your shop knowing about it.

You may notice that:

  • a payment method has disappeared from the checkout
  • customers see an error when they try to pay
  • every payment is declined, including valid cards
  • orders stay in "Pending payment" even though the customer says they paid
  • payments appear in your provider dashboard but not in WooCommerce
  • you received an email from your payment provider about your account

This is a problem worth handling promptly, because it affects sales and can leave customers unsure whether they have been charged. However, a gateway problem does not usually mean that money has been lost. In most cases the payment information is still available with your provider, and the cause can be found by checking a few specific points.

This guide explains what usually goes wrong, what you can check safely, how to deal with pending orders and when it is better to ask for technical support.

How does a payment gateway work in WooCommerce?

Most gateways are added to WooCommerce with a plugin, usually provided by the payment company or a third-party developer.

A typical payment involves several steps:

  1. The customer chooses a payment method at checkout.
  2. WooCommerce creates the order with the status "Pending payment".
  3. The customer pays, on your site or on the provider's page.
  4. The provider sends a confirmation back to your website, often through a webhook or a similar notification.
  5. WooCommerce updates the order, for example to "Processing", and sends the confirmation email.

A problem at any of these steps can stop payments from working. The most confusing cases are failures at step 4: the customer has paid, but your shop never receives the confirmation.

What may have caused the problem?

Expired or changed API keys and credentials

The gateway plugin uses keys, tokens or other credentials to talk to your provider. If they expire, are regenerated in the provider dashboard, or are replaced by a colleague, the plugin can no longer connect.

This often happens after someone rotates keys for security reasons, moves the account to a new user or reconnects the plugin.

Test mode left on

Many gateways have a test or sandbox mode for trying payments without real money. If it was left on after testing, or switched on by mistake, real cards may be refused, or orders may appear to be paid when no real payment was taken.

Webhooks failing

Webhooks are messages the provider sends to your website when something happens, such as a successful payment or a refund. If they cannot reach your site, payments may succeed with the provider while orders in WooCommerce stay pending.

Webhooks can fail because the address configured with the provider is wrong, the domain changed, the site was offline, or a security or cache rule blocks the request.

SSL certificate problems

Payment providers expect a secure connection. If your SSL certificate has expired, is misconfigured or does not cover the domain used for notifications, the checkout may show warnings and the provider may be unable to deliver webhooks.

A gateway plugin update

An update to the gateway plugin, WooCommerce or WordPress can change how the gateway works, require new settings, or introduce a conflict with another plugin or with the checkout type in use. Some gateways also need to be reconnected after a major update.

Currency and country restrictions

A payment method may be hidden or refused if it does not support the store currency, the customer's country or the order amount. Changing the store currency, adding new countries or using a currency switcher can make a method disappear without any error.

The account is limited by the payment provider

Providers can restrict an account, for example while they review documents, verify the business or check unusual activity. In that case the problem is not on your website at all. Look for emails or notices in the provider dashboard.

Other problems on the website

Sometimes the gateway is fine but the checkout itself is broken, for example because of a JavaScript error, a cache or a plugin conflict. Our guide on WooCommerce checkout problems covers those causes.

What do orders stuck in "Pending payment" mean?

An order with the status "Pending payment" has been created, but WooCommerce has not received a confirmation of payment.

This can mean:

  • the customer started the payment but did not complete it
  • the payment failed
  • the customer paid, but the confirmation did not reach your site

The first case is normal: some customers abandon their purchase. A sudden increase in pending orders, or customers telling you they have paid, suggests the third case.

WooCommerce may automatically cancel unpaid pending orders after a time set in the stock settings, so pending orders may later appear as canceled.

Before marking any pending order as paid, check the payment in your provider dashboard. Never ship an order based only on the customer saying it was paid.

First, try to understand what changed

Think about what happened before payments stopped:

  • Was the gateway plugin, WooCommerce or WordPress updated?
  • Did someone change the API keys or reconnect the account?
  • Was test mode enabled at some point?
  • Was the domain changed or the site migrated?
  • Was the SSL certificate renewed or changed?
  • Was a security plugin, firewall or cache configured differently?
  • Did you change the store currency or the countries you sell to?
  • Did your payment provider send you any email?

Also check when the last successful payment was recorded in WooCommerce and compare it with the last payment in your provider dashboard. If they differ, the confirmation step is probably failing.

What can you safely check?

Check the payment provider dashboard

Log in to your provider dashboard and check:

  • whether recent payments appear and with what status
  • any notices about your account, verification or limits
  • whether the account is in live mode or test mode
  • the webhook or notification settings, if available

Most providers show whether recent webhook deliveries succeeded or failed. The exact location depends on the provider.

Check the gateway settings in WooCommerce

Go to WooCommerce > Settings > Payments and open the settings of the affected gateway. Check that:

  • the payment method is enabled
  • test or sandbox mode is off on the live shop
  • the account is connected or the credentials are filled in

Do not paste new keys unless you are sure they are the correct live keys for this shop.

Review the pending orders

Go to WooCommerce > Orders and filter by "Pending payment". Look at the dates. If pending orders started to pile up from a certain day, that is a useful clue.

Test a payment

If possible, place a real low-value order with the live gateway and check the result in both WooCommerce and the provider dashboard. Refund it afterwards.

Contact your payment provider

If you see account notices, declined payments without a clear reason or failing webhooks, contact your provider's support. They can see details about your account and their side of the connection that are not visible from your website.

What should you avoid doing?

Avoid:

  • regenerating API keys without knowing where else they are used
  • switching on test mode on a live shop during opening hours
  • marking pending orders as paid without checking the provider dashboard
  • deleting and reinstalling the gateway plugin without a backup
  • disabling the firewall or security plugin permanently
  • installing a second gateway plugin for the same provider alongside the first
  • sharing API keys or account credentials by email or in public forums

Change one thing at a time and test after each change.

When should you ask for technical support?

Technical support is recommended when:

  • customers are being charged but orders stay pending
  • all payments fail and the provider says the account is fine
  • webhooks fail and you cannot see why
  • the problem started after an update or migration
  • you sell subscriptions or recurring payments
  • the shop uses custom code around the checkout or payments
  • you are not comfortable changing gateway settings on a live shop
  • the problem keeps coming back

You do not need to know the cause before asking for help. A description of what customers see and what your provider dashboard shows is a good starting point.

What information should you collect?

Useful details include:

  • the website URL
  • the payment provider and the name of the gateway plugin
  • the date and time of the last successful payment
  • screenshots of any error shown to customers
  • the number of orders stuck in "Pending payment"
  • any notices or emails from the payment provider
  • whether webhook deliveries are failing, if you can see it
  • any recent updates, migrations or setting changes
  • the WooCommerce system status report

Do not send API keys, passwords or full card details by email. D4Hub can explain how to share access safely.

How D4Hub can help

The goal is to restore payments and make sure every paid order is recorded correctly.

Depending on the problem, D4Hub can help with:

  • checking the gateway configuration and connection
  • reviewing WooCommerce and gateway logs
  • checking webhook settings and delivery failures
  • finding security, firewall or cache rules that block payment notifications
  • solving SSL and domain issues that affect payments
  • identifying conflicts caused by plugin, WooCommerce or WordPress updates
  • reconciling pending orders with payments in your provider dashboard
  • checking currency, country and checkout compatibility settings
  • testing the full payment flow after the fix
  • recommending monitoring so you notice payment problems sooner

You can ask for support at any stage of the process.

For example, D4Hub can:

  • confirm whether a change you want to make is safe
  • take over the investigation after an unsuccessful attempt
  • complete the full diagnosis and repair
  • review the payment flow after a temporary fix
Open a support ticket

For hands-on users: technical checks for a payment gateway

The following checks are for users who are comfortable with the WordPress dashboard, server logs and their payment provider dashboard.

Before changing any setting on a live shop, make a recent backup that includes the database. Change one thing at a time and test with a payment after each change. Never paste API keys or secrets into logs, tickets or public places.

Read the gateway logs in WooCommerce

Go to WooCommerce > Status > Logs.

Depending on your WooCommerce version, you will see a list of log files or a list of entries that can be filtered by source. Look for the source named after your gateway plugin, and for fatal-errors.

Focus on entries recorded at the time of a failed payment. Useful clues include authentication errors, rejected requests, timeouts or messages about invalid or missing credentials.

Many gateway plugins only write detailed logs when a logging or debug option is enabled in their settings, under WooCommerce > Settings > Payments. Turn it off again when you are done, as logs can contain customer data.

Check webhook delivery with the provider

In your payment provider dashboard, find the section for webhooks, notifications or callbacks. The name varies by provider.

Check:

  • that the webhook address uses your current domain and https://
  • that it matches the address the gateway plugin expects, often shown in the plugin settings
  • whether recent deliveries succeeded or failed
  • the response code your website returned for failed deliveries

A 403 often means a firewall or security rule blocked the request. A 404 suggests the address is wrong, for example after a domain change. A 5xx code points to an error on your server. A timeout may mean the site is slow or unreachable.

Many providers let you resend a failed notification after fixing the cause.

Make sure payment endpoints are not blocked or cached

Gateways receive notifications at specific addresses on your website. Some use the WooCommerce API endpoint, which looks like /?wc-api= followed by a name, others use addresses under /wp-json/. The plugin documentation or settings usually show the exact address.

Check that these addresses are not:

  • blocked by a security plugin, a hosting firewall or a CDN firewall rule
  • challenged by a bot protection or CAPTCHA screen
  • cached by a caching plugin, the hosting cache or a CDN
  • redirected, for example from http to https or between www and non-www, in a way that loses the request

Firewall and CDN logs often show blocked requests with the provider's servers as the source. If you add an exception, make it as narrow as possible, for the specific address only, rather than disabling protection for the whole site.

Check the SSL certificate

From a terminal, replacing example.com with your domain:

echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

The notAfter line shows the expiry date. Also open the site in a browser and check that there are no certificate warnings on the checkout page.

Check the gateway plugin version

With WP-CLI:

wp plugin list --status=active

Note the version of the gateway plugin and of WooCommerce. If the problem started after an update, check the plugin changelog for changes that require new settings or a reconnection.

Review pending orders

Go to WooCommerce > Orders and filter by "Pending payment". For each recent pending order, search for the order number or the customer's email in your provider dashboard.

If the payment succeeded with the provider, the order needs to be reconciled. Some gateways update the order automatically when a failed webhook is resent. Otherwise, update the order manually only after confirming the payment, and add an order note explaining what you checked.

The time after which WooCommerce cancels unpaid orders is set by the "Hold stock (minutes)" option in WooCommerce > Settings > Products > Inventory. Keep this in mind when reviewing orders that look canceled.

D4Hub can help you read the logs and webhook results and decide on the next safe step.

FAQFrequently asked questions

It can happen if a customer retries after an apparent failure. Check your provider dashboard for duplicate payments from the same customer and refund any duplicates from there. Contacting affected customers promptly helps avoid confusion.

It may have been disabled, it may not support the current currency, country or order amount, or the plugin may not be compatible with your checkout type. Check the gateway settings first, then the logs.

Then the problem is probably on your website or between the two: credentials, webhooks, SSL, a security rule or a plugin conflict. The WooCommerce logs and the webhook delivery results are the best places to start.

It can work as a temporary measure, but a new gateway needs its own account, verification and testing. It also does not solve the reconciliation of orders already stuck in pending. Treat it as a short-term option, not a fix.

Only after you have confirmed the payment in your provider dashboard. Add a note to the order explaining how you verified it.

Yes. Explain what you changed and what happened after each change. This helps reconstruct what happened and find the next safe step.