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

How to Set Up Recurring Payments in WooCommerce

Connect your payment gateway and configure automatic billing schedules for subscription products.

Recurring payments are the engine of subscription revenue — the mechanism that automatically charges customers at each billing cycle without requiring their direct involvement. This guide covers connecting your preferred payment gateway to WPSubscription and configuring billing schedules so charges happen automatically at each renewal date.

We will use Stripe as the primary example since it offers the best feature set for WooCommerce subscriptions, but the same general approach applies to PayPal, Paddle, Razorpay, and Mollie.

Why This Matters

Properly configured recurring payments are the difference between a subscription business that runs itself and one that requires constant manual intervention. Each successful automated renewal extends customer lifetime value with zero additional acquisition effort.

The compounding economics are powerful: a customer paying $50/month who renews 12 times generates $600 of revenue from a single acquisition — and the marginal cost of each renewal is essentially zero. Without recurring payment automation, you would need to manually invoice and chase every customer every month, which simply does not scale.

Before You Start

  • WPSubscription installed and activated
  • Admin access to your WordPress dashboard
  • An active account with Stripe, PayPal, Paddle, Razorpay, or Mollie
  • Access to your payment gateway dashboard for API keys and webhook configuration
  • A working email setup for renewal notifications (WP Mail SMTP recommended)

Step-by-Step Instructions

1

Navigate to payment gateway settings

In your WordPress admin, go to WooCommerce → Settings → Payments. You will see all available payment methods listed in a table.

WPSubscription adds recurring billing support to compatible gateways — look for Stripe, PayPal, Paddle, Razorpay, or Mollie in the list. If your preferred gateway is not visible, you may need to install its WooCommerce extension first.

Each gateway can be enabled independently and you can run multiple gateways simultaneously to offer customers payment method choice.

2

Enable and configure Stripe (recommended)

Click "Manage" next to Stripe in the payments list. Enter your Stripe publishable key and secret key — find these in your Stripe dashboard under Developers → API keys.

Enable "Test mode" initially so you can verify the integration before going live with real money. Save changes.

Stripe also supports additional features like Stripe Link (one-click checkout for returning customers), Apple Pay, and Google Pay — enable these for higher conversion rates if relevant to your customer base.

3

Set up webhooks for renewal events

Stripe uses webhooks to notify WooCommerce of subscription events (renewals, failures, cancellations). In your Stripe dashboard, go to Developers → Webhooks → Add endpoint.

Enter your store URL followed by /wc-api/wc_stripe as the endpoint URL — for example, https://yoursite.com/wc-api/wc_stripe. Select all subscription-related events at minimum: customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, invoice.payment_succeeded, invoice.payment_failed.

Copy the webhook signing secret that Stripe generates and paste it into the Stripe gateway settings in WooCommerce — without this, your store cannot verify that webhooks genuinely came from Stripe.

4

Set billing schedule on subscription products

Edit a subscription product. In the WPSubscription settings panel on the product edit page, set the billing interval (e.g., "Every 1 Month") and the number of billing cycles (leave blank for indefinite recurring, or set a specific count for fixed-term subscriptions like a 12-month course).

Optionally set a sign-up fee that charges once at initial purchase, or a free trial period of N days. Save the product.

The billing schedule defined here applies to every subscription created from this product going forward.

5

Test the complete recurring payment flow

Use Stripe's test card 4242 4242 4242 4242 with any future expiry and any 3-digit CVC to complete a test subscription checkout. Verify the subscription appears in WooCommerce → Subscriptions with "Active" status.

In your Stripe dashboard under Customers, confirm a subscription was created with the correct billing schedule. To test a renewal without waiting a month, use Stripe's Test Clock feature to advance the clock past the next billing date and confirm the renewal charge fires correctly.

6

Switch to live mode and verify

Once testing confirms everything works, switch from test mode to live mode in your WooCommerce → Settings → Payments → Stripe configuration. Replace test API keys (prefixed pk_test_ / sk_test_) with live keys (pk_live_ / sk_live_).

Disable "Test mode" toggle. Update your Stripe webhook endpoint to use the live mode signing secret (it differs from test mode).

Make one small real-money test purchase to confirm everything works end-to-end before announcing the subscription publicly.

Pro Tips

  • Enable Stripe Smart Retries — uses ML to optimize retry timing for declined payments, recovering 10-20% more
  • Enable Stripe Card Updater — automatically refreshes expired cards without customer action, reducing involuntary churn
  • Use Stripe Tax (or Avalara, TaxJar) for automatic tax calculation on every renewal across jurisdictions
  • Configure SCA-compliant 3DS for EU customers — required by PSD2 regulations and improves chargeback liability shift
  • Monitor webhook deliveries weekly in your gateway dashboard — silent webhook failures are the #1 source of subscription bugs

Result

Your WooCommerce store now processes recurring payments automatically through your chosen gateway, with WPSubscription managing the billing schedule, renewal orders, and failure recovery. Customers are charged on their renewal dates without manual intervention, and you have visibility into every transaction via your gateway dashboard and the WooCommerce subscriptions admin.

Troubleshooting

Problem:Renewals are not firing after the first billing cycle

Solution:The most common cause is a missing or misconfigured webhook. Check WooCommerce → Status → Logs for any webhook delivery errors. In Stripe, check Developers → Webhooks → your endpoint to see if events are being received and whether they show errors. Also verify WordPress cron is running — go to WooCommerce → Status → Scheduled Actions and look for pending renewal actions. Stuck or failed actions indicate cron problems.

Problem:Test charges succeed but live charges fail

Solution:You are likely still using test-mode API keys in your gateway settings. Switch from test keys (prefixed with pk_test_ and sk_test_) to live keys (pk_live_ and sk_live_) in WooCommerce → Settings → Payments → Stripe. Also disable the "Test mode" checkbox. The webhook signing secret is also different between test and live modes — update that too.

Problem:Customers seeing "Card requires authentication" errors at checkout

Solution:This is 3D Secure (3DSv2) authentication required by EU PSD2 regulations and similar laws. The customer must complete bank-side authentication — typically a push notification in their banking app or an SMS code. Ensure your gateway is configured to handle 3DS authentication redirects. WPSubscription with Stripe handles this automatically when properly configured.

Problem:Renewals create orders in WooCommerce but no charge appears in Stripe

Solution:This indicates a webhook or payment processing failure. Check the renewal order status in WooCommerce — if it shows "Pending payment," the charge attempt failed silently. Check WooCommerce → Status → Logs for Stripe errors. Common causes: expired API keys, missing webhook signing secret, or the gateway account being in a restricted state. Re-verify all gateway credentials.

Frequently Asked Questions

Which payment gateway should I use for WooCommerce recurring payments?
Stripe is the recommended choice for most WooCommerce stores due to the best feature set for subscriptions: Smart Retries (ML-optimized retry logic), Card Updater (automatic expired card refresh), strong webhook reliability, SCA-compliant 3DS, and wide international coverage. PayPal is a good secondary option, especially in markets where customers prefer it. Paddle, Razorpay, and Mollie serve specific regional needs.
How much do recurring payments cost in transaction fees?
Standard Stripe fees are 2.9% + $0.30 per successful charge in the US (higher for international cards). PayPal fees are similar. For high-volume merchants ($100K+/month), gateways offer negotiated rates. On a $29/month subscription, that's ~$1.15 in fees — about 4% of revenue per transaction.
What happens if a recurring payment fails?
WPSubscription marks the subscription as "past due" and automatically retries the payment on a configurable schedule (default: day 1, 3, 7). The customer receives notification emails with a link to update their payment method. If all retries fail after the grace period (typically 14-21 days), the subscription is cancelled. This recovery process typically saves 50-75% of payments that would otherwise be lost.
Can I use multiple payment gateways simultaneously?
Yes — WPSubscription supports running multiple gateways concurrently. Customers see all enabled options at checkout and choose their preference. This typically increases conversion by 5-15% over single-gateway stores by accommodating customer preferences. Each gateway operates independently with its own configuration and webhook setup.
Do I need to handle PCI compliance for recurring payments?
No — your customers' card details are stored by the gateway (Stripe, PayPal, etc.) as tokens, never on your server. This keeps you at the lowest PCI compliance level (SAQ-A). Your gateway handles the heavy compliance work; you just need to use their hosted payment forms or Elements integration, which WPSubscription does by default.

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.