Skip to content
  • Quick Ref
  • Contact
  • About
wpcanyon.com

wpcanyon.com

WooCommerce Stripe: pending payments stuck — causes & fixes

Posted on August 19, 2025August 19, 2025 By Admin No Comments on WooCommerce Stripe: pending payments stuck — causes & fixes

WooCommerce Stripe: Pending Payments Stuck — Causes & Fixes

If you are using WooCommerce with the Stripe payment gateway, you might encounter an issue where payments remain stuck in a “pending” status indefinitely. This problem prevents orders from completing and can disrupt your store’s sales flow. The quick fix usually involves ensuring that Stripe webhooks are correctly configured and that WooCommerce’s scheduled tasks (cron jobs) are running properly.

Quick Fix: Set Up Stripe Webhooks and Verify WooCommerce Cron

  1. Log in to your Stripe Dashboard.
  2. Navigate to Developers > Webhooks.
  3. Create a new webhook endpoint with your WooCommerce webhook URL:
    https://yourdomain.com/?wc-api=wc_stripe
  4. Select the following events to listen for:
    • payment_intent.succeeded
    • payment_intent.payment_failed
    • charge.refunded
    • charge.failed
    • checkout.session.completed
  5. Save the webhook and copy the signing secret.
  6. Go to WooCommerce > Settings > Payments > Stripe and paste the webhook secret.
  7. Ensure your WordPress cron is running by installing a plugin like WP Crontrol or setting up a real cron job on your server.
  8. Manually trigger WooCommerce scheduled tasks or wait for the next cron run to update payment statuses.

Why This Happens

WooCommerce Stripe payments rely on Stripe’s webhook notifications to update order statuses automatically. When a customer completes payment, Stripe sends an event to your site’s webhook URL. WooCommerce listens for these events and updates the order status accordingly.

If webhooks are missing, misconfigured, or blocked, WooCommerce never receives payment confirmation. As a result, payments stay in a “pending” state. Additionally, if WordPress cron jobs are disabled or not running, scheduled tasks that check payment statuses and update orders won’t execute, causing delays or stuck statuses.

Step-by-Step: Fix WooCommerce Stripe Pending Payments

  1. Verify your webhook URL in Stripe:
    https://yourdomain.com/?wc-api=wc_stripe

    This URL must be publicly accessible and use HTTPS.

  2. Create or update the webhook in Stripe:
    • Log in to Stripe Dashboard > Developers > Webhooks
    • Click Add endpoint
    • Enter the URL above
    • Select these events:
      payment_intent.succeeded
      payment_intent.payment_failed
      charge.refunded
      charge.failed
      checkout.session.completed
    • Save and copy the webhook secret key
  3. Add the webhook secret to WooCommerce:
    1. Go to WordPress Admin > WooCommerce > Settings > Payments > Stripe
    2. Find the Webhook secret field
    3. Paste the copied webhook secret
    4. Save changes
  4. Ensure WordPress cron is running:
    • Install the WP Crontrol plugin
    • Go to Tools > Cron Events and check for WooCommerce scheduled tasks like woocommerce_scheduled_subscription_payment or woocommerce_cancel_unpaid_orders
    • If cron is disabled, enable it by editing wp-config.php and removing or setting define('DISABLE_WP_CRON', false);
    • Alternatively, set up a real server cron job to call wp-cron.php every 5-10 minutes:
    * * * * * wget -q -O - https://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
  5. Manually trigger webhook events or wait for cron:
    • In Stripe Dashboard, you can resend webhook events to test
    • Wait for WordPress cron to run and update order statuses
    • Check WooCommerce orders to confirm payment status updates

Checking Logs for Troubleshooting

Logs help identify webhook delivery issues or errors in payment processing.

  • Stripe Logs: In Stripe Dashboard, go to Developers > Logs to see webhook delivery status and errors.
  • WooCommerce Logs: Go to WooCommerce > Status > Logs, select the Stripe log file (e.g., stripe-YYYY-MM-DD.log), and review recent entries.
  • Server Logs: Check your web server error logs for any 4xx or 5xx errors related to the webhook URL.

Works on

Environment Notes
Apache Ensure mod_rewrite is enabled and .htaccess rules allow webhook URL access.
Nginx Configure location blocks to allow access to ?wc-api=wc_stripe endpoint.
LiteSpeed Compatible with Apache .htaccess; verify rewrite rules.
cPanel / Plesk Supports cron jobs and SSL setup needed for webhooks.
Managed WordPress Hosting Check with host if WP cron is disabled and request real cron setup.

FAQ

Q: How do I know if Stripe webhooks are working?
A: Check the Stripe Dashboard under Developers > Webhooks for recent delivery attempts and their status. Successful deliveries show a green checkmark.
WooCommerce How‑tos Tags:Payments, Stripe, WooCommerce

Post navigation

Previous Post: WooCommerce: Create tiered shipping by product category
Next Post: WooCommerce: Disable coupons on sale items only

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Top WordPress Themes for Blogs in 2025
  • WordPress Admin Panel Trick: Adding ID Field to the Posts Listing
  • Solution previous_posts_link and next_posts_link Not Working
  • Show Top Commentators in WordPress Without a Plugin
  • How to Style Admin Comments in WordPress

Recent Comments

    Archives

    • August 2025

    Categories

    • Admin & Blocks
    • Admin & UI
    • Automation
    • Automation & Plugins
    • Comments
    • Comparisons
    • Database & Revisions
    • Developer Snippets
    • Fixes & Errors
    • Media & Thumbnails
    • Queries & Pagination
    • Security
    • Speed & Security
    • Tips & Tricks
    • WooCommerce How‑tos
    • WordPress Snippets
    • WordPress Themes
    • Terms & Conditions
    • Affiliate Disclosure

    Copyright © 2025 wpcanyon.com.

    Powered by PressBook WordPress theme