Skip to Content
Dial v1 live 🎉

Recurring Payments

Status: conceptual, last checked 2026-11-02. No recurrence support exists.

A business bills a client 200 USDC on the first of each month for a year.

The pattern

The first design choice is who authorizes what:

ModelHow it worksTrade-off
New invoice each periodThe issuer signs a new SPORE and the payer approves each oneSimple, but needs an approval every time
Standing authorizationThe payer signs once with an amount, schedule, recipient and end dateNo repeat approvals, but it needs strong limits and easy revocation

Each period needs its own identifier, so a retry in March can’t pay February again or pay March twice.

Rules

  • Time decides state. A scheduled job checks elapsed time against the due date and moves an unpaid period to overdue. Don’t count attempts.
  • No polling providers. Payment state arrives through webhooks or chain events, and the scheduled job handles only reminders and give-ups.
  • Limits apply per period and in total. A standing authorization can’t be used to take a catch-up lump sum unless the terms allow it.
  • Expiry and revocation are checked before every period’s action.
  • Quote changes during a period need new approval if they exceed the signed limits.

Reminders, payment status and approvals across many periods are the job of the invoice manager in the product. The protocol only defines what is signed and verified.

Explore invoicing: Programmable Invoicing

Last updated on