SETSimple Easy Transactions
SET DocsAPI reference and complianceUpdated 2026-11-09
Browse: SET Merchant API

SET Merchant API · Recurring invoices

Create a recurring invoice

POST/v1/invoice_schedules

Key scope: write · Success: 201

Issues an invoice every week, month, quarter or year, numbered <prefix>-0001, -0002, … Each run applies the checks of POST /v1/invoices (run once when the schedule is set), carries the schedule's payer, gets a payment link, and raises invoice_schedule.invoiced with the invoice and the link's URL for you to send. A schedule that starts now issues its first invoice at once (firstInvoice).

Headers

Idempotency-Key string
Optional. The same key and body run once; a replay answers with Idempotent-Replayed: true. Kept 24 hours.

Body

customer stringrequired
The merchant itself.
amount decimal stringrequired
Each invoice's amount.
currency "usd" | "eur" | "gbp"
Default usd.
pay { cashOutAddress } | { virtualAccount }required
Where the payer pays, as on an invoice.
payer object
Who will pay (same body as /sender), sealed at rest.
every "week" | "month" | "quarter" | "year"required
How often. The 31st becomes a shorter month's last day.
numberPrefix stringrequired
1–30 letters, digits or _ . -.
startAt ISO time
The first invoice. Default now.
dueDays integer
0–365, default 14.
count integer
How many invoices in all, 1–1000. Default: until cancelled.

Notes

  • A number you already used moves to the next one; any other refusal is kept in lastProblem and retried in an hour.
  • Events invoice_schedule.created, .invoiced, .canceled. A saved card charged each period is Stripe Billing on the merchant's own Stripe account, not SET's.

Errors

  • 400 every_invalid
  • 400 number_prefix_invalid
  • 400 due_days_invalid
  • 400 count_invalid
  • 400 start_at_invalid
  • 400 amount_invalid
  • 400 currency_invalid
  • 400 pay_invalid
  • 503 invoice_payer_unavailable
  • 403 invoices_merchant_only
  • 401 api_key_required
  • 401 api_key_invalid
  • 401 api_key_wrong_mode
  • 403 scope_missing
  • 429 rate_limited

All codes: Errors.