A recent cron invocation does not prove that every WHMCS daily task completed. Diagnose the scheduler, PHP execution and individual automation tasks separately so that a failed invoice run is not confused with an entirely missing cron entry.
IN THIS ARTICLE
01 Read Automation Status first
- Open Utilities and Automation Status. Check the most recent invocation and daily completion information rather than relying only on the colour of the status indicator.
- Open the relevant status badge or report to inspect failed tasks. Use the linked explanation for a specific failure where available.
- Compare the report time with the server's timezone and the configured daily Time of Day. A daily task may not be due yet.
- Review the daily actions for the affected area, such as invoice generation, payment capture, suspension or backup. Identify the first missing or failed action.
02 If the scheduler never runs
Confirm that the cron entry exists under the correct account, points to the current installation and uses an executable PHP binary. Check whether the hosting provider has disabled scheduled tasks or whether filesystem permissions prevent access. A migrated or renamed directory commonly leaves an old path in the scheduler.
Compare command-line PHP with web PHP, including the loaded configuration and required extensions. Capture a short diagnostic execution using the documented verbosity options where needed. Keep output private because it can reveal paths, account identifiers and integration details.
03 Example: inspect cron PHP without running the billing tasks
Copy the PHP executable path from the actual WHMCS cron entry. Replace the placeholder below with that exact binary, then inspect its version and configuration locations:
/path/to/php -v
/path/to/php --ini
The first command reports the selected PHP version and loaded engine information. The second shows which configuration file and scanned configuration files that executable uses. These commands do not invoke cron.php.
Expected result: you can compare the scheduled process with the PHP environment used by the website. If a different PHP version or configuration is selected, correct the specific cron command or required environment with the hosting administrator. Do not replace the path with whichever php happens to be first in a shell's search path without checking it. Share only the relevant version and paths through the private support ticket.
What should I check if cron runs but one action fails?
Inspect the relevant gateway, registrar or server module error and check the corresponding remote system. Use Module Queue for failed provisioning actions, and verify whether the remote action already succeeded before retrying it. Resolve the underlying credentials, package or connectivity issue first.
Avoid applying --force as a general repair command. Forcing due checks or rerunning payment-related work without examining state can create new operational problems. Select a narrowly scoped documented diagnostic action when one is needed.
04 Verify the correction
Allow a normal scheduled run and confirm that the expected task completes. Refresh Automation Status and retain the relevant error and resolution in an internal incident note. Remove temporary verbose logging once the cause is understood.