BlockchainAppMaker Get a quote

NFT

How to Build a Cardano NFT Marketplace

A Cardano NFT marketplace lists and sells NFTs that the Cardano ledger tracks as native assets, so no token contract like ERC-721 is involved. This guide explains how Cardano NFTs are minted, how listing contracts work in the eUTxO model, which parts a marketplace needs, and what changed after JPG Store closed in May 2026.

What a Cardano NFT is

A Cardano NFT is a native asset with a quantity of one. The ledger moves native assets the same way it moves ADA, so a wallet sends an NFT in an ordinary transaction output and no contract call takes place.

Every native asset belongs to a minting policy, a script whose hash becomes the asset's policy ID. The policy decides who can mint or burn tokens, and an NFT is identified by its policy ID plus its asset name.

Many collections use a simple native script as their policy, which says that one key may mint, but only before a set slot. After that slot, nobody can mint more tokens under the policy, and a buyer can read the policy and confirm that the collection has a fixed supply.

Cardano has no token approval step, so the "approve all" pattern that phishing sites abuse on EVM chains does not exist here. A user can still lose an NFT by signing a malicious transaction, so the wallet's transaction preview matters.

The minimum ADA rule

Every output on Cardano must hold some ADA. The amount is the output's size in bytes plus a fixed overhead, multiplied by a protocol parameter called coinsPerUTxOByte. The Cardano documentation explains the formula. An output that holds one NFT usually needs around 1 to 1.5 ADA.

Wallets add this ADA deposit to each NFT they send, and the receiver gets it back when they spend the output. A marketplace interface should show the deposit apart from the price and the network fee, because users often read it as a hidden charge.

CIP-25 and CIP-68 metadata

Cardano Improvement Proposals (CIPs) define how NFT metadata is stored, and the CIP repository holds the full text of each standard. Most Cardano NFTs follow CIP-25 or CIP-68.

CIP-25CIP-68
Where the metadata is storedTransaction metadata with label 721, inside the minting transactionA datum on a separate reference token (label 100), held at an address the issuer chooses
Can a smart contract read it?No. A script cannot see transaction metadata.Yes. A Plutus script can read the datum.
Can it change?Only by a new mint transaction. Indexers use the latest mint transaction.Yes, if the script that holds the reference token allows updates
Typical useStatic art and profile picture collectionsGame items, dynamic NFTs, and contracts that check traits

A CIP-68 NFT is a pair of tokens. The user token has label 222 and sits in the holder's wallet, and the reference token has label 100 and carries the metadata datum. If the reference token sits at an unspendable script, the metadata can never change. The CIP-68 text also defines label 333 for fungible tokens and label 444 for rich fungible tokens.

A marketplace indexer has to read both standards, because most older collections use CIP-25, and many game and utility collections use CIP-68.

How listing contracts work in the eUTxO model

Cardano uses the extended UTxO (eUTxO) model, in which a contract does not hold a balance sheet. Instead, a validator script decides whether a transaction may spend an output that sits at the script's address.

A listing works in three steps:

  1. List. The seller sends the NFT to the marketplace validator's address. The output's datum records the seller's address, the price, and any marketplace fee and creator royalty.
  2. Buy. The buyer builds a transaction that spends the listing output. The validator only approves the transaction if it pays the seller, the marketplace and the creator the amounts in the datum.
  3. Cancel. The seller signs a transaction that spends the output back to their own wallet.

Each listing is a separate output, so many buyers can purchase different NFTs in the same block without blocking each other. Cardano's known concurrency problem appears only when many users must spend one shared output, such as a liquidity pool or a single order book. Collection offers and pool-style features use batching or off-chain order matching to avoid that problem.

Validators are written in Aiken or in Plinth, the Haskell-based language formerly called Plutus Tx. Both compile to Untyped Plutus Core, which Cardano nodes run. Aiken is now the common choice for new validators. Aiken scripts tend to be small, and since the transaction fee depends on script size and execution units, a smaller script lowers the fee.

Plutus V3 went live on mainnet with the Chang hard fork in 2024. Aiken versions from 1.1.17 onward target Plutus V3.

Components of a Cardano NFT marketplace

ComponentWhat it doesCommon tools
ValidatorsControl listing, purchase, cancel, offers and auctions, and check royalty paymentsAiken, Plinth
Transaction buildingBuilds and balances transactions in the browser or on a serverMesh, Lucid Evolution, cardano-serialization-lib
Wallet connectionLets the site request signatures from the user's walletCIP-30 wallets such as Eternl, Lace and Vespr
IndexingTracks listings, sales, metadata and holderscardano-db-sync, Kupo, Ogmios, or hosted APIs such as Blockfrost and Koios
RoyaltiesReads the creator's royalty rate for each policyCIP-27 royalty token
Front endShows collections, trait filters and sale historyAny web framework plus an image cache for IPFS files

Build steps

  1. Choose the metadata standards the marketplace will read. Most projects support both CIP-25 and CIP-68.
  2. Decide how royalties are paid. A buy validator can require an output that pays the CIP-27 royalty address.
  3. Write the listing, purchase and cancel validators in Aiken, with property tests for each one.
  4. Build the transaction code and test it on the preview or preprod testnet.
  5. Set up indexing and a metadata cache, including a proxy for images stored on IPFS.
  6. Connect CIP-30 wallets, and show the minimum ADA deposit, the price and the network fee as separate lines.
  7. Get the validators audited before mainnet. Auditors look first for double satisfaction, a bug where one payment output satisfies two listings in the same transaction.

JPG Store's closure and the Cardano NFT market in 2026

JPG Store was the largest Cardano NFT marketplace for several years. In April 2026 the company announced that it would shut down, and new listings, offers, loans and minting stopped on April 23, 2026. The site and its Comet product closed on May 23, 2026, and the company cited long-term operating costs that the business could not cover.

The JPG Store contracts stay on the Cardano chain, and NFTs in self-custody wallets were not affected. Users of JPG Store's social-login wallets had to move their NFTs to wallets such as Lace or Eternl before the closure.

Wayup, a marketplace built by Anvil, now runs on the JPG Store contracts. According to its listing on cardano.org, existing listings and royalties keep working there. CNFT.io, one of the first Cardano NFT marketplaces, also still operates.

Cardano NFT trading volume is small next to Ethereum, Solana and Bitcoin Ordinals, and fewer developers know Aiken or Plinth than know Solidity. A new Cardano NFT marketplace fits a specific Cardano community, game or brand rather than competing for general NFT traders.

For projects that need buyers from several chains, the cross-chain NFT marketplace guide covers that design. The NFT marketplace development guide covers marketplace features on any chain. Teams that plan a Cardano token sale can read the guide to IDO launchpads on Cardano.

Frequently asked questions

Do Cardano NFTs need a smart contract?

Minting and transfers do not need one, because a native-script minting policy is enough to mint an NFT. A marketplace needs validator scripts to hold listings and offers in escrow.

Is JPG Store still open?

No. JPG Store closed on May 23, 2026. Its contracts remain on-chain, and the Wayup marketplace now serves the existing listings.

Should a Cardano NFT use CIP-25 or CIP-68?

CIP-25 is simpler and works for static collections. CIP-68 fits NFTs whose metadata must change or must be read by a smart contract, such as game items.

What is a policy ID?

A policy ID is the hash of the minting policy script, and it identifies a collection. A policy with a time lock shows that nobody can mint more tokens after a set slot.

Is Aiken required for a Cardano NFT marketplace?

No. Validators can also be written in Plinth or Plutarch, but Aiken is the most common choice for new projects because its scripts are small and cheap to run.