EVM contracts

Register an Ethereum or Polygon smart contract

If you haven't deployed a smart contract yet, this is the time! Here are tutorials for Ethereum and Polygon.

Once you have your smart contract ready:

🀝 Check it meets our requirements

  1. Your contract must be ERC-721, ERC-721A, or ERC-1155 compliant.
  2. The minting function must allow minting directly to an address different than the one which invoked the contract. And it must contain at least one parameter that specifies that recipient address.
  3. A single address must be able to call the mint function unlimited times but does not need to be able to hold unlimited NFTs.

If your contract doesn't meet criteria 1 or 2, reach out to us. We can probably still make it work, it may just require some manual work from our side.

πŸ”Œ Register your contract

From the console on the Payments tab, click on your collection and then on Contract registration. Paste your contract address and the rest of fields should update automatically. Edge cases may not be processed correctly, so please verify everything is in order:

πŸ”Ž Appendix: How to obtain your contract information

Example of minting function:

// save as property of contract
  address public crossmintAddress;

  function crossmint(address _to) public payable {
    require(mintPrice == msg.value, "Incorrect value sent");
    require(_tokenIdCounter.current() + 1 <= maxSupply, "No more left");
    // NOTE THAT the address is different for ethereum, polygon, and mumbai
    // ethereum (all)  = 0xdab1a1854214684ace522439684a145e62505233 
    // polygon mainnet = 0x12A80DAEaf8E7D646c4adfc4B107A2f1414E2002
    // polygon mumbai  = 0xDa30ee0788276c093e686780C25f6C9431027234  
    require(msg.sender == crossmintAddress, 
      "This function is for Crossmint only."

    uint256 newTokenId = _tokenIdCounter.current();

    _safeMint(_to, newTokenId);
  // include a setting function so that you can change this later
  function setCrossmintAddress(address _crossmintAddress) public onlyOwner {
    crossmintAddress = _crossmintAddress;

Note that the mint function may have any name and contain any number of additional parameters as long as it meets the requirements listed above.

Grabbing the ABI section for your minting function


ABI Update

Previously, we’ve requested only a specific portion of your ABI. We now require the full ABI.

When you compile your smart contract there will be a corresponding abi file with an .abi or .json extension.

Inside this file, you'll see an array called abi which contains various objects. Here's an example of what your abi file will look like, but yours might have more objects.

// Example generated abi file for smart contract

Now copy that object, and paste it into the ABI section for mint function field on the developer console.


Specifying the remaining parameters

After entering your ABI function, you will see in a dropdown all the options where you can easily choose the recipient address parameter and the NFT amount mint function argument.

Double check that both are correct, otherwise you will have to register the contract from scratch, as both fields are immutable.


What’s Next