Create a schedule
Frequency options
Timezone matters:
"America/New_York" means 9am Eastern regardless of DST.
Retry policy
When an execution fails (rail outage, insufficient funds), Sly retries automatically:- Happen hourly for 24 hours
- Then daily up to
retryWindowDays - Up to
maxRetryAttemptstotal - On final failure, schedule moves to
failedstate
retryEnabled: false = single-attempt only; failures go to failed immediately.
List schedules
next_execution_at, last_execution_at, executions_completed, and executions_remaining.
Schedule detail
Pause and resume
End a schedule
Either let it run out (hitsendDate or maxOccurrences) or cancel:
Execution state machine
Worker cadence
A background worker polls for scheduled transfers withscheduled_at <= NOW():
- Dev / sandbox: every 30 seconds
- Production: every 60 seconds
Endpoints
Webhooks
scheduled_transfer.executed— per execution, withstatus: completed | failedscheduled_transfer.retrying— retry attempt initiatedscheduled_transfer.failed— exhausted retriesscheduled_transfer.completed— schedule finished (endDate / maxOccurrences)
Common patterns
Payroll (bi-weekly every other Friday):POST /v1/scheduled-transfers with frequency: daily, startDate: <future>, maxOccurrences: 1, or better — the direct POST /v1/transfers with scheduled_at param.
Coordinating with mandates
If you’re already using AP2 mandates for recurring payments, do you also need scheduled transfers? Usually not:
Use mandates for agent-mediated recurring flow, scheduled transfers for partner-mediated recurring flow.