Setting up COTI Snap with your MetaMask wallet
Last updated: May 2026 Estimated time: 5 minutes Requirements: MetaMask (desktop), COTI Mainnet connection
Stage 1 — Install the COTI Snap
What you’ll need
MetaMask wallet (desktop browser extension)
Access to the official COTI Snap install link
Mobile browsers are not supported yet.
Step 1 — Connect your wallet
Navigate to metamask.coti.io.
Click Connect Wallet.
MetaMask will open a prompt asking:

This step allows MetaMask to enable private token support through the Snap.
Step 2 — Install the COTI Snap
Click Install COTI MetaMask Snap.
If you don’t already have the Snap installed, MetaMask will prompt you automatically.
Approve the installation. \

Step 3 — Approve connection
MetaMask will ask for permission to connect the Snap to your wallet.
Click Approve when prompted.

Step 4 — Choose your account and connect
Select the account you wish to use with the Snap (recommended: your COTI Mainnet account) and click Connect.
You’ve successfully added the COTI Snap to MetaMask!
Stage 2 — View your COTI Private Token balances
Step 5 — Confirm Snap installation
In MetaMask, click your Profile icon → Settings → Snaps.
You should now see COTI Snap listed and active.\

\

Step 6 — Onboard your account
In MetaMask, click Onboard Account.
MetaMask will open a popup to register your account with the Snap.
Click Confirm when prompted. \

Step 7 — Sign and authorize
MetaMask will display a Signature Request popup. Click Confirm to authorize the onboarding. The message may appear encrypted — this is expected. This simply verifies your ownership and uses a small amount of COTI for gas. \

Step 8 — Approve the connection
MetaMask will display the request from snap.coti.io on the COTI Mainnet.
Click Confirm to proceed.

Step 9 — Grant AES key access
The COTI app will now request access to your AES Key — used for decrypting your private balances.
Click Request, and when MetaMask pops up, choose Approve.
Without this step, you can hold private tokens, but you won’t be able to view balances.

Step 10 — Launch the dApp
Click Launch dApp to open the COTI Snap application and view your private token balances.\

You’ve completed Stage 2 — your COTI Snap is live and connected!
Stage 3 — Send and Receive Private Tokens
Private ERC-20 tokens on COTI are not standard ERC-20s — they include encrypted data and special logic. Some wallet or explorer behaviors may differ from standard tokens.
Step 13 — Import your private token
In MetaMask Snap, click Import Tokens.
Paste the private token’s contract address
Click Next → Import and confirm in MetaMask.\

Why MetaMask can show a very large “balance” for private ERC-20 tokens
Private ERC-20 (p.ERC-20) tokens are interface-compatible with standard ERC-20 (for example, MetaMask can import them using the contract address). The on-chain balanceOf value is not a human-readable token amount in the same way as for a normal ERC-20: it encodes private balance data (for example, ciphertext or other packed representation).
The main MetaMask extension still treats balanceOf like a plain decimal integer. When that value is actually encrypted or encoded data (often a large hex-like payload), MetaMask interprets those bytes as one huge decimal number. That is why you may see an extremely long number next to the token in the default MetaMask Assets list — it is not your real spendable balance shown as digits; it is that encoded value displayed as if it were a normal balance.
Where to see the real private balance: use the COTI Snap dApp (for example via metamask.coti.io), where the Snap decrypts and displays the correct amount (for example 5 p.USDC.e in the privacy UI vs. a nonsensical long number in the extension).

balanceOf as a plain ERC-20 amount.Step 14 — View token details
In the COTI Snap dApp, open the token to see details and the decrypted balance. The main MetaMask Assets list may still show a misleading huge number for private tokens (see the note above); rely on the Snap UI for the amount you can actually use.\

Step 15 — Send your private token
Click Send Token in the COTI dApp or Snap interface.
Enter the recipient’s address and confirm.
Approve the request in MetaMask.

The transaction is now live on-chain — encrypted and private.
Last updated
Was this helpful?