- Stripe Dashboard → Developers → Webhooks → pick the endpoint.
- Click Roll secret. Stripe shows the new secret once — copy it now.
- WordPress Network Admin → SJ CRM Stripe → Settings → paste new secret → Save.
- From Stripe, click Send test webhook on any event — it should return 200.
- Verify in
debug.logthe signature passed. - Old secret remains valid for 24 hours, but rotate the WP setting immediately to keep production aligned.
[ADMIN] How to issue a refund and clean up the account
- Confirm refund eligibility (within 30 days OR documented service issue).
- Stripe Dashboard → Customers → find customer → Payments → Refund.
- Choose full or partial. Add internal note: ticket #, reason.
- Cancel subscription: customer page → Subscriptions → Cancel immediately.
- Reply to customer with confirmation, refund timing (5–10 business days), and a polite goodbye.
- In
wpp3_sj_crm_tenants, mark the tenant cancelled and set deletion date 30 days out. - Add SJ Journal entry: customer name, amount, reason, ticket reference.
[ADMIN] How to test Stripe checkout end-to-end
- Switch sj-crm-stripe settings to Test mode.
- Use Stripe test API keys (pk_test, sk_test) and the test webhook signing secret.
- From the public signup page, pick a plan and use card
4242 4242 4242 4242any future expiry, any CVC, any ZIP. - Confirm webhook fires (Stripe Dashboard → test mode → Webhooks → recent deliveries).
- Confirm tenant subsite was created and you can log in to it.
- Run through one cancel and one card-decline scenario (card
4000 0000 0000 0002). - Switch back to Live mode when done. Double-check the keys.
Never leave the production site in test mode — real payments will fail silently.
