Skip to main content
Schedule a future-dated transfer. Envelope is evaluated at schedule time AND again at execute time; policy bumps between the two can still deny the scheduled transfer.

Metadata

Annotations

Input schema

Output schema

Auth

Caller’s grant must include the payments:initiate scope. Grants whose scope set is a superset of the required scope are accepted.

Request examples

Response examples

Accepted (below step-up threshold)
Step-up required (amount over envelope threshold)

Errors

Step-up flow

transfer.schedule enforces step-up at schedule time — the row is never enqueued until the principal has approved. This differs from a naive deferred payments.initiate; the execute-time worker also rechecks the then-current policy.
  1. Call transfer.schedule with the desired params. If the envelope’s step_up_amount_cents threshold is exceeded, the server returns -32003 with data.step_up_url and data.reason_id = "step_up_required".
  2. Redirect the user to step_up_url (Privy biometric prompt). On success, Glide mints a one-time sigil and redirects back to your app’s callback URL.
  3. Re-submit the original call, adding step_up_sigil: "<sigil>" to the params.
  4. The server redeems the sigil (single-use, bound to the exact amount + counterparty + execute_at), verifies the action matches what was approved, and enqueues the scheduled transfer.
TypeScript