Moving Stripe from test mode to live mode: the checklist
5 min read · Updated 27 September 2026
Stripe keeps test mode and live mode completely separate. Almost nothing carries over, which is why apps that worked perfectly in testing often break on launch day. Work through this list.
The checklist
- Activate your account. Complete Stripe's business details and identity verification, or live payouts to your bank won't flow.
- Swap the keys. In production use sk_live_... (server only, never in the browser) and pk_live_.... Keep the test keys for your development setup.
- Recreate products and prices in live mode. Test price IDs (price_...) don't exist in live, so update any IDs hard-coded in your app or environment variables.
- Create a live webhook endpoint pointing at your production URL, subscribed to the events you handle. Put its new whsec_... secret in your production environment.
- Update success, cancel and return URLs to your real domain, not localhost or a preview URL.
- Set up the Customer Portal again in live mode if customers manage their own subscriptions.
- Redeploy. Most hosts only apply changed environment variables to new deployments.
Test with real money, safely
Temporarily create a very cheap live product (Stripe's minimum in Australia is A$0.50), buy it with your own card, and check three things: the payment appears in Stripe, your webhook shows a successful delivery, and your app marks the order as paid. Then refund it from the Stripe Dashboard and hide the test product.
Never put your secret key (sk_live_...) in frontend code or share it in chat. If it ever leaks, roll it straight away in Developers → API keys.
Still stuck?
Share your screen and we'll fix it together, live. A$99 / hour, agreed price, no surprises.
