Paper offers 3 main ways to implement an allowlist, which depend on the type of contract that was used in Step1: Add a Smart Contract.
Signature Minting or Merkle roots
See the Code snippet in any of the React SDK components for how to use it with custom contract.
One-time link or React SDK with a Only-Paper Restricted Function
On the contract, your function should be restricted to only Paper so that users cannot go to the scanners themselves to mint
Signature Minting. See thirdweb's guide for more.
Note that you're required to use the
The whitelist solution in Candy Machine Works as intended.
Users will be required to have the whitelist token in an existing wallet and during checkout, the token will be transferred to us for use on behalf of the user if they are paying via crypto or credit card
If your allowlist data is stored off-chain, consider creating unique links that each only allow one purchase. Your checkout won't be publicly accessible, and buyers without a One-Time Purchase link will be redirected to your landing page. When creating a link, you can lock certain fields like walletAddress and email to ensure your purchase is made by the right buyer.
By allowing you to gate purchases, you can support the following behaviors (some may require disabling native mints):
- Use your own off-chain data for presale and allowlists
- Ensure a buyer can only make a certain number of purchases
In order to create a one-time purchase link, you will need to create a checkout. We recommend doing this by creating a API Checkout. We also recommend you to use Only-Paper Restricted Functions when using one-time purchase links to ensure that only Paper will be able to call your minting function. This endpoint will allow you to manage one-time purchase links directly from code. From here you should be able to do the following: