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

# Execution wallets

Privy enables teams to add a programmable execution layer on top of existing treasury infrastructure, without moving funds out of custody.

Execution wallets are Privy wallets upgraded via [EIP-7702](/recipes/react/eip-7702) to operate as smart accounts. Each wallet sits alongside external wallet providers, interacting with onchain protocols on behalf of the treasury. EIP-7702 enables batched transactions, so each execution wallet bundles multiple calls into a single transaction. A fleet of execution wallets operates in parallel — each with its own nonce — eliminating the sequential bottleneck that limits throughput in single-wallet custody setups.

Execution wallets do not need to hold a working balance. The EIP-7702 smart account layer handles gas sponsorship, so treasury funds stay in custody throughout.

<Info>
  Execution wallets work alongside existing external wallet setups. For setting up a treasury from
  scratch with Privy, see the [business wallets guide](/recipes/wallets/business-wallets).
</Info>

## Architecture

<img src="https://mintcdn.com/privy-c2af3412/JqVAwdW8cFxEN_JW/images/execution-wallets-diagram.png?fit=max&auto=format&n=JqVAwdW8cFxEN_JW&q=85&s=39bfb11b4f7c11f292331bc31d6a16fe" alt="Execution wallets architecture diagram" width="1800" height="672" data-path="images/execution-wallets-diagram.png" />

Execution wallets operate as a delegation layer between treasury custody and onchain protocols:

* **Treasury funds remain in custody** (e.g., Bridge or another provider)
* **Execution wallets are EIP-7702 smart accounts** authorized to act on approved funds under policy constraints
* **Batched transactions** allow each wallet to execute multiple protocol interactions atomically in a single transaction
* **A fleet of execution wallets can run in parallel** across different strategies, with no shared nonce or ordering constraint across wallets
* **No working balance required** — gas is sponsored via the EIP-7702 smart account layer

## Setup

<Steps>
  <Step title="Create authorization keys">
    Your backend controls execution wallets via authorization keys. These keys sign requests to Privy's API on behalf of each wallet, enabling programmatic execution without manual approvals.

    Create [authorization keys](/controls/authorization-keys/owners/types#authorization-keys) in the Privy Dashboard and securely store the corresponding private keys.

    For higher-value wallets, register the authorization keys in a [key quorum](/controls/authorization-keys/owners/types#key-quorums). This requires multiple parties to sign before a wallet action is executed.

    <CardGroup cols={2}>
      <Card title="Create authorization keys" href="/controls/authorization-keys/keys/create/key">
        Create authorization keys in your Privy Dashboard.
      </Card>

      <Card title="Key quorums quickstart" href="/controls/key-quorum/create">
        Set up a key quorum for multi-party governance.
      </Card>
    </CardGroup>
  </Step>

  <Step title="Define execution policies">
    Policies constrain what each execution wallet can do. Well-scoped policies ensure that execution wallets can only interact with approved protocols and move funds within defined limits.

    Common policy configurations for execution wallets include:

    * **Allowlisted contracts**: Restrict the wallet to interact only with specific onchain protocols (e.g., a particular lending pool or liquidity venue)
    * **Transfer limits**: Cap the amount that can be moved per transaction or within a time window
    * **Recipient restrictions**: Limit where funds can be sent, such as only back to the treasury address
    * **Chain restrictions**: Restrict execution to specific networks

    Follow the guide below to create a policy. Save the `id` after creation to assign it to the wallets you provision later.

    <CardGroup cols={2}>
      <Card title="Policies overview" href="/controls/policies/overview">
        Learn how to construct policies with Privy's policy language.
      </Card>

      <Card title="Create a policy" href="/controls/policies/create-a-policy">
        Create a policy for your execution wallets.
      </Card>
    </CardGroup>
  </Step>

  <Step title="Provision an execution wallet fleet">
    Create one or more Privy wallets, each owned by the authorization key (or key quorum) and subject to the policies you defined.

    Provisioning multiple wallets allows your application to distribute transactions across the fleet and execute in parallel. Each wallet is an independent EOA with its own nonce, so there is no ordering constraint between wallets.

    When creating each wallet:

    * Set `owner_id` to the `id` of the authorization key or key quorum
    * Set `policy_ids` to include the `id` of the policy you created

    <CardGroup cols={1}>
      <Card title="Create a wallet" href="/wallets/wallets/create/create-a-wallet">
        Provision wallets for your execution fleet.
      </Card>
    </CardGroup>

    <Tip>
      Reuse the same policy ID across the fleet so every wallet is subject to the same constraints. To apply different permissions to different wallets — for example, separate wallets for separate protocols — create distinct policies for each.
    </Tip>
  </Step>

  <Step title="Upgrade execution wallets with EIP-7702">
    Upgrade each execution wallet to a smart account using EIP-7702. This gives each wallet the ability to send batched transactions and enables gas sponsorship, so the wallets do not need to hold a native token balance for gas.

    Use Privy's `sign7702Authorization` method to generate the delegation authorization for each wallet, then submit the upgrade transaction via your preferred account abstraction provider.

    <CardGroup cols={2}>
      <Card title="EIP-7702 overview" href="/recipes/react/eip-7702">
        Learn how to upgrade EOAs with EIP-7702.
      </Card>

      <Card title="Sign EIP-7702 authorization" href="/wallets/using-wallets/ethereum/sign-7702-authorization">
        Sign an EIP-7702 authorization with a Privy wallet.
      </Card>
    </CardGroup>
  </Step>

  <Step title="Execute batched transactions">
    Each upgraded execution wallet can now send multiple protocol interactions atomically in a single batched transaction. Distribute transactions across the fleet to parallelize execution — for example, separate wallets can interact with different protocols simultaneously, or multiple wallets can execute the same strategy concurrently.

    <CardGroup cols={2}>
      <Card title="Send a Solana transaction" href="/wallets/using-wallets/solana/send-a-transaction">
        Execute transactions on Solana.
      </Card>

      <Card title="Send batch transactions" href="https://docs.privy.io/recipes/batch-transactions#sending-batch-transactions">
        Follow the batch transactions guide for the transaction submission pattern.
      </Card>
    </CardGroup>
  </Step>

  <Step title="Monitor execution activity">
    Privy provides webhooks for transaction lifecycle events and balance changes. Use these to observe execution activity, trigger downstream workflows, and reconcile with your treasury system.

    <CardGroup cols={2}>
      <Card title="Transaction webhooks" href="/wallets/gas-and-asset-management/assets/transaction-event-webhooks">
        Monitor transaction status and completion events.
      </Card>

      <Card title="Balance webhooks" href="/wallets/gas-and-asset-management/assets/balance-event-webhooks">
        Track deposits and withdrawals across the fleet.
      </Card>
    </CardGroup>
  </Step>
</Steps>

## Learn more

<CardGroup cols={2}>
  <Card title="Business wallets" href="/recipes/wallets/business-wallets">
    Set up a business wallet with key quorums and policies.
  </Card>

  <Card title="EIP-7702" href="/recipes/react/eip-7702">
    Learn how EIP-7702 enables batch transactions and gas sponsorship.
  </Card>

  <Card title="Policies overview" href="/controls/policies/overview">
    Configure fine-grained execution controls.
  </Card>

  <Card title="Manual approvals" href="/controls/dashboard/overview">
    Add human review for high-value or sensitive transactions.
  </Card>
</CardGroup>
