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
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.
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.
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.
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.
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.
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?
How much do recurring payments cost in transaction fees?
What happens if a recurring payment fails?
Can I use multiple payment gateways simultaneously?
Do I need to handle PCI compliance for recurring payments?
Related Glossary Terms
More Guides
How to Add Subscriptions to WooCommerce
6 steps · Enable recurring subscription products on your WooCommerce store in under 10 minutes.
How to Handle Failed Payments in WooCommerce
6 steps · Configure automatic retry logic and customer notifications to recover failed subscription payments.
How to Automate Subscription Renewals in WooCommerce
6 steps · Set up fully automated subscription renewal billing with WPSubscription so revenue runs on autopilot.