Skip to main content

Delegate payments through a mandate

A mandate combines upstream Perflo recipient authority with stricter local caller and rolling-limit policy. It remains unusable until browser approval verifies one unique active upstream grant.

Create United States dollar limits

Create a mandate with one beneficiary, caps, count, expiry, and at least one client or rule:
All amounts use Perflo cash United States dollars. The beneficiary supplies destination currency and purpose. Limits must satisfy per_payment_max <= total_cap and daily_max <= weekly_max <= monthly_max <= total_cap. The API creates a pending_approval mandate and returns an operation. It floors the remaining expiry to whole provider days so upstream authority never outlasts local authority. Browser denial or expiry changes the mandate to approval_failed.

Execute as an agent

Call POST /v1/mandates/{mandate_id}/executions with an OAuth token containing mandates:execute, a client identifier, and the customer subject. The request amount is the exact United States dollar debit. PostgreSQL atomically reserves count, total, daily, weekly, and monthly capacity. The worker then re-reads the exact upstream grant and compares status, beneficiary destination, chain, caps, count, and expiry before paying.

Revoke or suspend

Customer revocation and operator suspension immediately set revocation_pending, cancel unsent reservations, and disable local execution. The worker queues one upstream grant revoke. Confirmed read evidence changes the mandate to revoked; uncertainty leaves it disabled and operator-visible. There is no resume path. Create and approve another mandate if the customer wants new authority.