Missing session_id
Confirm endpoints (/api/checkout/stripe/confirm, balance top-up confirm, reseller top-up confirm) ran without a session_id (400 Missing session_id.).
Why this happens
Return URL truncated, bookmark without query params, or client called confirm before Stripe redirect attached the session. Not a webhook signature problem.
Diagnose and fix
1. Complete checkout via the provider redirect — do not invent confirm URLs.
2. If the success page loads without session_id, check return URL templates in Payment settings.
3. Retry the purchase; open history if payment already completed at Stripe.
4. Distinct from Could not load Stripe checkout session for this payment (id present, session missing).