> For a complete page index, fetch https://docs.transak.com/llms.txt # How to Add a NFT Smart Contract in the Dashboard and Create a contractId Use this guide to add your NFT smart contract in the Transak Dashboard and generate a `contractId` for NFT Checkout. ## What is `contractId`? `contractId` is a unique identifier for your approved smart contract. You must pass this value when creating an NFT Checkout widget session. **`contractId`** `string` — required Unique identifier for your whitelisted smart contract address and network combination. --- ## Prerequisites * Access to the [Transak Partner Dashboard](https://dashboard.transak.com/) * The target smart contract address * The target EVM network * The contract ABI for calldata generation NFT Checkout supports custom smart contracts on EVM-compatible chains. For **production approval**, Transak may review your contract and audit details before allowing it to be used live. ## Step 1: Open NFT Checkout in the Dashboard #### Log in to the dashboard Go to [dashboard.transak.com](https://dashboard.transak.com/) and sign in. #### Select the correct environment Choose **Staging** or **Production** from the environment selector. #### Open NFT Checkout Go to the **Products** section and open **NFT Checkout**. ## Step 2: Add your custom smart contract Submit the required contract details in the dashboard. * Smart contract address * Network / chain * Collection or project details * Any supporting metadata requested by the dashboard flow For production, keep your contract verification and audit documentation ready if requested during review. ## Step 3: Wait for contract approval The contract must be whitelisted before it can be used in NFT Checkout. | Environment | Expected behavior | | -------------- | ----------------------------------------- | | **Staging** | Used for testing and faster validation | | **Production** | Subject to Transak review before live use | If possible, verify the contract on the relevant block explorer before requesting production approval. This generally makes review easier. ## Step 4: Copy the generated `contractId` Once the contract is approved in the dashboard, Transak generates a `contractId` for that contract and network pair. Save this value because you will need it in your widget session payload. ## Step 5: Generate calldata for your contract `contractId` is required, but it is not enough by itself. NFT Checkout also requires `calldata`. Use the dedicated guide for this part: * [How to Generate Calldata for NFT Checkout](/guides/how-to-generate-calldata-for-nft-checkout) Important rules: * Encode calldata from the ABI of the implementation contract if you use a proxy * If your function accepts `to`, `recipient`, or `buyer`, use Transak's NFT Checkout smart contract address for that chain instead of the end user's wallet address ## Step 6: Use `contractId` in Create Widget URL Pass `contractId` inside `widgetParams` together with the other NFT Checkout fields. ```bash curl --request POST \ --url https://api-gateway-stg.transak.com/api/v2/auth/session \ --header 'accept: application/json' \ --header 'access-token: YOUR_ACCESS_TOKEN' \ --header 'content-type: application/json' \ --data '{ "widgetParams": { "apiKey": "YOUR_API_KEY", "referrerDomain": "yourdomain.com", "walletAddress": "USER_WALLET_ADDRESS", "isNFT": true, "contractId": "YOUR_CONTRACT_ID", "cryptoCurrencyCode": "ETH", "estimatedGasLimit": 250000, "calldata": "0x...", "nftData": [ { "imageURL": "https://example.com/nft.png", "nftName": "My NFT", "collectionAddress": "0x8a20e9e8e736643161ce6a2fe8dd8dd62050cd1e", "tokenID": ["1"], "price": [0.05], "quantity": 1, "nftType": "ERC721" } ] } }' ``` > Submit your NFT smart contract for review and generate a contractId to use with NFT Checkout