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

# Mandates

> Policy-as-code definitions that control agent spending

A **Mandate** is the core governance primitive in AXON. It's a Policy-as-Code definition that controls what an agent wallet can spend on, how much, and where.

> [!NOTE]
>
> This page covers **spend-side** mandate fields. The same mandate row also has **earn-side** fields (`receive_enabled`, `min_price_usdc`, `vault_sweep_threshold_usdc`, payer allow/blocklists, etc.) when a wallet accepts inbound payments. See [Earning Mandates](https://docs.axon402.com/docs/concepts/earning-mandates).

## Properties

| Field | Type | Description |
| :- | :- | :- |
| `id` | string | Unique identifier |
| `wallet_id` | string | Attached wallet |
| `per_transaction_limit_usdc` | number | Max per single transaction (USDC) |
| `daily_limit_usdc` | number | Max daily spend (USDC) |
| `monthly_limit_usdc` | number | Max monthly spend (USDC) |
| `approval_threshold_usdc` | number | Amount above which human approval is required |
| `max_requests_per_minute` | number | Rate limit for spend requests |
| `purpose` | string | Mandate description |
| `allow_list` | array | Permitted domains |
| `block_list` | array | Blocked domains |
| `allowed_categories` | array | Categorical constraints |
| `enforcement` | enum | `hard_stop` or `soft_warn` |

## Limits

```json theme={null}
{
  "per_transaction_limit_usdc": 5.00,
  "daily_limit_usdc": 50.00,
  "monthly_limit_usdc": 500.00
}
```

## Full Example

```json theme={null}
{
  "id": "mandate_01HXYZ...",
  "wallet_id": "wallet_01HXYZ...",
  "name": "Research Policy",
  "purpose": "Govern spend for research data acquisition",
  "per_transaction_limit_usdc": 2.00,
  "daily_limit_usdc": 10.00,
  "monthly_limit_usdc": 150.00,
  "approval_threshold_usdc": 5.00,
  "max_requests_per_minute": 30,
  "allow_list": [
    "*.statista.com",
    "api.bloomberg.com",
    "*.arxiv.org",
    "api.openai.com"
  ],
  "block_list": [
    "*.gambling.com",
    "*.adult.com"
  ],
  "allowed_categories": ["research", "analysis"],
  "networks": ["eip155:8453"],
  "enforcement": "hard_stop",
  "valid_from": "2025-01-01T00:00:00Z",
  "valid_until": null
}
```

## Evaluation Flow

```
Request → Per-Tx Limit → Daily Limit → Monthly Limit → Block List → Allow List → Network → Intent Check → Approve/Deny
```

1. **Per-Tx Limit** — Is `amount` ≤ `per_transaction_limit_usdc`?
2. **Daily Limit** — Is `daily_spent + amount` ≤ `daily_limit_usdc`?
3. **Monthly Limit** — Is `monthly_spent + amount` ≤ `monthly_limit_usdc`?
4. **Block List** — Is `origin_domain` in `block_list`? If so, deny.
5. **Allow List** — Is `origin_domain` in `allow_list`? If not, deny.
6. **Network Validation** — Is the requested chain in `networks`?
7. **Intent Check** — Does `intent_context` match policy constraints? (optional)

## Network Constraints

Mandates can restrict which chains an agent can pay on:

| CAIP-2 Identifier | Network | Status |
| :- | :- | :- |
| `eip155:8453` | Base Mainnet | Production |
| `eip155:84532` | Base Sepolia | Testnet |
| `eip155:1` | Ethereum Mainnet | Coming Soon |
| `eip155:42161` | Arbitrum One | Coming Soon |

If an x402 seller requests payment on an unsupported network, AXON blocks the transaction with `REJECTED_NETWORK`.

## Enforcement Modes

| Mode | Behavior |
| :- | :- |
| `hard_stop` | Block transaction, return error |
| `soft_warn` | Allow transaction, log warning, notify admin |

## Best Practices

> **Start restrictive**
>
> Begin with low limits and expand as needed. It's easier to loosen policy than to recover from overspend.

> **Whitelist first**
>
> Use `allow_list` rather than open access. Only add domains your agents actually need.

> **Use allowed categories**
>
> Define `allowed_categories` for audit clarity. This makes every transaction explainable.

> **One wallet per agent**
>
> Don't share wallets between agents. Isolation ensures clean audit trails and prevents cross-agent spending.

> **Template mandates**
>
> Create reusable mandate templates and apply department-level defaults for consistency at scale.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.