Skip to main content
wallet_sendCalls (EIP-5792) sends multiple calls in a single user operation. All calls succeed together or revert together. The user approves once.

When to use it

  • ERC-20 approve + spend in one click.
  • Batch state changes that should atomically commit.
  • Multi-token settlement.

Send a batch

The from field is rewritten to the user’s smart account. The popup shows a single approval covering both calls. The request resolves directly with transactionHash and userOpHash once the batch lands, there is no separate id to poll.

With wagmi

Wagmi exposes useSendCalls for the same flow:

Status tracking

wallet_getCallsStatus and wallet_showCallsStatus are not currently implemented in the Mini App host. Do not build a flow around either method. Read the transactionHash returned directly from wallet_sendCalls and, if you need a receipt, look it up with your own RPC client or waitForTransactionReceipt.

Atomic vs non-atomic

Set atomicRequired: true to require all calls land in a single transaction. With atomicRequired: false, the wallet may execute calls sequentially in separate transactions, useful when the user has a non-AA fallback. Startale’s smart accounts always execute atomically regardless.

Same primitive at the AA layer

wallet_sendCalls is the EIP-5792 wrapper. Under it, the SDK packs every entry of calls into a single ERC-4337 UserOperation and submits it through the bundler. If you skip the App SDK and work with @startale-scs/aa-sdk directly, you build the same batch by appending to the calls array on sendUserOperation. The execution semantics are identical in both layers.