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"
.
IMPORTANT
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.
Network | USDC Token Address |
---|---|
Ethereum Mainnet | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
Ethereum Goerli Testnet | 0x98339D8C260052B7ad81c28c16C0b98420f2B46a |
Polygon Mainnet | 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 |
Polygon Mumbai Testnet | 0xFEca406dA9727A25E71e732F9961F680059eF1F9 |
Updated 18 days ago