Payment bugs cluster around keys, test mode, webhook secrets, and payment method assignment. Work through these before you assume Stripe is down globally.
Confirm the payment plugin is enabled and assigned to the active J2Commerce payment profile for the storefront you are testing. Confirm publishable and secret keys exist for the mode in use. Confirm test mode matches test keys. Clear cache if payment method lists are cached aggressively. Enable debug temporarily and reproduce once if logs are otherwise empty.
Confirm webhook signing secret in plugin options matches the endpoint in Stripe Dashboard for the same mode, live or test. Confirm subscribed events include checkout.session.completed, checkout.session.async_payment_succeeded, and checkout.session.async_payment_failed. Inspect Stripe webhook delivery log for HTTP errors or signature failures. Confirm your site URL in webhook endpoint is reachable from the public internet, not only from your laptop.
Confirm test mode is off. Confirm live keys are live keys, not test keys pasted into live fields. Confirm live webhook endpoint and signing secret are configured, not only test webhook. Confirm Stripe account activation and business requirements are complete for live charges in your region.
Check payment_status Orderstatus selection in plugin Advanced tab. Check whether manual capture leaves orders authorized until capture in Stripe Dashboard. Check J2Commerce order history for duplicate or conflicting status plugins.
Debug is intentional noise while troubleshooting. Turn debug off after you capture one reproduction. Leaving debug on in production creates log piles and may expose sensitive flow detail you do not want archived forever.
Session creation errors often trace to blocked outbound HTTPS, outdated CA bundles, or TLS interception on shared hosting. Stripe Dashboard may show API errors correlated with timestamps you reproduce from checkout. Fix infrastructure; keys alone cannot bypass a firewall that blocks Stripe.
Email