Automate any transaction from your backend

TEE-secured backend wallets with sub-200ms signing, automatic nonce management, and policy-driven signing. Built for agents, payouts, and high-throughput automation.

No credit card required • Free testnet accounts

~/Dev/onchain-checkout
 ▋


Server
transfer
swap
mint

Automate payouts, mints, and treasury ops

Automate batch mints, token distributions, treasury operations, and gas sponsorship. Wallet automation handles signing and nonce management so your application logic stays simple.

Policy-driven signingAutomatic nonce mgmtIdempotent execution
Read the docs→

TEE-secured signing at hundreds of operations per second

Private keys live in Google Cloud Trusted Execution Environments. Sub-200ms signature latency with automatic nonce management and idempotent execution, built for high-throughput wallet automation.

TEE-secured keysSub-200ms signingContract allowlists
Read the docs→
TEE
0ops/sec
signed


Wallet policies, spending controls, and the audit trail

A wallet policy is a rule-based authorization control that decides whether a wallet may perform a signing operation, evaluated on every request before any signature is produced. Each policy holds an ordered list of rules, and each rule pairs one operation with an action — accept or reject — and a list of criteria that must all match.

Spending policies, transaction limits and the signed audit trail are the wallet-layer primitives that compliance and monitoring programs are built on. They are not a KYC/AML product. Openfort integrates with identity-verification and transaction-screening vendors; it does not provide KYC, AML or sanctions screening itself.

Enforceable control types

  • Spending limits. Per-transaction value caps on native transfers (ethValue, solValue) and token transfers (splValue), plus caps on decoded ERC-20 arguments such as a transfer amount. Rolling per-period totals are not aggregated by the policy engine.
  • Allowlists and denylists. Recipient addresses matched with in or not in, up to 100 addresses per criterion.
  • Contract and method restrictions. Calldata matched against a contract ABI by function name, with constraints on the decoded arguments by name or position.
  • Network restrictions. Chain ID allowlists and denylists, and Solana program ID and mint address restrictions.
  • Message and typed-data controls. Regex matching on personal-sign messages, EIP-712 verifying contract and field constraints, and outright rejection of raw hash signing.
  • Session keys. Scoped signers registered on the smart account with a contract whitelist, a maximum number of operations, and single-call revocation.
  • Time bounds. Session-key validity windows set by validAfter and validUntil, enforced by the account contract.
  • Per-agent policy scoping. A policy scoped to one backend wallet by account ID, so each agent carries its own rules on top of the project-wide baseline.
  • Approval thresholds. The engine has two actions, accept and reject. A rule that rejects above a threshold stops the transaction; routing it to a human approver and resubmitting is handled in your own workflow.

Where enforcement happens

Enforcement sits in two places, and neither is your application code.

  • API-side, before signing. The policy engine evaluates every request before key shares are assembled, so a rejected request produces no signature and burns no gas. Policies are ordered by priority, criteria within a rule use AND logic, the first matching rule wins, and the engine fails closed — once a project has one policy, any operation that matches no rule is rejected. policies.evaluate() returns the same decision without performing the operation.
  • On-chain, in the smart account. Session-key permissions — contract whitelist, validity window, operation count — are checked by the account contract during execution, so they hold even if the API-side layer is bypassed.

This is the difference from enforcing limits in application code. An application-layer rule only applies on the paths your application controls; a signer-side rule applies to every request that reaches the signer, and an on-chain rule applies to every transaction the account executes.

What the audit trail records

Each transaction record carries:

  • the transaction ID, creation and update timestamps, and status
  • the chain ID, the account that executed it, the wallet that owns the account, and the fee sponsorship that paid for gas
  • every call the transaction executes — destination, value, and either raw calldata or the contract and function name with its arguments
  • how it executed: an ERC-4337 user operation (including EIP-7702 delegated accounts) or a plain transaction
  • once terminal, a receipt with the transaction hash, block number, gas used, gas fee, cost in USD, and the revert reason when it failed

Policy decisions are recorded separately: policies.evaluate() returns whether the operation was allowed, the reason, and the IDs of the policy and rule that matched.

How the audit trail is retrieved

  • API. GET /v2/transactions returns transactions most recent first, filtered by account, user, wallet, chain, fee sponsorship, or status. expand=timeline adds the ordered lifecycle history with timestamps; expand=logs adds the receipt event logs.
  • Webhooks. Transaction events (broadcast, successful, failed, cancelled) and balance-threshold events are pushed as HTTPS POSTs signed with an HMAC-SHA256 digest in the openfort-signature header, so the receiving system can verify the payload was not altered in transit.
  • Delivery logs. The dashboard records every webhook delivery attempt with its status, response code, and payload.

The full rule model, criteria types and operators are in the policies documentation. For how these primitives map onto an enterprise controls review, see AI agent wallet compliance: custody and control requirements and wallet policy engines compared across five vendors.


1M+
wallets created
10M+
transactions
<200ms
signing speed
99.99%
uptime

From developers that use Openfort

"Game studio automates NFT rewards for 150K players"

Using wallet automation to batch-mint and distribute in-game assets without players ever needing to sign a transaction.

Moonlit Games

Moonlit Games

Read story
"GFAL automates marketplace operations with wallet permissions"

Transaction automation for marketplace listings and trades eliminated manual processes and sped up operations.

GFAL

GFAL

Read story
"Gaimin uses wallet automation for reward distribution"

Automated wallet permissions power programmatic reward payouts and token distributions across their gaming platform.

Gaimin

Gaimin

Read story

Add wallet automation to your app in minutes, not weeks

Unified API

Manage EOA and ERC-4337 wallets with one SDK. REST APIs for any language.

Dedicated Support

Work directly with our engineering team to ship your wallet automation integration.

Flexible Custody

Custodial EOAs for internal operations or non-custodial options with verified ownership.



Ship your first wallet in minutes


Frequently Asked Questions

Can't find your answer?

Talk to sales→

Wallet automation lets you execute blockchain transactions programmatically from your server. Instead of requiring manual user signatures, Openfort wallet automation handles signing, nonce management, and gas estimation automatically via simple API calls. It's designed for automated operations like batch minting, treasury management, gas sponsorship, and AI agent operations, with programmable wallet permissions to control what actions are allowed.

Transaction automation lets your server execute onchain actions programmatically. With Openfort wallet automation, you can automate batch mints, token distributions, payroll in stablecoins, NFT airdrops, and DeFi operations. The system handles signing, nonce management, and gas estimation automatically via simple API calls.

Wallet permissions give you granular control over what transactions a wallet can execute. You can set spend limits, contract allowlists, time-based restrictions, and multi-party approval requirements. This means you can automate operations while maintaining strict controls. For example, you can allow a wallet to mint NFTs but not transfer ETH above a certain threshold.

Yes. Wallet automation supports gasless transactions via ERC-2771 forwarders or ERC-4337 paymasters. You can define policies to sponsor gas for specific users, contracts, or transaction types. This means users interact with your app without needing native tokens, while your automated wallets handle gas payment automatically.

Wallet automation is used for: treasury management (automated payroll, liquidity management), NFT operations at scale (batch minting, airdrops, dynamic metadata updates), AI agent automation (stop-loss trades, recurring payments, DeFi strategies), cross-border payments (managing millions of wallets with stablecoin disbursements), and DAO treasury management with multi-party approval and wallet permissions.

In two places, neither of which is your application code. API-side, the policy engine evaluates every signing request before key shares are assembled, so a rejected request produces no signature and burns no gas; it fails closed, meaning any operation that matches no rule is rejected. On-chain, session-key permissions such as the contract whitelist, validity window, and operation count are checked by the smart account contract during execution, so they hold even if the API-side layer is bypassed.

Each transaction record carries its ID, timestamps, status, chain, the account that executed it, the wallet that owns the account, the fee sponsorship that paid gas, every call it executes (destination, value, and either raw calldata or the contract and function name with arguments), how it executed, and a receipt with the transaction hash, block number, gas used, gas fee, cost in USD, and revert reason. Retrieve it with GET /v2/transactions, filtered by account, user, wallet, chain, or status, with expand=timeline for the lifecycle history and expand=logs for receipt event logs. Transaction and balance-threshold events are also pushed to your backend as webhooks signed with an HMAC-SHA256 digest in the openfort-signature header.

No. Spending policies, transaction limits and the signed audit trail are the wallet-layer primitives that compliance and monitoring programs are built on, but they are not a KYC/AML product. Openfort integrates with identity-verification and transaction-screening vendors rather than providing those functions itself. Openfort does not hold SOC 2 Type II; its published security evidence is five independent audits and the open-source OpenSigner codebase.

Openfort wallet automation supports 25+ EVM networks including Ethereum, Polygon, Base, Arbitrum, Optimism, Avalanche, and BNB Chain. You can manage both EOA and ERC-4337 smart account wallets with a single unified API. Our infrastructure is designed for future expansion to non-EVM networks.