USDC Support

Many projects choose to price their NFTs using a stable coin to overcome the volatility typical of native cryptocurrencies. Crossmint supports USDC minting on Ethereum, Polygon, and Solana.


USDC Support Requires Manual Configuration for Ethereum & Polygon

Submit a ticket or contact us in discord to enable USDC support for your project. Be sure to include the clientId for your collection in the request.

Solana Guide for USDC Candy Machine Drop

Adding USDC support to your candy machine is handled entirely in your candy machine configuration. Crossmint will automatically detect the setup when you add credit card support to your collection. More details in the linked guide below:

Integrating Your Ethereum/Polygon USDC Contract With Crossmint

There are a few key differences between native cryptocurrency and USDC minting worth highlighting.

  • The mint function should be nonpayable
  • USDC is a 6 decimal token instead of 18 like Ethereum, MATIC, and many others.

For the time being it is necessary for Crossmint to explicitly enable USDC support on your collection. Please reach out to us on discord or [email protected] and include your clientId in the request. We can get it configured quickly for you.

Aside from that everything else is just like setting up any other ethereum or polygon collection. Keep in mind mind the totalPrice attribute in the mintConfig of your button code should be in units of USDC. So if your intended price is 100 USD then you will set totalPrice to 100 like so: totalPrice="100".



Crossmint sends transactions from a treasury account, but mints to the user's custodial wallet. Because of this your ERC 20 transfer function must request the funds from msg.sender instead of the address parameter. Below is an example mint function to help guide you.

function mintUSDC(address _to) public onlyCrossmint {
    // pre payment logic here
    // note that you need to transfer from msg.sender, NOT the _to address
    tokenInstance.safeTransferFrom(msg.sender, address(this), priceUSDC );

    // actual minting logic here

More details on setting up the button here: React | Vanilla-JS

Ethereum/Polygon USDC Token Addresses Table

USDC is simply an ERC-20 token. This means that you need to use the same token address that Crossmint does when testing your contracts, otherwise the token transfers and minting will not work. Below is the table of official addresses we are using.

NetworkUSDC Token Address
Ethereum Mainnet0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Ethereum Goerli Testnet0x98339D8C260052B7ad81c28c16C0b98420f2B46a
Polygon Mainnet0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174
Polygon Mumbai Testnet0xFEca406dA9727A25E71e732F9961F680059eF1F9