Skip to main content
EIP-5792 adds a small set of JSON-RPC methods that let dapps ask wallets for advanced capabilities — atomic batches, paymaster sponsorship, and conditional execution — without needing to understand ERC-4337 internals. The standard introduces:
  • wallet_getCapabilities
  • wallet_sendCalls
  • wallet_getCallsStatus
  • wallet_showCallsStatus
Support is rolling out across wallets. See the EIP-5792 ecosystem tracker for the current list. The Viem WalletClient returned by createWalletClientForWalletAccount exposes these methods directly.

Check capabilities

Use getCapabilities() to see which features the wallet supports for a given chain before sending calls.

Batch calls

sendCalls submits multiple calls atomically when the wallet supports it. Optionally include paymasterService capabilities to request gas sponsorship.

Track status

getCallsStatus returns the execution state for a batch. Poll it until the batch settles.
viem ≥ 2.28: waitForCallsStatus is available on the wallet client as a convenience wrapper that polls getCallsStatus internally and resolves once the batch reaches a terminal state. On older viem versions, poll getCallsStatus yourself in a loop with a delay.
showCallsStatus lets the wallet present a transaction status UI to the user — handy for relayer-style flows.

Notes

  • If the wallet doesn’t support EIP-5792, getCapabilities and sendCalls will throw or return empty capabilities. Always check capabilities first and fall back to a sequential sendTransaction loop.
  • Atomic batching is a wallet-level guarantee — the wallet decides whether to submit calls atomically, sequentially, or via account abstraction.
  • Paymaster sponsorship requires both wallet support and a configured paymaster URL. If you’re using ZeroDev for sponsorship, see the Gas Sponsorship Quickstart for a more direct ERC-4337 path.
Last modified on July 3, 2026