Cron Expression: Every Quarter (Quarterly)
0 0 1 1,4,7,10 * runs at midnight on the first day of each calendar quarter — January, April, July, and October. Here is why this is the clean way and how to shift it to your fiscal quarters.
How it works
Quarters are three months apart, so list the four starting months in the month field: 1,4,7,10. The 1 in day-of-month fires on the 1st, and 0 0 is midnight. Result: four runs a year, at the start of each calendar quarter.
Using a step instead of a list
0 0 1 */3 * also fires every 3rd month, but be careful: */3 starts from month 1, giving Jan, Apr, Jul, Oct — same as the list. The explicit list 1,4,7,10 is clearer and avoids confusion if you later change the start.
Fiscal quarters
If your fiscal year starts in a different month, just shift the list. Fiscal quarters starting in February: 0 0 1 2,5,8,11 *. Starting in July: 0 0 1 7,10,1,4 * (order doesn't matter to cron).
End of quarter instead of start
To run on the last day of each quarter, target the last months and day: for calendar quarters that is Mar 31, Jun 30, Sep 30, Dec 31 — which have different last days, so run 0 0 28-31 3,6,9,12 * and gate to the true last day in the script, or simply use the 1st-of-next-quarter run above.
FAQ
What cron expression runs every quarter?
0 0 1 1,4,7,10 * runs at midnight on the 1st of January, April, July, and October — the start of each calendar quarter.
Can I use */3 for quarterly?
Yes: 0 0 1 */3 * fires every 3rd month starting from January, which lands on the same months. The explicit 1,4,7,10 list is clearer.
How do I match fiscal quarters?
Shift the month list to your fiscal start, e.g. 0 0 1 2,5,8,11 * for a fiscal year beginning in February.