> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crossmint.com/llms.txt
> Use this file to discover all available pages before exploring further.

# NFT Drops Priced in USDC

> How to set up Crossmint if your collection is denominated in USDC

<Tip>
  By denominating your collection in USDC, you can eliminate price volatility, and offer a more accessible experience
  to users.
</Tip>

## Ensure you are using a supported USDC token

First of all, make sure your collection is denominated in one of the USDC token addresses supported by Crossmint.

<div className="overflow-x-auto max-w-full">
  <table className="table table-auto">
    <thead>
      <tr>
        <th>Chain</th>
        <th>Network</th>
        <th>USDC Token Address</th>
        <th>USDXM Token Address</th>
      </tr>
    </thead>

    <tbody>
      {[
                      {
                          chain: "Ethereum",
                          logo: "ethereum",
                          network: "Mainnet",
                          usdc: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
                          usdxm: null,
                      },
                      {
                          chain: "Ethereum",
                          logo: "ethereum",
                          network: "Sepolia",
                          usdc: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
                          usdxm: "0x14196F08a4Fa0B66B7331bC40dd6bCd8A1dEeA9F",
                      },
                      {
                          chain: "Polygon",
                          logo: "polygon",
                          network: "Mainnet",
                          usdc: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
                          usdxm: null,
                      },
                      {
                          chain: "Polygon",
                          logo: "polygon",
                          network: "Amoy",
                          usdc: "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582",
                          usdxm: "0x14196F08a4Fa0B66B7331bC40dd6bCd8A1dEeA9F",
                      },
                      {
                          chain: "Base",
                          logo: "base",
                          network: "Mainnet",
                          usdc: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                          usdxm: null,
                      },
                      {
                          chain: "Base",
                          logo: "base",
                          network: "Base Sepolia",
                          usdc: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
                          usdxm: "0x14196F08a4Fa0B66B7331bC40dd6bCd8A1dEeA9F",
                      },
                      {
                          chain: "Arbitrum",
                          logo: "arbitrum",
                          network: "Mainnet",
                          usdc: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
                          usdxm: null,
                      },
                      {
                          chain: "Arbitrum",
                          logo: "arbitrum",
                          network: "Arbitrum Sepolia",
                          usdc: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d",
                          usdxm: "0x14196F08a4Fa0B66B7331bC40dd6bCd8A1dEeA9F",
                      },
                      {
                          chain: "Arbitrum Nova",
                          logo: "arbitrumnova",
                          network: "Mainnet",
                          usdc: "0x750ba8b76187092B0D1E87E28daaf484d1b5273b",
                          usdxm: null,
                      },
                      {
                          chain: "Arbitrum Nova",
                          logo: "arbitrumnova",
                          network: "Testnet",
                          usdc: null,
                          usdxm: "0x14196F08a4Fa0B66B7331bC40dd6bCd8A1dEeA9F",
                      },
                      {
                          chain: "Sei",
                          logo: "sei",
                          network: "Mainnet",
                          usdc: "0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392",
                          usdxm: null,
                      },
                      {
                          chain: "Sei",
                          logo: "sei",
                          network: "Testnet",
                          usdc: null,
                          usdxm: "0x14196F08a4Fa0B66B7331bC40dd6bCd8A1dEeA9F",
                      },
                      {
                          chain: "Solana",
                          logo: "solana",
                          network: "Mainnet",
                          usdc: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
                          usdxm: null,
                      },
                      {
                          chain: "Solana",
                          logo: "solana",
                          network: "Devnet",
                          usdc: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
                          usdxm: "z23BZbAiFRb6u5CBH64XjZPUud6dP6y2ZuKoYSM4LCY",
                      },
                  ].map((item, index) => (
                      <tr key={index}>
                          <td className="not-prose align-middle">
                              <table>
                                  <tr>
                                      <td>
                                          <div className="w-6 h-6 flex justify-center items-center">
                                              <img
                                                  src={`https://mintlify.s3.us-west-1.amazonaws.com/crossmint/images/logos/${item.logo}-black.svg`}
                                                  alt={`${item.chain} logo`}
                                                  className="mr-3 block dark:hidden object-contain w-full h-full"
                                              />
                                              <img
                                                  src={`https://mintlify.s3.us-west-1.amazonaws.com/crossmint/images/logos/${item.logo}-white.svg`}
                                                  alt={`${item.chain} logo`}
                                                  className="mr-3 hidden dark:block object-contain w-full h-full"
                                              />
                                          </div>
                                      </td>
                                      <td className="px-4">{item.chain}</td>
                                  </tr>
                              </table>
                          </td>
                          <td>{item.network}</td>
                          <td>
                              {item.usdc ? (
                                  <code>{item.usdc}</code>
                              ) : (
                                  <span>Not available</span>
                              )}
                          </td>
                          <td>
                              {item.usdxm ? (
                                  <code>{item.usdxm}</code>
                              ) : (
                                  <span>Not available</span>
                              )}
                          </td>
                      </tr>
                  ))}
    </tbody>
  </table>
</div>

<Note>
  USDC.e is only supported on previously registered integrations on Polygon mainnet. Please use the native USDC
  address for new projects.
</Note>

<Check>
  If you need some testnet USDC you can mint it freely from the contract or from this faucet app that uses the same
  testnet token contracts as the Checkout tools.

  [Crossmint Testnet USDXM Faucet](https://usdc-faucet.vercel.app/)
</Check>

## Validate your collection meets the requirements

<Tabs>
  <Tab title="EVM">
    In addition to the standard requirements, keep in mind:

    1. **The mint function should be `nonpayable`.**
    2. **The USDC token has 6 decimals** instead of 18 like ETH, Matic, and most other tokens.
    3. **The `totalPrice` attribute in the `callData` of your `lineItems` should be in units of USDC**. If your intended price is 100 USD, then you will set `totalPrice` to `100` e.g. `totalPrice="100"`.
    4. **Your ERC-20 transfer call must request the funds from `msg.sender`** instead of the address parameter. This allows Crossmint to pay from our fleet of treasury wallets and deliver the NFTs directly to the user's wallet. See an example mint function below.

    ```solidity Solidity theme={null}
    function mintUSDC(address _to) public {
      // pre payment logic here

      // note that you need to transfer from msg.sender, NOT the _to address
      tokenInstance.transferFrom(msg.sender, address(this), priceUSDC );

      // actual minting logic here
    }
    ```

    ```tsx theme={null}
    <CrossmintProvider apiKey="_YOUR_CLIENT_API_KEY_">
        <CrossmintEmbeddedCheckout
            lineItems={{
                collectionLocator: "crossmint:_YOUR_COLLECTION_ID_",
                callData: {
                    totalPrice: "100", // 100 USDC
                    quantity: 1,
                }
            }}
        />
    </CrossmintProvider>
    ```

    <Note>The `totalPrice` attribute in the `callData` of your `lineItems` should be in units of USDC. If your intended price is 100 USD, then you will set `totalPrice` to `100` e.g. `totalPrice="100"`.</Note>

    <Accordion title="Using a thirdweb contract?">
      Add a claim phase with currency type `USDC`. In staging. you must use `Custom ERC-20` and specify one of the token address listed above. In mainnet, you should select the default USDC option.
    </Accordion>
  </Tab>

  <Tab title="Solana">
    Denominate your candy machine on USDC and Crossmint will automatically detect it. You can learn how on this [guide](https://medium.com/crossmint-tech/how-to-create-a-fixed-price-usdc-nft-drop-on-solana-2ab251e61384).
  </Tab>
</Tabs>
