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

# Approvals

> Human-in-the-loop control over agent spending

When a payment exceeds the agent's auto-approval threshold — or a policy rule forces review — Reinx holds it for a human decision. The human approves or denies from the dashboard (with an email notification); the agent learns the outcome programmatically.

## The two windows

Approvals run on two separate clocks:

<Steps>
  <Step title="Human decision window — 72 hours (configurable)">
    The owner (or an operator with approval rights) has up to 72 hours to approve or deny the
    request. Requests not acted on in time **expire**, and the agent must re-request.
  </Step>

  <Step title="Execution">
    Once approved, Reinx executes the wallet transfer automatically — the agent doesn't act again,
    it just polls until the transfer settles. (Card-rail approvals, coming with the card program,
    instead give the agent a 15-minute window to execute the charge.)
  </Step>
</Steps>

## Denials teach the agent

A denial isn't a dead end — the human can attach **feedback text**, which the agent retrieves via the `get_denial_feedback` MCP tool. Well-built agents read the feedback, adjust (different amount, different merchant, better justification), and re-request.

```text theme={null}
Denied: "This subscription is a duplicate — we already pay for Figma
on the design team's agent. Don't re-request."
```

## How agents track a pending approval

After a request returns the `pending_approval` verdict, the agent polls `check_approval_status` with the returned `requestId` (passed as the `request_id` parameter):

* Poll roughly every 30 seconds, honoring the `retry_after_seconds` hint in each response.
* **For wallet payments, `approved` means the transfer is in flight** — Reinx executes it on approval. Keep polling until the status is terminal: `used` (settled) or `failed`.
* Terminal statuses: `used`, `failed`, `denied`, `expired`.

<Warning>
  Never treat `approved` as "done" for a wallet payment. The money has not settled until the status
  reads `used`.
</Warning>

## Notifications

Approval requests notify the owner immediately — in the dashboard notification feed and by
email. Mobile push and SMS delivery arrive with the mobile app rollout.
