Note: Because modular wallets are proxy contracts, users’ wallet addresses
in block explorers are shown as
ERC1967Proxy instead of UpgradeableMSCA.Modular wallets only have a single version of the wallet contract available.
When an upgrade is available this page provides instructions on the
appropriate API calls to make to upgrade your wallets.Smart Contract Account wallets
You can upgrade both developer-controlled and user-controlled SCA wallets to newer SCA versions using the Wallet Upgrade API.- To upgrade a developer-controlled wallet, use
POST /developer/transactions/walletUpgrade. - To upgrade a user-controlled wallet, use
POST /user/transactions/walletUpgradeand follow the standard challenge approval flow.
Supported migration paths
| Source SCA Version | Destination SCA Version | Contract Function Used for Upgrade |
|---|---|---|
| circle_4337_v1 | circle_6900_singleowner_v2 | upgradeToAndCall(address,bytes) |
| circle_6900_singleowner_v1 | circle_6900_singleowner_v2 | upgradeTo(address) |
💡 Tip: Use the
scaCore query parameter in the GET /wallets endpoint
to fetch SCA wallets eligible for an upgrade.COMPLETE
state, the SCA version of the wallet is updated in the responses of the
GET /wallets/{id} or GET /wallets endpoints.
Special handling for circle_4337_v1 wallets
Due to onchain specific requirements, circle_4337_v1 wallets must be lazy
deployed before they can be upgraded. To trigger deployment, initiate an
outbound transfer or contract execution from the SCA wallet you want to
upgrade. See the Account Types page for more details
on SCA lazy deployment.
If you need to upgrade a circle_4337_v1 wallet on a testnet, send native
token funds to the wallet’s owner address. You can retrieve the owner
address using the
POST /contracts/query
endpoint.
Response Body
outputValues array contains the owner address,
which must receive the native token funds. Circle recommends sending enough
tokens to cover ~300,000 gas. Estimated costs:
- ETH-SEPOLIA: 300,000 gas * 30 Gwei (replace with current gas price) =
0.009 ETH - MATIC-AMOY: 300,000 gas * 150 Gwei (replace with current gas price) =
0.045 POL
Note: You can skip the native token funding step for mainnet
circle_4337_v1 wallets, as they have already received airdropped native
tokens to cover upgrade transaction fees. These wallets can be upgraded
immediately after lazy deployment.How the upgrade works
The wallet upgrade contract execution updates the logic contract address of the ERC-1967 proxy (the SCA wallet) by calling either:upgradeTo(addresss)upgradeToAndCall(addresss,bytes)