askill
celo-stablecoins

celo-stablecoinsSafety 88Repository

Working with Celo's stablecoin ecosystem. Use when building with USDm, EURm, USDC, USDT, or regional Mento stablecoins on Celo.

5 stars
1.2k downloads
Updated 2/4/2026

Package Files

Loading files...
SKILL.md

Celo Stablecoins

This skill covers working with stablecoins on the Celo blockchain, including Mento stablecoins and other major stablecoins.

When to Use

  • Reading stablecoin balances
  • Transferring stablecoins
  • Building payment applications
  • Working with regional currencies
  • Integrating USDC or USDT on Celo

Stablecoin Categories

Mento Stablecoins

Mento Protocol provides decentralized stablecoins pegged to various fiat currencies:

SymbolCurrencyMainnet Address
USDmUS Dollar0x765de816845861e75a25fca122bb6898b8b1282a
EURmEuro0xd8763cba276a3738e6de85b4b3bf5fded6d6ca73
BRLmBrazilian Real0xe8537a3d056da446677b9e9d6c5db704eaab4787
XOFmWest African CFA Franc0x73F93dcc49cB8A239e2032663e9475dd5ef29A08
KESmKenyan Shilling0x456a3D042C0DbD3db53D5489e98dFb038553B0d0
PHPmPhilippine Peso0x105d4A9306D2E55a71d2Eb95B81553AE1dC20d7B
COPmColombian Peso0x8a567e2ae79ca692bd748ab832081c45de4041ea
GBPmBritish Pound0xCCF663b1fF11028f0b19058d0f7B674004a40746
CADmCanadian Dollar0xff4Ab19391af240c311c54200a492233052B6325
AUDmAustralian Dollar0x7175504C455076F15c04A2F90a8e352281F492F9
ZARmSouth African Rand0x4c35853A3B4e647fD266f4de678dCc8fEC410BF6
GHSmGhanaian Cedi0xfAeA5F3404bbA20D3cc2f8C4B0A888F55a3c7313
NGNmNigerian Naira0xE2702Bd97ee33c88c8f6f92DA3B733608aa76F71
JPYmJapanese Yen0xc45eCF20f3CD864B32D9794d6f76814aE8892e20
CHFmSwiss Franc0xb55a79F398E759E43C95b979163f30eC87Ee131D

Centralized Stablecoins

SymbolIssuerMainnet AddressDecimals
USDCCircle0xcebA9300f2b948710d2653dD7B07f33A8B32118C6
USDTTether0x48065fbbe25f71c9282ddf5e1cd6d6a887483d5e6

Other Stablecoins

SymbolIssuerCurrencyMainnet Address
vEURVNXEuro0x9346f43c1588b6df1d52bdd6bf846064f92d9cba
vGBPVNXBritish Pound0x7ae4265ecfc1f31bc0e112dfcfe3d78e01f4bb7f
vCHFVNXSwiss Franc0xc5ebea9984c485ec5d58ca5a2d376620d93af871
USDMMountain ProtocolUS Dollar (yield-bearing)0x59D9356E565Ab3A36dD77763Fc0d87fEaf85508C
USDAAngleUS Dollar (yield-bearing)0x0000206329b97DB379d5E1Bf586BbDB969C63274
EURAAngleEuro (yield-bearing)0xC16B81Af351BA9e64C1a069E3Ab18c244A1E3049
USDGLOGlo FoundationUS Dollar (impact-driven)0x4f604735c1cf31399c6e711d5962b2b3e0225ad3
BRLABRLA DigitalBrazilian Real0xfecb3f7c54e2caae9dc6ac9060a822d47e053760
COPMMinteoColombian Peso0xC92E8Fc2947E32F2B574CCA9F2F12097A71d5606
G$GoodDollarUBI Token0x62b8b11039fcfe5ab0c56e502b1c372a3d2a9c7a

Testnet Addresses (Celo Sepolia)

SymbolTestnet Address
USDm0xdE9e4C3ce781b4bA68120d6261cbad65ce0aB00b
EURm0xA99dC247d6b7B2E3ab48a1fEE101b83cD6aCd82a
BRLm0x2294298942fdc79417DE9E0D740A4957E0e7783a
XOFm0x5505b70207aE3B826c1A7607F19F3Bf73444A082
KESm0xC7e4635651E3e3Af82b61d3E23c159438daE3BbF
PHPm0x0352976d940a2C3FBa0C3623198947Ee1d17869E
COPm0x5F8d55c3627d2dc0a2B4afa798f877242F382F67
GBPm0x85F5181Abdbf0e1814Fc4358582Ae07b8eBA3aF3
CADm0xF151c9a13b78C84f93f50B8b3bC689fedc134F60
AUDm0x5873Faeb42F3563dcD77F0fbbdA818E6d6DA3139
ZARm0x10CCfB235b0E1Ed394bACE4560C3ed016697687e
GHSm0x5e94B8C872bD47BC4255E60ECBF44D5E66e7401C
NGNm0x3d5ae86F34E2a82771496D140daFAEf3789dF888
JPYm0x85Bee67D435A39f7467a8a9DE34a5B73D25Df426
CHFm0x284E9b7B623eAE866914b7FA0eB720C2Bb3C2980
USDT0xd077A400968890Eacc75cdc901F0356c943e4fDb

Reading Balances

Using viem

import { createPublicClient, http, formatUnits } from "viem";
import { celo } from "viem/chains";

const publicClient = createPublicClient({
  chain: celo,
  transport: http("https://forno.celo.org"),
});

const ERC20_ABI = [
  {
    name: "balanceOf",
    type: "function",
    stateMutability: "view",
    inputs: [{ name: "account", type: "address" }],
    outputs: [{ type: "uint256" }],
  },
  {
    name: "decimals",
    type: "function",
    stateMutability: "view",
    inputs: [],
    outputs: [{ type: "uint8" }],
  },
] as const;

// USDm (18 decimals)
const USDm = "0x765de816845861e75a25fca122bb6898b8b1282a";

const balance = await publicClient.readContract({
  address: USDm,
  abi: ERC20_ABI,
  functionName: "balanceOf",
  args: ["0xYourAddress"],
});

console.log("USDm Balance:", formatUnits(balance, 18));

// USDC (6 decimals)
const USDC = "0xcebA9300f2b948710d2653dD7B07f33A8B32118C";

const usdcBalance = await publicClient.readContract({
  address: USDC,
  abi: ERC20_ABI,
  functionName: "balanceOf",
  args: ["0xYourAddress"],
});

console.log("USDC Balance:", formatUnits(usdcBalance, 6));

Transferring Stablecoins

Using viem

import { createWalletClient, http, parseUnits } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { celo } from "viem/chains";

const account = privateKeyToAccount("0xYourPrivateKey");

const walletClient = createWalletClient({
  account,
  chain: celo,
  transport: http("https://forno.celo.org"),
});

const ERC20_ABI = [
  {
    name: "transfer",
    type: "function",
    stateMutability: "nonpayable",
    inputs: [
      { name: "to", type: "address" },
      { name: "amount", type: "uint256" },
    ],
    outputs: [{ type: "bool" }],
  },
] as const;

const USDm = "0x765de816845861e75a25fca122bb6898b8b1282a";

// Transfer 10 USDm
const hash = await walletClient.writeContract({
  address: USDm,
  abi: ERC20_ABI,
  functionName: "transfer",
  args: ["0xRecipientAddress", parseUnits("10", 18)],
});

console.log("Transaction hash:", hash);

Transfer USDC (6 decimals)

const USDC = "0xcebA9300f2b948710d2653dD7B07f33A8B32118C";

// Transfer 10 USDC (note: 6 decimals)
const hash = await walletClient.writeContract({
  address: USDC,
  abi: ERC20_ABI,
  functionName: "transfer",
  args: ["0xRecipientAddress", parseUnits("10", 6)],
});

Using cast (Foundry)

# Check USDm balance
cast call 0x765de816845861e75a25fca122bb6898b8b1282a \
  "balanceOf(address)(uint256)" \
  0xYourAddress \
  --rpc-url https://forno.celo.org

# Transfer USDm
cast send 0x765de816845861e75a25fca122bb6898b8b1282a \
  "transfer(address,uint256)" \
  0xRecipientAddress \
  10000000000000000000 \
  --rpc-url https://forno.celo.org \
  --private-key $PRIVATE_KEY

Decimal Handling

Token TypeDecimals1 Token in Wei
Mento (USDm, EURm, etc.)181000000000000000000
USDC61000000
USDT61000000

Always check the decimals of a token before formatting or parsing amounts.

Getting Test Tokens

  1. Get CELO from faucet: https://faucet.celo.org
  2. Swap CELO for stablecoins on Mento: https://app.mento.org

Additional Resources

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

74/100Analyzed 2/24/2026

Comprehensive technical reference for Celo stablecoins with well-organized token address tables, working code examples (viem, cast), and clear usage guidance. Scores well on clarity, safety, and reusability. Slightly reduced actionability due to missing environment setup instructions and troubleshooting. Located in dedicated skills folder with proper metadata. High-density reference content with accurate contract addresses.

88
82
78
72
68

Metadata

Licenseunknown
Version-
Updated2/4/2026
Publishercelo-org

Tags

apitesting