Why they fail quietly
Cron runs with a minimal environment and a different working directory to your shell. A script that works when you run it can fail under cron for path reasons alone, and the output goes nowhere by default.
Make failure loud
Log every run with a timestamp and exit code, alert when a job has not reported success within its expected window, and check the alert works by deliberately breaking a job once.
Guard against overlap
A job that occasionally runs long will eventually run twice at once. A lock file or a database advisory lock prevents the double-processing that causes duplicate invoices and repeated emails.