Skip to main content
Deprecation Notice

As of v1.61.0, Sale widget has been moved into the Commerce Widget. Please visit the new Primary sales page for details.

Primary Sales


What is a Primary Sale?

A Primary Sale is the direct sale of an item to a customer in exchange for payment.

In the web3 world, this specifically refers to minting an item for the first time to a customer upon receiving payment.

This is different from Secondary Sales, where customers engage in trading with each other on a marketplace. For Secondary Sales, Immutable offers products such as the Orderbook and Checkout Widgets.

Typically, you will have to cater the following components in a Primary Sale:

These can be a lot to build, so Immutable tries to save you time with our Primary Sales product.

How does Immutable help?

Immutable provides a Primary Sales Widget that provides access to third party tools to handles the payment flows, allowing your users to pay for an item using crypto or fiat currencies. Our solution ensures items are minted directly to the users wallet, and manages collecting the fees. All in a secure, single on-chain transaction.

  • Fiat Payments: Allows users to pay by Debit/Credit Card, Google Pay or Apple Pay. Funds will be settled to you in USDC in your Immutable zkEVM wallet.

  • Coin Payments: Allows users to pay with cryptocurrency funds on Ethereum L1 or Immutable zkEVM, by connecting their wallet.

Users can pay by connecting their mobile wallets via WalletConnect, and any other EIP-1193 compliant wallets installed in their browsers, such as MetaMask, Coinbase Wallet and Trust Wallet.

🆓Free mints!
Are you doing a free mint? You can setup a free mint by creating a product with price as 0 and adding a limit to control how many items a wallet can receive. You can also setup allowlists to control which wallets are able to mint the product. You can read our guide to free mints here for various options available to you on Immutable zkEVM.

Multiple currencies

Payments can be made with multiple ERC20 tokens, any ERC20 deployed on Immutable's zkEVM could be used. During primary sale flow, buyers have the option to select a currency they want to pay with. And, if they have insufficient funds, they may still be prompted to Swap their tokens, otherwise they can still pay with fiat.

By default the base currency for purchases will be USDC. However, this is a setting that can be changed by the seller. Please refer to the configuration section for more details.

ERC20 eligibility

To be eligible for payments an ERC20 token must:

  • Be deployed on Immutable's zkEVM
  • Be whitelisted by Immutable. Use the following form to request your token be listed.
  • Be added to currencies list in primary sales backend configuration
  • Optionally:
    • Have a liquidity pair with USDC on QuickSwap. This allows SWAP options for users with insufficient funds.
    • Be listed on Transak. This allows users to buy the token directly with fiat using OnRamp widget.
📒About QuickSwap Liquidity
For example, your store accepts payments in USDC and $XYZ token.

However, some customers may want to pay with other coins, such as their $ABC token. This will only be possible via swap if there is liquidity in QuickSwap for $ABC to either USDC or $XYZ.

USDC is the default currency for payments, since it has the most liquidity with other tokens, please ensure the tokens you wish to accept payments with have token pairs.

For more, please refer to the QuickSwap's liquidity provider guide.

Available wallets

Users can pay by connecting their Immutable Passport wallet, mobile wallets via WalletConnect, and any other EIP-1193 compliant wallets installed in their browsers, such as MetaMask, Coinbase Wallet, and Trust Wallet, and others are supported.

🤩Gasless transactions!
Do you know that users paying with Immutable Passport wallets could have their gas fees sponsored?
Learn more about the Gas sponsorship for Gamers program.

Transaction limits

Maximum number of items that can be purchased in a single transaction is 350. Transactions with a higher number of items will fail due to hitting the gas limit.

💡Note
This limit is not enforced, however it is recommended. To handle larger transactions, you can split the items into multiple transactions.

Primary Sale flow

Here is a high level preview of a primary sale widget flow:

A sequence diagram is shown below: