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

# Register External Collection

> Import custom and/or third party contracts

<Note>
  The first section of this guide is EVM specific. For Solana, we support the metaplex standard. Importing a candy
  machine is very similar. Jump below for specific details about [importing a Solana candy
  machine](/payments/guides/register-collection#solana-candy-machine).
</Note>

## EVM Smart Contract Requirements

<Steps>
  <Step icon="circle-dot" iconType="duotone" title="ERC-721, ERC-721a, ERC-1155" />

  <Step icon="circle-dot" iconType="duotone" title="The mint function accepts address paramter and mints to that address" />

  <Step icon="circle-dot" iconType="duotone" title="Crossmint treasury address(es) must be able to call your function unlimited times" />
</Steps>

<Note>
  Please note that currently only importing EVM and SOL primary contracts is self-serve. If you wish to import EVM or
  SOL secondary contracts, or Aptos and Sui contracts, please [contact
  sales](https://www.crossmint.com/contact/sales?utm_source=devrel\&utm_medium=docs\&utm_campaign=backlinks). For Xion
  blockchain contracts, please refer to our [Xion Contract Requirements](/minting/advanced/xion-contracts)
  documentation.
</Note>

## Import a Custom Contract

<AccordionGroup>
  <Accordion title="Custom EVM contract">
    <Steps>
      <Step title="Navigate to Token collections and click `New collection`">
        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/D5YumPZsUxEgcQsX/images/console/collections/1-new-collection.jpg?fit=max&auto=format&n=D5YumPZsUxEgcQsX&q=85&s=f6c7f5a0bb5431cb4f9ebc6e0dfb75de" alt="New collections screenshot" width="3022" height="717" data-path="images/console/collections/1-new-collection.jpg" />
        </Frame>
      </Step>

      <Step title="Enter Collection Information">
        This information is displayed in the Hosted Checkout, Storefront, and Claim pages. You can edit it later.

        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/D5YumPZsUxEgcQsX/images/console/collections/2-collection-info.jpg?fit=max&auto=format&n=D5YumPZsUxEgcQsX&q=85&s=71f91e154aa5c76aa075fc0a2d6eb622" alt="Collection info screenshot" width="2806" height="1178" data-path="images/console/collections/2-collection-info.jpg" />
        </Frame>
      </Step>

      <Step title="Select `Import an existing contract` option">
        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/D5YumPZsUxEgcQsX/images/console/collections/3-import.jpg?fit=max&auto=format&n=D5YumPZsUxEgcQsX&q=85&s=f5bea70acb79accd29a72b6f341e2beb" alt="Import Collection screenshot" width="2062" height="724" data-path="images/console/collections/3-import.jpg" />
        </Frame>
      </Step>

      <Step title="Select the Blockchain your contract is deployed on">
        Remember, Crossmint has staging and production [environments](/introduction/platform/staging-vs-production). When working in the staging environment, choose the mainnet name. For example, if your contract is on the Polygon Amoy testnet, select Polygon.

        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/kUzbs9p82sNDIwVD/images/console/collections/4-select-chain.jpg?fit=max&auto=format&n=kUzbs9p82sNDIwVD&q=85&s=56f05f5f70bcbf149e9b5e52719ed40b" alt="Select blockchain screenshot" width="2304" height="718" data-path="images/console/collections/4-select-chain.jpg" />
        </Frame>
      </Step>

      <Step title="Select `Import my own contract` option">
        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/kUzbs9p82sNDIwVD/images/console/collections/5-contract-provider.jpg?fit=max&auto=format&n=kUzbs9p82sNDIwVD&q=85&s=6adedaa5ac8619ada54a8335cc924e5b" alt="Select contract provider screenshot" width="2292" height="432" data-path="images/console/collections/5-contract-provider.jpg" />
        </Frame>
      </Step>

      <Step title="Contract Address">
        Enter the address of your contract and the console will determine the contract type automatically.

        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/kUzbs9p82sNDIwVD/images/console/collections/6-contract-address.jpg?fit=max&auto=format&n=kUzbs9p82sNDIwVD&q=85&s=dd4623bdc12d604965afb095f0af4c7d" alt="Enter contract address screenshot" width="2000" height="664" data-path="images/console/collections/6-contract-address.jpg" />
        </Frame>
      </Step>

      <Step title="Proxy or Sales Contract (optional)">
        Notice in the screenshot that the example has the same contract address that was entered in previous step. This indicates a basic setup where the purchase function is within the regsitered NFT contract. The only reason to change this is if purchases should be sent to a different contract address that is not the same as the NFT contract.

        Most developers do not need to change this. If you are unsure, leave it as is. Transparent upgradeable contracts also do not need to use this setting and should use the beacon address in the previous step.

        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/kUzbs9p82sNDIwVD/images/console/collections/7-sales-contract.jpg?fit=max&auto=format&n=kUzbs9p82sNDIwVD&q=85&s=455dc00f41d0c74dde2ef701510f706b" alt="Sales contract option screenshot" width="2000" height="310" data-path="images/console/collections/7-sales-contract.jpg" />
        </Frame>
      </Step>

      <Step title="Contract ABI">
        As long as your contract is verified on the block explorer we can query the ABI automatically. If you have not verified your contract, you must enter the ABI manually.

        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/kUzbs9p82sNDIwVD/images/console/collections/8-contract-abi.jpg?fit=max&auto=format&n=kUzbs9p82sNDIwVD&q=85&s=bb3450632312c9dbdd0ea6415337b7ac" alt="Contract ABI section screenshot" width="2000" height="488" data-path="images/console/collections/8-contract-abi.jpg" />
        </Frame>
      </Step>

      <Step title="Mint Function Currency">
        Unless you specifically deployed a contract that supports USDC you must leave the native currency selected. If you are unsure, leave it as is.

        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/kUzbs9p82sNDIwVD/images/console/collections/9-currency.jpg?fit=max&auto=format&n=kUzbs9p82sNDIwVD&q=85&s=f613a6ad02b3636d8161fe7d392e3514" alt="Contract mint function currency section screenshot" width="2064" height="211" data-path="images/console/collections/9-currency.jpg" />
        </Frame>
      </Step>

      <Step title="Select Mint Function">
        If you selected the native currency in previous step this will be a very short list. If you have multiple mint functions in your contract that you want to accept payments for, you must register each one separately.

        <Note>USDC mint functions typically are NOT `payable`. Change currency selector to USDC to populate mint function list with valid options.</Note>

        The mint function must accept an address parameter and mint to that address. If your mint function lacks this you'll need to deploy a new contract or modify your existing contract.

        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/D5YumPZsUxEgcQsX/images/console/collections/10-mint-function.jpg?fit=max&auto=format&n=D5YumPZsUxEgcQsX&q=85&s=220b862ca880875d59894a7011ffe4be" alt="Contract mint function section screenshot" width="2064" height="207" data-path="images/console/collections/10-mint-function.jpg" />
        </Frame>
      </Step>

      <Step title="Parameter for recipient address">
        After the mint function has been selected this will be a short list built from the function parameters of type `address`. If you have multiple options here ensure you select the correct one. Doing this incorrectly will result in the purchased NFTs being sent to the wrong address and they likely will not be recoverable.

        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/D5YumPZsUxEgcQsX/images/console/collections/11-recipient-address.jpg?fit=max&auto=format&n=D5YumPZsUxEgcQsX&q=85&s=4cbbeed6406608973c21ada00515e950" alt="Contract mint function recipient address section screenshot" width="2064" height="195" data-path="images/console/collections/11-recipient-address.jpg" />
        </Frame>
      </Step>

      <Step title="Parameter for quantity">
        This will be a short list built from the function parameters of type `uint256`. If you have multiple options here ensure you select the correct one. Doing this incorrectly will result in the NFT checkout tools not being able to properly mint the correct quantity of NFTs.

        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/D5YumPZsUxEgcQsX/images/console/collections/12-nft-quantity.jpg?fit=max&auto=format&n=D5YumPZsUxEgcQsX&q=85&s=d2b993c4d8e3246461c1ee406be6bff9" alt="Contract mint function quantity parameter section screenshot" width="2064" height="386" data-path="images/console/collections/12-nft-quantity.jpg" />
        </Frame>
      </Step>

      <Step title="Review details and click `Register collection` to complete">
        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/D5YumPZsUxEgcQsX/images/console/collections/13-done-evm.jpg?fit=max&auto=format&n=D5YumPZsUxEgcQsX&q=85&s=49e8181ffa711cf05a5243104d5d1b61" alt="EVM registration complete screenshot" width="2646" height="1308" data-path="images/console/collections/13-done-evm.jpg" />
        </Frame>
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Solana Candy Machine">
    Crossmint supports Candy Machine v3. The initial setup is the same as above. The only difference is selecting Solana for the blockchain and entering a candy machine ID instead of a contract address.

    <Steps>
      <Step icon="4" title="Select Solana for the blockchain">
        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/kUzbs9p82sNDIwVD/images/console/collections/4-select-chain-solana.jpg?fit=max&auto=format&n=kUzbs9p82sNDIwVD&q=85&s=724a24019bf66769529a2c86d3dddd46" alt="Select Solana blockchain screenshot" width="2000" height="690" data-path="images/console/collections/4-select-chain-solana.jpg" />
        </Frame>
      </Step>

      <Step icon="5" title="Choose candy machine version and enter candy machine ID">
        Find the ID in the `cache.json` file in the folder where you deployed your Candy Machine

        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/kUzbs9p82sNDIwVD/images/console/collections/5-candy-machine.jpg?fit=max&auto=format&n=kUzbs9p82sNDIwVD&q=85&s=544a77a40eca91aa6b7d41214b011437" alt="Candy machine registration screenshot" width="2000" height="644" data-path="images/console/collections/5-candy-machine.jpg" />
        </Frame>
      </Step>

      <Step icon="6" title="Review details and click `Register collection` to complete">
        <Frame type="simple">
          <img src="https://mintcdn.com/crossmint-wallets-docs-2-5/kUzbs9p82sNDIwVD/images/console/collections/6-done-solana.jpg?fit=max&auto=format&n=kUzbs9p82sNDIwVD&q=85&s=cda00feddea408e14fbd7f04400cb379" alt="Candy machine registration complete screenshot" width="1650" height="817" data-path="images/console/collections/6-done-solana.jpg" />
        </Frame>
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

<Snippet file="collection-next-steps.mdx" />
