Switched Stripe to live mode and checkout broke? Test products don't carry over

Ship ItChecked against the official source

The short answer

Stripe's sandbox and live mode each have their own API keys, and "objects in one mode aren't accessible to the other". The go-live checklist says Stripe objects created in a sandbox, such as plans, coupons, products, and SKUs, "aren't usable in live mode". So an app that still points at test price or product IDs breaks with live keys. Webhooks too: your account can have both test and live webhook endpoints, so you need a live one.

What to do

  1. Copy your products from the testing environment to live mode in the Stripe Dashboard. Each copy creates a separate live product.
  2. Set up a live webhook endpoint. Put the live IDs, live keys and the live endpoint's webhook secret in your production environment variables.
  3. Test one real purchase.
  4. Ask your AI tool: "List every Stripe ID and key this app uses (price IDs, product IDs, webhook secret, API keys) and show which are test values. Move them to production environment variables so I can paste the live ones."

Good to know

  • Later edits in your sandbox aren't reflected in the live copy.
  • Stripe's docs don't say whether a copied price keeps the same ID, so check the live IDs.

Source

Checked on 10 Oct 2026. Prices, limits and settings change, so check the source before you rely on them.

Related