{"id":"ERC-5792","name":"Wallet Call API","status":"Final","chain":"both","category":{"id":"transaction-friction","name":"Transaction Friction","description":"Reducing clicks, signatures, and mental overhead"},"journeyStages":[{"id":"executing","name":"Executing Transactions","description":"Performing on-chain actions"}],"uxImpact":"Apps can request multiple calls executed atomically — approve+swap+stake in one wallet popup instead of three. Design implications: design multi-action confirmation screens showing all operations, indicate atomicity guarantees ('all or nothing'), show capability badges for wallet features, build paymaster URL configuration. Design decisions: how to present batched operations (list vs grouped), handle partial wallet support gracefully, balance information density in confirmation dialogs — too little is risky, too much causes fatigue. Referenced across 4 pain points — Signing Fatigue (High), Missing Signing Context (Medium), Redundant Token Approvals (High), and Token Approval Management (High). Batching via wallet_sendCalls is High priority.","hasDetailedContent":true,"content":{"id":"ERC-5792","summary":"ERC-5792 is the \"Wallet Call API\" — a standard way for dApps to send batched operations to wallets and discover what capabilities the wallet supports. Instead of guessing if a wallet can batch transactions or sponsor gas, dApps can ask. And wallets can execute multiple calls atomically. It bridges EIP-7702 and ERC-4337 capabilities to a consistent API.","applicability":{"whenToUse":["Your product addresses: dApps can't know what wallet supports.","Your product addresses: no standard for batched calls.","Your UI should wallet_getCapabilities() returns supported features.","You are designing a capability detection experience with visible states and recovery paths."],"whenToAvoid":["Check capabilities, fall back gracefully.","Hide unsupported features from UI.","Clear: \"If any fails, none execute\".","The flow is a single low-risk transfer where batching adds confusion."]},"designerTakeaways":["You can wallet_getCapabilities() returns supported features in the interface.","You can wallet_sendCalls() works across all supporting wallets in the interface.","You can wallet_getCallsStatus() for bundled operation status in the interface."],"problemsSolved":[{"problem":"dApps can't know what wallet supports","oldWay":"Try features, catch errors, guess based on wallet name","newWay":"wallet_getCapabilities() returns supported features","impact":"high"},{"problem":"No standard for batched calls","oldWay":"Each smart wallet has different batch interface","newWay":"wallet_sendCalls() works across all supporting wallets","impact":"high"},{"problem":"Can't check call status after submission","oldWay":"Poll blockchain, hope for the best","newWay":"wallet_getCallsStatus() for bundled operation status","impact":"medium"}],"uxPatterns":[{"name":"Capability Detection","description":"Check wallet features before offering them","mockup":"concept/session-permissions","userFlow":["dApp connects to wallet","Calls wallet_getCapabilities","Parses supported features","Shows/hides UI based on capabilities","Only offers what wallet supports"]},{"name":"Batched Transaction","description":"Multiple operations in one request","mockup":"concept/bundled-defi","userFlow":["dApp builds array of calls","Uses wallet_sendCalls","Wallet shows combined preview","User approves once","All execute atomically"]}],"uiComponents":[{"name":"CapabilityChecker","description":"Queries and displays wallet capabilities","states":["checking","ready","no-support"],"props":["walletProvider","onCapabilities"]},{"name":"BatchCallBuilder","description":"UI for building batched operations","states":["building","ready","submitting"],"props":["calls[]","onSubmit"]},{"name":"CallStatusTracker","description":"Shows status of batched call","states":["pending","confirmed","failed"],"props":["callId","onStatusChange"]}],"antiPatterns":[{"pattern":"Assuming all wallets support batching","why":"EOAs without 7702 can't batch","instead":"Check capabilities, fall back gracefully","severity":"critical"},{"pattern":"Not explaining atomicity","why":"Users don't understand all-or-nothing","instead":"Clear: \"If any fails, none execute\"","severity":"medium"},{"pattern":"Ignoring capability responses","why":"Offering features wallet doesn't support","instead":"Hide unsupported features from UI","severity":"high"}],"onMonad":[{"aspect":"Batch Execution","ethereum":"Batch confirms in 12+ seconds","monad":"Sub-second batch confirmation","designImplication":"Complex operations feel instant"}],"keyTakeaways":["ERC-5792 = standard wallet capability API","Always check capabilities before offering features","Batch calls execute atomically","Fall back gracefully for non-supporting wallets","Track batch status with wallet_getCallsStatus"],"technicalNotes":"ERC-5792 adds three methods: wallet_getCapabilities() returns supported features per chain, wallet_sendCalls({ calls[], capabilities }) submits batched operations, wallet_getCallsStatus(id) tracks completion. Capabilities include atomicBatch, paymasterService, auxiliaryFunds. Compatible with both EIP-7702 and ERC-4337 wallets."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-5792","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-5792","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-5792","markdown":"https://www.eipsfordesigners.com/standards/ERC-5792/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-5792/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-5792","official":"https://eips.ethereum.org/EIPS/eip-5792","discussion":"https://ethereum-magicians.org/search?q=ERC-5792"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}