Troubleshooting
Charges not being dispatched
Three things to check:
- The cron is scheduled. Run
wp cron event list | grep osub(or check Tools, Cron Events with WP Crontrol). You should seeosub/cron/charge_dispatchrunning every 5 minutes. If it is missing, deactivate and reactivate OSubscribe -OSub_Activator::activate()reschedules all five jobs. next_charge_atis set on the subscription. Open the subscription detail page and confirm a future timestamp. If null, the trial-to-paid transition probably skipped; rerun the order throughOSub_Products::maybe_create_subscriptions_from_order()or setnext_charge_atmanually.- The gateway is wired. Open Settings, Gateways and confirm the credentials and the saved payment token on the subscription.
Subscription stuck in past_due
A charge failed and the dunning run is still recovering. Open OSubscribe, Dunning to see the run, the failure reason, and the next scheduled retry. If you need to retry immediately, use the Charge now admin action or POST /wp-json/osub/v1/subscriptions/<id>/charge-now.
Customer cannot pause from My Account
The self-service action is gated by a setting. Open Settings, Self-service and verify pause_enabled is true. The corresponding policy map lives in OSub_Self_Service::policy_allows().
Stripe 3DS challenge not resuming
OSub_Stripe_SCA requires the Stripe webhook to be wired up correctly. Confirm:
- The webhook URL is registered in your Stripe dashboard.
- The webhook signing secret is pasted into OSubscribe, Settings, Stripe.
- The webhook is firing - check the recent webhook deliveries in the Stripe dashboard.
Without the webhook, the magic link will load the challenge page but the charge will not resume server-side.
MRR shows zero
OSub_Analytics::current_mrr() only counts subscriptions in active, trial, past_due, or pending_cancel. If all your test subscriptions are in pending (never charged) or cancelled, the MRR is correctly zero. Run a real charge through a subscription to move it to active and the dashboard updates.

