---
title: "Run recurring jobs on Stripe without a cron server"
description: "Stripe Workflows now supports recurring schedule triggers, enabling automated tasks like notifying teams about past-due subscriptions without external cron servers. Users set schedules in the Dashboard, and Stripe runs the workflow at each scheduled time, following the local clock and handling daylight saving time. A walkthrough lists past-due subscriptions, uses a metadata key condition to skip already-notified ones, and sends Slack notifications via the installed Slack app. The workflow handles pagination; if an action fails, the loop stops and remaining items are picked up on the next run, with details showing which step failed. This eliminates the need for a separate server, secret key storage, and daylight saving time logic, putting calendar-based operations under the finance team’s control."
---

# Run recurring jobs on Stripe without a cron server

[Stripe](https://yomu.fyi/company/stripe) · Tanya Boiteau · Oct 13, 2026

**Type:** Announcement

## Summary

Stripe Workflows now supports recurring schedule triggers, enabling automated tasks like notifying teams about past-due subscriptions without external cron servers. Users set schedules in the Dashboard, and Stripe runs the workflow at each scheduled time, following the local clock and handling daylight saving time. A walkthrough lists past-due subscriptions, uses a metadata key condition to skip already-notified ones, and sends Slack notifications via the installed Slack app. The workflow handles pagination; if an action fails, the loop stops and remaining items are picked up on the next run, with details showing which step failed. This eliminates the need for a separate server, secret key storage, and daylight saving time logic, putting calendar-based operations under the finance team’s control.

## Context

The post addresses the problem of manual or cron-based recurring tasks for finance teams, such as notifying about past-due subscriptions. It introduces Stripe Workflows’ new recurring schedule triggers as a solution that runs directly in the Stripe Dashboard without external infrastructure.

## Approach / What changed

The approach uses Stripe Workflows with a recurring schedule trigger set to weekdays at 9:00 AM local time. The workflow lists past-due subscriptions, retrieves customer emails, uses a condition on a metadata key to skip already-notified subscriptions, sends Slack notifications via the installed Slack app, and updates subscription metadata to record the notification. It handles pagination automatically and provides run details for monitoring.

## Takeaways

- Recurring schedule triggers in Stripe Workflows allow users to set schedules (e.g., every weekday at 9:00 AM local time) directly in the Dashboard, eliminating the need for cron servers and handling daylight saving time automatically.
- To avoid duplicate notifications for the same past-due subscription, the workflow uses a condition on a metadata key (collections\_notified\_invoice) that stores the latest invoice ID, skipping subscriptions where the key equals the current invoice ID.
- The workflow handles pagination automatically; if an action fails for one subscription, the loop stops and remaining items are picked up on the next run, and run details show which step failed and why.

## FAQ

### How do I set up a recurring schedule trigger in Stripe Workflows?

In the workflow builder, click Add a trigger, select Tools, then Recurring schedule. Set the repeat interval (e.g., every weekday), starting date/time, and time zone. The workflow runs at that time on each scheduled day, following the local clock.

### How does the workflow avoid notifying the team about the same past-due subscription multiple times?

The workflow uses a condition on a metadata key (collections\_notified\_invoice) that stores the latest invoice ID. On each run, it checks if the key equals the current invoice ID; if not, it sends the notification and updates the key. This skips the same subscription on subsequent runs until a new invoice triggers a new past-due status.

### What happens if an action in the loop fails?

If an action fails for one subscription, the loop stops at that point, and remaining subscriptions are not processed. They will be picked up on the next scheduled run. Run details show which step failed and why, and users can create a second workflow to alert on failures.

**Tags:** [Automation](https://yomu.fyi/topic/automation), [Slack](https://yomu.fyi/topic/slack), [Stripe](https://yomu.fyi/topic/stripe), [Workflows](https://yomu.fyi/topic/workflows)

- Source: [Stripe](https://stripe.dev/blog/run-recurring-jobs-on-stripe-workflows)
- Source URL: https://stripe.dev/blog/run-recurring-jobs-on-stripe-workflows
- Ingested by Yomu: 2026-10-13T15:00:16.100Z

[Read original post](https://stripe.dev/blog/run-recurring-jobs-on-stripe-workflows)
