Skip to main content

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

Before You Begin
  1. Complete Stripe Test Mode Setup first
  2. Test your entire checkout flow thoroughly in test mode
  3. Verify webhooks are working (green checkmarks in Stripe)
  4. 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

  1. Log in to Stripe Dashboard: https://dashboard.stripe.com
  2. Look for any orange banners or alerts about completing setup
  3. Click Settings (gear icon) in top right
  4. Go to Business settingsPublic details
  5. Complete all sections marked as required

1.2 Required Information

Stripe typically requires:

CategoryInformation Needed
Business detailsLegal business name, address, tax ID (EIN/VAT)
Bank accountAccount for receiving payouts
Identity verificationPersonal ID for business owner(s)
Website infoYour 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
Check Progress

Go to Settings → Account details to see verification status. You'll see checkmarks for completed sections.

Cannot Accept Payments Until Verified

Stripe will not process live payments until verification is complete. Plan ahead!


Step 2: Get Live API Keys

2.1 Switch to Live Mode

  1. In Stripe Dashboard, find the Test mode toggle (top right)
  2. Click to turn it OFF
  3. Dashboard should now show "Live" without the orange "TEST DATA" badge
  4. The background color changes from orange-tinted to normal

2.2 Copy Live API Keys

  1. Click Developers in left sidebar

  2. Click API keys

    Direct URL: https://dashboard.stripe.com/apikeys

  3. Copy your live keys:

    Key TypeFormatNotes
    Publishable keypk_live_...Safe for frontend
    Secret keysk_live_...Click "Reveal live key"
Security Warning - Live Keys

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

Important

Test mode products do NOT exist in live mode. You must create new products in live mode.

3.1 Create Product in Live Mode

  1. Ensure Test mode toggle is OFF (you're in live mode)

  2. Go to More +Product catalog

    Direct URL: https://dashboard.stripe.com/products

  3. Click + Add product

  4. Enter product details:

    FieldValue
    NameYour plan name (e.g., "Premium Membership")
    DescriptionClear description of what's included
    ImageProduct image (optional but recommended)
  5. Add recurring price:

    • Select Recurring
    • Enter your actual price (real money!)
    • Select billing period (Monthly, Yearly, etc.)
    • Choose currency
  6. Click Add product

3.2 Add Additional Prices (if needed)

If you offer both monthly and yearly:

  1. Open the product you just created
  2. Click + Add another price
  3. Configure the additional price (e.g., yearly)
  4. Click Add price

3.3 Verify Price IDs

Note your live Price IDs for reference:

PlanLive Price ID
Monthlyprice_live_...
Yearlyprice_live_...

Step 4: Create Live Webhooks

Separate Webhooks Required

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

  1. Ensure Test mode is OFF (live mode active)

  2. Go to DevelopersWebhooks

    Direct URL: https://dashboard.stripe.com/webhooks

  3. Click + Add endpoint

  4. Enter your webhook URL (same URL as test, but this is a new endpoint):

    https://yoursite.com/wp-json/paywallwp/v1/stripe-webhook
  5. Click + Select events and add these events:

    EventPurpose
    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
  6. Click Add events

  7. Click Add endpoint

4.2 Copy Live Webhook Secret

  1. Click on your new live webhook endpoint
  2. Click Reveal under Signing secret
  3. Copy the secret (starts with whsec_)
Keep Test Webhooks

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

  1. In WordPress, go to PaywallWP → Settings → Payments

  2. In the Stripe section:

    • Click Live Mode button (should become active/highlighted)
  3. Enter your live credentials:

    FieldValue
    Live Publishable Keypk_live_...
    Live Secret Keysk_live_...
    Live Webhook Secretwhsec_... (from live webhook)
  4. Click Save Settings

5.2 Double-Check Settings

After saving, verify:

  • Mode shows Live (not Test)
  • All three fields are filled with live keys
  • No error messages appear
  • Settings saved successfully

Step 6: Verify Your Plans

Your PaywallWP plans sync automatically with Stripe:

  1. Go to PaywallWP → Plans
  2. Verify your plans are published
  3. Confirm pricing matches your live Stripe products
No Changes Needed

If your plan prices in PaywallWP match your live Stripe prices, no changes are needed. Plans work automatically.


Before announcing to customers, do a small live test:

7.1 Create a Test Transaction

  1. Create a temporary $1.00 test plan in both:

    • Stripe (new $1 price)
    • PaywallWP (new $1 plan)
  2. Subscribe using your own real payment method

  3. 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
  4. Cancel the subscription:

    • In PaywallWP: Members → Edit → Cancel
    • Or in Stripe: Customers → Subscriptions → Cancel
  5. Refund the payment:

    • In Stripe: Payments → Click payment → Refund
  6. 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
  • 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 CheckWhereFrequency
New paymentsStripe → PaymentsDaily
Failed paymentsStripe → Payments (filter: Failed)Daily
Webhook healthStripe → WebhooksWeekly
Member subscriptionsPaywallWP → MembersWeekly
Payout statusStripe → PayoutsWeekly

Set Up Email Notifications

In Stripe Dashboard:

  1. Go to Settings → Team and security
  2. Configure email notifications for:
    • Successful payments
    • Failed payments
    • Disputes/chargebacks
    • Payout failures

Next Steps

You're now accepting real payments!