Stripe Live Mode Setup
This tutorial walks you through setting up Stripe in live mode to accept real payments from customers.
Estimated time: 15 minutes
- Complete Stripe Test Mode Setup first
- Test your entire checkout flow thoroughly in test mode
- Verify webhooks are working (green checkmarks in Stripe)
- Only proceed when everything works correctly in test mode
Prerequisites
- PaywallWP Pro installed and activated
- SSL certificate (HTTPS) — required for live payments
- Stripe account with completed business verification
- Test mode setup working correctly
Step 1: Complete Stripe Account Verification
Before accepting live payments, Stripe requires business verification.
1.1 Check Verification Status
- Log in to Stripe Dashboard: https://dashboard.stripe.com
- Look for any orange banners or alerts about completing setup
- Click Settings (gear icon) in top right
- Go to Business settings → Public details
- Complete all sections marked as required
1.2 Required Information
Stripe typically requires:
| Category | Information Needed |
|---|---|
| Business details | Legal business name, address, tax ID (EIN/VAT) |
| Bank account | Account for receiving payouts |
| Identity verification | Personal ID for business owner(s) |
| Website info | Your website URL, description, support contact |
1.3 Verification Timeline
- Simple cases: Approved within minutes
- Additional review: 1-3 business days
- Complex cases: Up to 1-2 weeks
Go to Settings → Account details to see verification status. You'll see checkmarks for completed sections.
Stripe will not process live payments until verification is complete. Plan ahead!
Step 2: Get Live API Keys
2.1 Switch to Live Mode
- In Stripe Dashboard, find the Test mode toggle (top right)
- Click to turn it OFF
- Dashboard should now show "Live" without the orange "TEST DATA" badge
- The background color changes from orange-tinted to normal
2.2 Copy Live API Keys
-
Click Developers in left sidebar
-
Click API keys
Direct URL: https://dashboard.stripe.com/apikeys
-
Copy your live keys:
Key Type Format Notes Publishable key pk_live_...Safe for frontend Secret key sk_live_...Click "Reveal live key"
Live keys process real money. Handle with extreme care:
- Never share your live secret key
- Never commit to Git or version control
- Never expose in client-side JavaScript
- Never send via email or chat
- Store securely (password manager, environment variables)
Step 3: Create Live Products & Prices
Test mode products do NOT exist in live mode. You must create new products in live mode.
3.1 Create Product in Live Mode
-
Ensure Test mode toggle is OFF (you're in live mode)
-
Go to More + → Product catalog
Direct URL: https://dashboard.stripe.com/products
-
Click + Add product
-
Enter product details:
Field Value Name Your plan name (e.g., "Premium Membership") Description Clear description of what's included Image Product image (optional but recommended) -
Add recurring price:
- Select Recurring
- Enter your actual price (real money!)
- Select billing period (Monthly, Yearly, etc.)
- Choose currency
-
Click Add product
3.2 Add Additional Prices (if needed)
If you offer both monthly and yearly:
- Open the product you just created
- Click + Add another price
- Configure the additional price (e.g., yearly)
- Click Add price
3.3 Verify Price IDs
Note your live Price IDs for reference:
| Plan | Live Price ID |
|---|---|
| Monthly | price_live_... |
| Yearly | price_live_... |
Step 4: Create Live Webhooks
You need separate webhook endpoints for test and live modes. Do NOT reuse your test webhook — it won't work with live mode.
4.1 Create New Webhook for Live Mode
-
Ensure Test mode is OFF (live mode active)
-
Go to Developers → Webhooks
Direct URL: https://dashboard.stripe.com/webhooks
-
Click + Add endpoint
-
Enter your webhook URL (same URL as test, but this is a new endpoint):
https://yoursite.com/wp-json/paywallwp/v1/stripe-webhook -
Click + Select events and add these events:
Event Purpose checkout.session.completedInitial subscription payment customer.subscription.createdNew subscription created customer.subscription.updatedSubscription changes customer.subscription.deletedSubscription ended invoice.paidSuccessful renewal invoice.payment_failedFailed renewal charge.refundedRefund processed -
Click Add events
-
Click Add endpoint
4.2 Copy Live Webhook Secret
- Click on your new live webhook endpoint
- Click Reveal under Signing secret
- Copy the secret (starts with
whsec_)
Keep your test webhook endpoint active for future development. You now have two webhooks:
- Test webhook → for development
- Live webhook → for production
Step 5: Update PaywallWP Settings
5.1 Configure Live Mode
-
In WordPress, go to PaywallWP → Settings → Payments
-
In the Stripe section:
- Click Live Mode button (should become active/highlighted)
-
Enter your live credentials:
Field Value Live Publishable Key pk_live_...Live Secret Key sk_live_...Live Webhook Secret whsec_...(from live webhook) -
Click Save Settings
5.2 Double-Check Settings
After saving, verify:
- Mode shows Live (not Test)
- All three fields are filled with
livekeys - No error messages appear
- Settings saved successfully
Step 6: Verify Your Plans
Your PaywallWP plans sync automatically with Stripe:
- Go to PaywallWP → Plans
- Verify your plans are published
- Confirm pricing matches your live Stripe products
If your plan prices in PaywallWP match your live Stripe prices, no changes are needed. Plans work automatically.
Step 7: Test Live Setup (Recommended)
Before announcing to customers, do a small live test:
7.1 Create a Test Transaction
-
Create a temporary $1.00 test plan in both:
- Stripe (new $1 price)
- PaywallWP (new $1 plan)
-
Subscribe using your own real payment method
-
Verify everything works:
- Payment appears in Stripe Dashboard → Payments
- Subscription shows Active in PaywallWP → Members
- Webhook delivery shows ✓ success in Stripe
- You can access protected content
-
Cancel the subscription:
- In PaywallWP: Members → Edit → Cancel
- Or in Stripe: Customers → Subscriptions → Cancel
-
Refund the payment:
- In Stripe: Payments → Click payment → Refund
-
Delete the test plan
7.2 Why This Matters
This confirms:
- Live API keys work
- Live webhooks receive events
- Real payments process correctly
- Your complete flow works end-to-end
Go-Live Checklist
Before announcing to customers, verify:
Technical Setup
- Live API keys configured correctly
- Live webhook created and receiving events
- SSL certificate active and valid (no warnings)
- Website loads via HTTPS only
Stripe Account
- Business verification complete
- Bank account connected for payouts
- Payout schedule configured (Settings → Payouts)
- Branding set (Settings → Branding)
PaywallWP Setup
- At least one plan published
- Plan pricing matches Stripe exactly
- Content properly protected
- Pricing page displays correctly
- Account page works for members
Legal Pages
- Terms of Service published
- Privacy Policy published
- Refund/Cancellation Policy published
- Cookie Policy (if required in your region)
Final Test
- Test payment successful with real card
- Subscription activates immediately
- Member can access protected content
- Cancellation flow works
Troubleshooting
"No such price" or Product Not Found
Cause: Trying to use test mode products/prices in live mode
Solution:
- Products and prices in test mode don't exist in live mode
- Create new products/prices in live mode (Step 3)
- Verify you're looking at live mode dashboard (no orange badge)
Webhook Signature Verification Failed
Cause: Using test webhook secret with live mode
Solution:
- Copy the signing secret from your LIVE webhook endpoint
- Test and live webhooks have different secrets
- Update PaywallWP with the correct live webhook secret
"Account Not Verified" or Payout Issues
Cause: Stripe verification incomplete
Solution:
- Go to Settings → Account details in Stripe
- Complete all required verification steps
- Check for outstanding requirements
- Contact Stripe support if stuck
Payments Work But No Payouts
Cause: Bank account not connected or verification pending
Solution:
- Go to Settings → Payouts in Stripe
- Add and verify your bank account
- Check payout schedule settings
- First payout may take 7 days for new accounts
Monitoring Live Payments
After going live, regularly monitor:
| What to Check | Where | Frequency |
|---|---|---|
| New payments | Stripe → Payments | Daily |
| Failed payments | Stripe → Payments (filter: Failed) | Daily |
| Webhook health | Stripe → Webhooks | Weekly |
| Member subscriptions | PaywallWP → Members | Weekly |
| Payout status | Stripe → Payouts | Weekly |
Set Up Email Notifications
In Stripe Dashboard:
- Go to Settings → Team and security
- Configure email notifications for:
- Successful payments
- Failed payments
- Disputes/chargebacks
- Payout failures
Next Steps
You're now accepting real payments!
- Offer PayPal too? → PayPal Live Mode Setup
- Monitor fraud → Set up Stripe Radar rules
- Handle disputes → Learn about Stripe's dispute process
- Customize emails → Configure receipt and invoice emails in Stripe