maxRuns limit, or until you cancel them.
Unlike payroll (a one-shot batch) or streaming (continuous per-second flow), scheduled payments are discrete, repeating transfers with a predictable schedule — perfect for subscriptions, rent, allowances, and recurring agent subscriptions.
Use Cases
Subscription & SaaS Billing
Charge subscribers the same USDC amount every 30 days, automatically, until they cancel.
Rent & Loan Payments
Schedule monthly disbursements to a landlord, creditor, or fund manager on a fixed cadence.
Recurring Agent Allowances
Fund an autonomous agent a fixed amount every week so it can pay for compute and API access.
Dollar-Cost Averaging
Move a fixed amount into a savings or investment wallet on a regular interval.
How Scheduled Payments Work
- Create the schedule — You
POSTto/api/payments/scheduledwith a payer, receiver, amount, andintervalDays. - First run scheduled — The schedule starts
ACTIVEwith anextRunAt. WithstartImmediately: true(default) the first run is due now. - Cron runner executes — A scheduler calls
POST /api/payments/scheduled/runon an interval (e.g. hourly). EveryACTIVEschedule whosenextRunAthas passed is settled onchain. - Repeat or complete — After each successful run,
nextRunAtadvances byintervalDays. OncerunCountreachesmaxRuns, the schedule is markedCOMPLETED.
Creating a Scheduled Payment
REST API Parameters
string
required
The wallet address that funds each run. The payer must be a FlareHQ-created (Circle-custodied) wallet — see the external-wallet note below.
string
The Circle wallet ID for the payer. If omitted, FlareHQ resolves it from the payer’s consumer account.
string
required
The wallet address that receives USDC on each run.
string | number
required
USDC amount to transfer on each run, e.g.
"25.00". Formatted to 6 decimal places before transfer.number
required
Number of days between runs.
nextRunAt advances by this amount after every execution.number
Maximum number of executions. Once
runCount reaches this value, the schedule is marked COMPLETED. Omit for an infinite recurring schedule.boolean
When
true (default), the first run is due immediately (nextRunAt is now). When false, the first run is due intervalDays from creation.string
Optional human-readable label for the schedule.
string
URL to receive
scheduled_payment.executed events after each run.How the Cron Runner Executes Payments
Schedules are executed byPOST /api/payments/scheduled/run. A cron job — Render Cron Job or any external scheduler — calls this endpoint on an interval (e.g. every hour). Each call:
- Finds every schedule with
status: ACTIVEandnextRunAtat or before now. - Transfers
amountUSDC from the payer’s Circle wallet toreceiverSCAon Arc Mainnet. - Increments
runCount, setslastRunAt, and advancesnextRunAtbyintervalDays. - Marks the schedule
COMPLETEDwhenrunCountreachesmaxRuns. - Fires the
scheduled_payment.executedwebhook if awebhookUrlis set.
number
Number of schedules that were due at the time of the run.
number
Number of schedules settled successfully onchain.
number
Number of schedules whose transfer failed. Failures do not advance
nextRunAt, so a later run retries them.Managing Schedules
List Schedules
Filter by payer wallet or status:nextRunAt ascending, with live runCount and nextRunAt values.
Cancel a Schedule
Cancel a schedule at any time by reference. The schedule is markedCANCELLED and the cron runner will skip it.
Schedule Lifecycle
Webhook Events
Example Payload — scheduled_payment.executed
nextRunAt is null and the schedule is COMPLETED.
The cron runner processes due schedules sequentially and waits for each Circle transaction to confirm before advancing to the next. The endpoint requires a valid API key and is safe to trigger manually for a manual catch-up run.

