Migrating from WooCommerce Subscriptions? Migrate free
How-to Guide 6 steps

How to Integrate Stripe with WooCommerce Subscriptions

Connect Stripe to WPSubscription for reliable recurring billing, webhooks, and payment recovery.

Stripe is the most popular and feature-rich payment gateway for WooCommerce subscription billing. This guide walks through the complete Stripe integration with WPSubscription — from connecting API keys to configuring webhooks, enabling Smart Retries for failed payments, and setting up SCA-compliant 3D Secure authentication.

The entire integration takes 30-45 minutes for a careful setup and produces a subscription billing system that runs reliably at scale.

Why This Matters

Stripe offers the best combination of features for subscription businesses: Smart Retries (ML-optimized retry logic that recovers 10-20% more failed payments than basic retry), Card Updater (automatic refresh of expired cards without customer action), strong 3DS support for SCA compliance, and the most reliable webhook delivery in the industry. Stripe also has the best developer documentation, lowest decline rates from issuing banks, and broadest international coverage (40+ countries).

For most WooCommerce subscription stores, Stripe is the clear default choice — competitors like PayPal serve specific use cases but Stripe is the workhorse.

Before You Start

  • A Stripe account (create one free at stripe.com)
  • WPSubscription installed and activated
  • Admin access to both WordPress and your Stripe dashboard
  • Business verification completed in Stripe (required before going live)
  • SSL certificate active on your WordPress site (required for live mode)

Step-by-Step Instructions

1

Get your Stripe API keys

Log into your Stripe dashboard at dashboard.stripe.com. Go to Developers → API keys.

You will see two sets of keys: test mode (for development) and live mode (for production). Copy your Publishable key (starts with pk_) and Secret key (starts with sk_).

During initial setup, use test-mode keys (pk_test_ / sk_test_) — you will switch to live keys after verifying the integration works end-to-end. Keep your secret key private; treat it like a password.

2

Enter API keys in WooCommerce

In your WordPress admin, go to WooCommerce → Settings → Payments → Stripe. If Stripe is not listed, you may need to install the WooCommerce Stripe Payment Gateway extension first.

Paste your Publishable key into the "Publishable key" field and your Secret key into the "Secret key" field. Enable "Test mode" toggle for now.

Configure additional Stripe features as desired: Stripe Link for one-click checkout, Apple Pay, Google Pay. Save changes.

3

Configure Stripe webhooks

In your Stripe dashboard, go to Developers → Webhooks → Add endpoint. Set the endpoint URL to: https://yoursite.com/wc-api/wc_stripe (replace yoursite.com with your actual domain — must include https).

Under "Events to listen to," select at minimum: payment_intent.succeeded, payment_intent.payment_failed, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, invoice.payment_succeeded, invoice.payment_failed. Save and copy the Signing secret that Stripe generates (starts with whsec_).

4

Add webhook signing secret to WooCommerce

Paste the Stripe webhook Signing secret into WooCommerce → Settings → Payments → Stripe → Webhook secret field. This step is critical — without it, WooCommerce cannot verify that incoming webhook events are genuinely from Stripe, and renewals may not fire.

The signing secret is different for test mode and live mode webhooks — you will need to update this when switching to live mode. Save changes.

5

Enable Smart Retries and Card Updater

In your Stripe dashboard, go to Settings → Subscriptions and billing. Enable "Smart Retries" — Stripe's ML-powered retry logic that optimizes retry timing based on the specific decline reason and bank patterns.

Also enable "Card Updater" if available — automatically refreshes expired card details from the customer's bank without requiring customer action. Both features significantly reduce involuntary churn and are essentially free improvements.

6

Test and switch to live mode

Complete a test subscription using Stripe's test card 4242 4242 4242 4242 with any future expiry and any 3-digit CVC. Verify it appears in WooCommerce → Subscriptions and in Stripe under Customers.

Check the Stripe webhook dashboard for successful event deliveries (200 responses). Test a renewal using Stripe Test Clocks to advance time.

When confirmed, return to WooCommerce → Settings → Payments → Stripe, disable Test mode, replace test keys with live keys, update the webhook URL to use live mode signing secret, and run one final small real-money test.

Pro Tips

  • Enable Smart Retries immediately — Stripe's ML retry optimization recovers 10-20% more failed payments
  • Configure Stripe Tax to automatically calculate and remit sales tax/VAT on every renewal
  • Use Stripe Radar for fraud detection — ML-based risk scoring catches fraudulent subscriptions before they activate
  • Set up Stripe Sigma queries for custom subscription analytics beyond what the dashboard shows
  • Enable Stripe Customer Portal for self-service subscription management as a backup to WooCommerce My Account

Result

Stripe is fully integrated with WPSubscription, handling subscription creation, automatic recurring billing, payment failure detection and recovery via Smart Retries, SCA-compliant 3D Secure authentication, and seamless webhook-based event handling — all without manual intervention.

Troubleshooting

Problem:Webhook events show as "failed" in the Stripe dashboard

Solution:The most common cause is an incorrect endpoint URL or SSL certificate issue. Confirm the URL is exactly your-store.com/wc-api/wc_stripe (no trailing slash issues, must be https). Verify your site has a valid SSL certificate (not self-signed or expired). Also check that your site is not blocking webhook requests via a firewall, security plugin (Wordfence, Sucuri), or rate limiting.

Problem:Subscriptions show as active but renewal charges are not firing

Solution:Check WooCommerce → Status → Logs for Stripe-related entries. This often indicates missing or expired webhook signing secret. Re-copy the signing secret from Stripe → Developers → Webhooks → your endpoint → Signing secret and update the field in WooCommerce. Also verify that WordPress cron is functioning — go to WooCommerce → Status → Scheduled Actions.

Problem:Customers seeing 3D Secure authentication errors

Solution:This is normal for EU/UK customers due to PSD2/SCA requirements. WPSubscription with Stripe handles 3DS automatically — but the customer must complete bank-side authentication (SMS code, banking app push, biometric). If the customer cannot complete 3DS, contact their bank to verify the authentication method is set up correctly. Some banks require enrollment in 3DS before it can be used.

Problem:Stripe charging customers but no orders appearing in WooCommerce

Solution:This indicates webhook delivery failure — Stripe charged but did not notify WooCommerce. Check Stripe webhook logs for failed deliveries. Common causes: webhook endpoint URL mismatch, server downtime, security plugin blocking the request, or webhook signing secret mismatch. Replay failed webhooks from the Stripe dashboard to manually sync.

Frequently Asked Questions

Why Stripe over PayPal for WooCommerce subscriptions?
Stripe offers superior subscription features: Smart Retries recovers 10-20% more failed payments, Card Updater handles expired cards automatically, 3D Secure works seamlessly, and webhooks are more reliable than PayPal IPN. PayPal still has value as a secondary option for customers who prefer it, but Stripe should be your primary gateway.
What does Stripe cost for subscriptions?
Standard fee is 2.9% + $0.30 per successful charge in the US (3.4% + $0.30 for international cards). Stripe Billing (advanced subscription features) costs an additional 0.5-0.8% but is not required — WPSubscription provides subscription functionality on top of Stripe's standard payment processing. Volume discounts available for $80K+/month merchants.
How do I handle Stripe Tax with subscriptions?
Enable Stripe Tax in your Stripe dashboard — Settings → Tax. Stripe Tax automatically calculates the correct sales tax, VAT, or GST based on customer location and product type, applying it to every renewal automatically. The integration with WooCommerce subscriptions works seamlessly. Costs 0.5% per transaction in tax-supported regions.
What is Stripe Radar and should I enable it?
Radar is Stripe's fraud detection service, included free with all Stripe accounts. It uses ML trained on billions of transactions to score risk and block fraudulent payments before they process. For subscription businesses, Radar significantly reduces both fraud losses and chargebacks. Enable it — it's essentially free risk reduction.
Can I use Stripe in test mode while accepting real payments through PayPal?
Yes — each gateway operates independently. You can run Stripe in test mode for development while PayPal accepts live payments. Just remember to switch Stripe to live mode before launching subscriptions, and ensure customers don't see both options simultaneously if Stripe is still in test mode.

The #1 Subscription Plugin for WooCommerce

Start Selling Subscriptions at Zero Cost.

Download, install, and start collecting recurring revenue from all around the world with WPSubscription.