> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neobank.proofof.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent mandates

> Approve a Perflo recipient grant and bind autonomous payments to clients, rules, United States dollar limits, and expiry.

# 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:

```json theme={null}
{
  "beneficiary_id": "beneficiary_1234567890123",
  "per_payment_max": "100.00",
  "total_cap": "1000.00",
  "payment_count": 12,
  "daily_max": "200.00",
  "weekly_max": "500.00",
  "monthly_max": "1000.00",
  "expires_at": "2026-12-31T00:00:00Z",
  "authorized_clients": ["rent_agent"],
  "authorized_rules": ["rent_agent:monthly_rent_v1"]
}
```

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.
