---
title: Troubleshooting
description: Diagnose and fix the most common Yatra 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/yatra/v1/...`.
**Cause:** Pretty permalinks are off, or a security plugin is blocking REST.
**Fix:**
- Go to Settings → Permalinks. Pick Post name (or any non-Plain). Click Save Changes.
- Visit
/wp-json/yatra/v1/ in a browser. You should see JSON, not 404.
- If you have Wordfence, iThemes Security, etc., temporarily allow
wp-json for your IP.
## "Permalinks 404 on the front of the site"
**Symptom:** `/trips/`, `/booking/`, `/my-account/` 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 is locked at checkout" PRO
**Symptom:** PayPal works fine, but Stripe is greyed out / says "available with Pro".
**Cause:** Stripe is registered with Pro tier. It only activates at checkout when a Pro license is active.
**Fix:** Install Yatra Pro and activate your license under Yatra → License.
## "PayPal webhook shows but no booking is confirmed"
**Symptom:** PayPal logs show 200 from your site, but the booking stays **pending**.
**Cause:** Webhook ID mismatch (sandbox vs live), missing client id / secret, or REST routes blocked by security.
**Fix:**
- Open Yatra → Settings → Payment → PayPal. Confirm Mode matches the webhook (sandbox vs live), and Webhook ID matches the PayPal dashboard.
- Confirm REST is reachable — visit
/wp-json/yatra/v1/webhooks/paypal (you should get a 405 method-not-allowed for GET, not 403).
- Check Yatra → Tools → Logs → Payment for webhook errors.
## "Stripe webhook signature mismatch"
**Symptom:** Stripe says webhook delivery failed; Yatra logs say "invalid signature".
**Cause:** Webhook secret in Yatra doesn't match Stripe's webhook signing secret.
**Fix:**
- In Stripe → Developers → Webhooks → click your endpoint → Reveal secret under Signing secret (
whsec_...).
- Paste it into Yatra → Settings → Payment → Stripe → Webhook secret.
- Save. Re-send a test event in Stripe.
## "Emails aren't arriving"
**Symptom:** No booking confirmation / receipt / cancellation emails reach the customer.
**Fix:**
- Install a transactional email plugin: WP Mail SMTP, FluentSMTP, or Post SMTP.
- Connect to a transactional ESP: SendGrid, Postmark, Amazon SES, Mailgun.
- Set From name and From email to a
noreply@ on your sending domain.
- Configure SPF, DKIM, and DMARC on the From domain.
- Test deliverability via mail-tester.com.
PRO
Email Automation logs
With Email Automation on, the Email logs tab shows every send, recipient, status, and ESP response code — invaluable for debugging delivery.
Unlock email automation →
## "Featured priority filter doesn't work in shortcode / block"
**Symptom:** `[yatra_trip featured_priority="featured"]` returns nothing.
**Cause:** Trips don't have Featured Priority set. The legacy `featured` toggle was migrated to `featured_priority`, but if the trip has neither, no rows match.
**Fix:**
- Open the trip → Categories & Attributes → set Featured Priority to featured, sticky, or high-priority.
- Save.
The legacy `featured="1"` attribute is also accepted as an alias for `featured_priority="featured"`.
## "Setup wizard never finishes"
**Symptom:** After activation, you can't get past the setup wizard.
**Fix:**
- Make sure your account has
manage_options.
- Disable WAF / Security plugins temporarily, run the wizard, re-enable.
- If still stuck: visit
/wp-admin/admin.php?page=yatra-setup directly.
## "I deactivated Pro and lost some data"
**Symptom:** After turning off Yatra Pro, dynamic pricing / trip consent / additional services disappear.
**Cause:** Pro features render only when their module is on. **Stored data is preserved.**
**Fix:** Re-enable the module under Yatra → Modules to bring back the UI.
## "Cache plugin breaks checkout / login"
**Symptom:** Login form keeps showing logged-out state; booking flow looks blank.
**Cause:** Page cache is serving the logged-out version of a session-specific page.
**Fix:** Exclude these from your page cache:
- `/booking/`, `/my-account/`
- `/wp-json/yatra/v1/checkout/*`, `/wp-json/yatra/v1/me/*`
## "PHP fatal errors after enabling Pro"
**Symptom:** White screen of death right after activating Yatra Pro.
**Cause:** Mismatched plugin versions, or Pro was activated before Free.
**Fix:**
- Add
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); to wp-config.php.
- Re-read the error in
wp-content/debug.log.
- Update both plugins to the latest versions.
- Activate Yatra first, then Yatra 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 Yatra's exact casing — `templates/single-trip.php`, `templates/partials/trip-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:**
- Refresh the WordPress admin page (re-issues a fresh nonce).
- Confirm your user has
manage_options.
- Check that a role plugin (Members, User Role Editor) didn't remove Yatra capabilities from administrator.
## "Pro license shows valid in wpyatra.com dashboard but Yatra says invalid"
**Symptom:** Account dashboard says **Active**; Yatra → License says invalid.
**Cause:** License key activated on too many sites, or the site URL differs (`www.` mismatch).
**Fix:**
- Open the wpyatra.com account dashboard and confirm site limits.
- Deactivate old / dev URLs.
- Click Check status in Yatra → License.
## "Dynamic pricing rules don't apply to bookings" PRO
**Symptom:** Rules look right in the admin, but customer prices don't change.
**Fix:**
- Open Yatra → Dynamic Pricing → Settings. Confirm Enable Dynamic Pricing is on.
- Open the rule. Confirm Status is active (not trash or draft).
- Confirm the rule's conditions match the trip / departure / dates being booked. Use the Analytics tab to see if rules fired.
- Clear any object cache (Redis, Memcached) — pricing math is cached briefly.
## "Bulk delete dynamic pricing rules fails"
**Symptom:** Bulk action runs but rules stay.
**Fix:** This was fixed in a recent release — update Yatra Pro to the latest. The fix uses `Promise.allSettled` so any failed row doesn't block the rest.
## Diagnostics tools
- Yatra → Tools → System Status — PHP, WP, server, plugin versions.
- Yatra → Tools → Jobs — background export/import job progress.
- Yatra → Tools → Logs — Error / Payment / Booking / System tabs.
- Yatra → Tools → Migration — schema / data migration utilities.
## When to file a bug
Before filing, please:
- Update both Yatra and Yatra Pro to the latest.
- Disable other plugins one by one to rule out conflicts.
- Switch to a default theme briefly to rule out theme conflicts.
- Capture the exact steps + a
WP_DEBUG log of the error.
Then [file a bug on GitHub](https://github.com/MantraBrain/yatra) (free) or open a [priority support ticket](https://wpyatra.com/contact/) (Pro).
## What's next
- [Installation](/installation)
- [Payments](/payment-settings)
- [Email & notifications](/email-settings)
- [Support](/support)