<!-- DOCS_WALLET_AUTHORITY:principal-owned-permission -->
# Wallet authority

Canonical HTML: https://spoolis.com/docs/wallet-authority. This page is also available in machine-readable Markdown.

Set up and revoke a bounded, expiring Base spend permission for production settlement.

## How the authority is bounded

Your wallet remains under your control. Spoolis never receives the principal's signing key or payment credentials. The Base SpendPermissionManager permission identifies the principal account, spender, USDC token, allowance, period, start time, end time, salt, and extra data.

Current production pilot defaults are a $25.00 USDC allowance per 24-hour period and expiry seven days after the permission starts. These are current setup defaults, not permanent limits. Read the current values in Settings, Wallet.

The Spoolis verification fee is quoted before work and collected on settlement. Network or third-party wallet fees may still apply.

## Set up a production wallet

1. Register the public smart account that will own the permission through POST /api/account/principal for the signed-in account.

2. In Settings, Wallet, load the grant parameters and run the guided CDP snippet in your own environment with your own credentials.

3. Load the status again. GET /api/account/spend-permission shows matching permissions, current-period spend when available, expiry, and revocation status.

Moving to production is an account status change, not a separate integration. Your account must be production-enabled before production settlement can be used.

## Two independent ways authority ends

Expiry: every permission has an onchain end time. After it passes, authority cannot be used. This automatic backstop means authority cannot persist indefinitely, including if Spoolis is unavailable.

Revocation: Settings, Wallet sends POST /api/account/spend-permission/revoke for spender-side onchain revocation.

Independent revocation: the principal can call revoke with the complete permission struct on SpendPermissionManager at 0xf85210B21cC50302F477BA56686d2019dC9b67Ad. This works even if spoolis.com is offline. Revocation ends future authority and does not reverse a transaction already submitted or completed.

## Account routes

POST /api/account/principal registers or replaces the signed-in account principal. GET /api/account/spend-permission reads stored and onchain permission status. POST /api/account/spend-permission/revoke requests spender-side revocation for a permission owned by the signed-in account.

[Read wallet refusal remediation](/docs/api#troubleshooting).
