--- title: Troubleshooting description: Diagnose and fix the most common Sikshya LMS issues — REST 404s, permalinks, gateway sandbox mode, email deliverability, role / capability oddities, cache plugins, and PHP fatals. --- # Troubleshooting This page lists the issues we see most often and the fastest way through them. ## "REST returns 404 / nothing loads in the admin" **Symptom:** The admin React shell shows blank panels; the network tab shows `404` for `/wp-json/sikshya/v1/...`. **Cause:** Pretty permalinks are off, or a security plugin is blocking REST. **Fix:**
  1. Go to Settings → Permalinks. Pick Post name (or any non-Plain). Click Save Changes.
  2. Visit /wp-json/sikshya/v1/ in a browser. You should see JSON, not 404.
  3. If you have Wordfence, iThemes Security, etc., temporarily allow wp-json for your IP.
## "Permalinks 404 on the front of the site" **Symptom:** `/courses/`, `/cart/`, `/checkout/`, `/my-learning/` all return 404. **Fix:** Open Settings → Permalinks and click **Save Changes** (no need to change anything; saving flushes rewrite rules). Or run `wp rewrite flush` via WP-CLI. ## "Stripe doesn't show up under Settings → Payment" PRO **Symptom:** PayPal is listed, but you can't find Stripe — or you see only an "Upgrade to enable" prompt where Stripe should appear. **Cause:** **Stripe is a Pro-only add-on** — it isn't bundled with the free Sikshya plugin. The gateway list under Settings → Payment only contains the gateways your Pro license unlocks. **Fix:**
  1. Install Sikshya Pro alongside the free plugin and activate your license under Sikshya → License.
  2. Open Sikshya → Add-ons, find Stripe, and toggle it on.
  3. Stripe now appears under Sikshya → Settings → Payment — paste your keys and webhook secret.
PRO Unlock Stripe + 5 more gateways
Compare Pro plans →
## "PayPal webhook shows but no order is fulfilled" **Symptom:** PayPal logs show 200 from your site, but the order stays **pending**. **Cause:** Webhook ID mismatch (sandbox vs live), missing client id / secret, or REST routes blocked by security. **Fix:**
  1. Open Sikshya → Settings → Payment → PayPal. Confirm Mode matches the webhook (sandbox vs live), and Webhook ID matches the PayPal dashboard.
  2. Confirm REST is reachable — visit /wp-json/sikshya/v1/webhooks/paypal (you should get a 405 method-not-allowed for a GET, not a 403).
  3. Check Tools → Activity log for webhook errors.
## "Stripe webhook signature mismatch" **Symptom:** Stripe says webhook delivery failed; Sikshya logs say "invalid signature". **Cause:** Webhook secret in Sikshya doesn't match Stripe's webhook signing secret. **Fix:**
  1. In Stripe → Developers → Webhooks → click your endpoint → Reveal secret under Signing secret (whsec_...).
  2. Paste it into Sikshya → Settings → Payment → Stripe → Webhook secret.
  3. Save. Re-send a test event in Stripe.
## "Emails aren't arriving" **Symptom:** No enrollment / receipt / completion emails reach the learner. **Fix:**
  1. Install a transactional email plugin: WP Mail SMTP, FluentSMTP, or Post SMTP.
  2. Connect to a transactional ESP: SendGrid, Postmark, Amazon SES, Mailgun.
  3. Set From name and From email to a noreply@ on your sending domain.
  4. Configure SPF, DKIM, and DMARC on the From domain.
  5. Test deliverability via mail-tester.com.
PRO Professional email delivery

The Pro Professional email delivery & branded templates add-on streamlines ESP setup with a guided UI and adds a branded multi-template kit.

Unlock branded delivery →
## "Apply to teach doesn't grant the role" **Symptom:** A user submits the instructor application but doesn't get the `sikshya_instructor` role automatically. **Cause:** This is by design. Applications are recorded as **pending** — an admin must approve them. **Fix:** Go to Sikshya → People → Applications and click **Approve**. ## "Setup wizard never finishes" **Symptom:** After activation, you can't get past the setup wizard. **Fix:**
  1. Make sure your account has manage_options.
  2. Disable WAF / Security plugins temporarily, run the wizard, re-enable.
  3. If still stuck: open Sikshya → Tools → Maintenance → Open setup wizard to re-run.
## "I deactivated Pro and lost some data" **Symptom:** After turning off Sikshya Pro, gradebook / drip / advanced certificates disappear. **Cause:** Pro features render only when their add-on is on. **Stored data is preserved.** **Fix:** Re-enable the add-on under Sikshya → Add-ons to bring back the UI. ## "Course content shows but progression is locked" **Symptom:** A learner is enrolled but can't open the next lesson. **Cause:** Sequential progression is on (default in free) and a previous lesson hasn't been completed; or a Pro **drip** or **prerequisite** rule applies. **Fix:** Have the learner mark the current lesson complete. Or, as admin, manually mark lessons complete. ## "Cache plugin breaks checkout / login" **Symptom:** Login form keeps showing logged-out state; checkout looks blank. **Cause:** Page cache is serving the logged-out version of a session-specific page. **Fix:** Exclude these from your page cache: - `/cart/`, `/checkout/`, `/my-learning/`, `/learn/`, `/order/`, `/login/` - `/wp-json/sikshya/v1/checkout/*`, `/wp-json/sikshya/v1/me/*` ## "PHP fatal errors after enabling Pro" **Symptom:** White screen of death right after activating Sikshya Pro. **Cause:** Mismatched plugin versions, or Pro was activated before Free. **Fix:**
  1. Add define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); to wp-config.php.
  2. Re-read the error in wp-content/debug.log.
  3. Update both plugins to the latest versions.
  4. Activate Sikshya first, then Sikshya Pro.
## "I'm on a case-sensitive Linux host and templates don't load" **Symptom:** A template override in your theme isn't picked up. **Cause:** macOS dev is case-insensitive; production Linux is case-sensitive. A template with the wrong case in the path silently fails. **Fix:** Match Sikshya's exact casing — `templates/single-course.php`, `templates/partials/courses/card.php`, etc. ## "REST returns 403 for an admin user" **Symptom:** Admin REST routes return `rest_forbidden`. **Cause:** Cookie session expired, missing `X-WP-Nonce`, or a role plugin removed a capability. **Fix:**
  1. Refresh the WordPress admin page (re-issues a fresh nonce).
  2. Confirm your user has manage_sikshya and sikshya_access_admin_app.
  3. Check that a role plugin (Members, User Role Editor) didn't remove those caps from administrator.
## "Pro license shows valid in Mantrabrain dashboard but Sikshya says invalid" **Symptom:** Account dashboard says **Active**; Sikshya → License says invalid. **Cause:** License key activated on too many sites, or the site URL differs (`www.` mismatch). **Fix:**
  1. Open the Mantrabrain account dashboard and confirm site limits.
  2. Deactivate old / dev URLs.
  3. Click Check status in Sikshya → License.
## Diagnostics tools - Sikshya → Tools → System status — PHP, WP, server, plugin versions. - Sikshya → Tools → Maintenance — clear cache, reset settings, import sample data. - Sikshya → Tools → Activity log PRO — webhook + email + general logs. ## When to file a bug Before filing, please:
  1. Update both Sikshya and Sikshya Pro to the latest.
  2. Disable other plugins one by one to rule out conflicts.
  3. Switch to a default theme briefly to rule out theme conflicts.
  4. Capture the exact steps + a WP_DEBUG log of the error.
Then [file a bug on GitHub](https://github.com/MantraBrain) (free) or open a [priority support ticket](https://mantrabrain.com/contact/) (Pro). ## What's next - [Installation](/installation) - [Payments](/payment-settings) - [Email & notifications](/email-settings) - [Support](/support)