Skip to content

Sales

A sale defines how collectors can purchase tokens from a collection. A collection can have multiple sales over its lifetime — for example, a gated early-access sale followed by a public drop.

  • Draft collection — exactly one sale at a time (public or gated). Delete the existing draft sale before adding a different one.
  • Live collectiongated sales can be added freely (they don’t register anything on-chain; they activate immediately). Public sales on live collections are not yet implemented — they require on-chain vector registration, which is on the roadmap.
  • Live sales cannot be deleted. Pause them or set an endAt.
  • PUBLIC — open to anyone. Registers an on-chain vector or mechanic that the MintManager reads from.
  • GATED — restricted to wallets that satisfy a gate. No on-chain registration; the backend signs each claim with an executor key.

Because gated sales are fully off-chain from the contract’s perspective, you can attach a gated sale to an already-live collection, run it, end it, and attach another — all without touching the chain outside of mints.

SettingDescription
Sale typeFIXED_PRICE, DUTCH_AUCTION, RANKED_AUCTION, or CUSTOM
Access modePUBLIC or GATED
Price / reserveToken price in native currency or ERC-20
maxPerTransactionPer-transaction mint cap
maxPerWalletPer-wallet accumulation cap
maxTotalCap on total tokens this sale can mint
startAt / endAtSale window
paymentRecipientWhere proceeds go
Gas sponsorshipCreator-paid gas — only FIXED_PRICE + PUBLIC
gateIdRequired when access is GATED, forbidden otherwise
mechanicIdRequired when type is CUSTOM
typeConfigType-specific config for DUTCH_AUCTION, RANKED_AUCTION, CUSTOM
collectorMessageOptional copy shown on the mint page

Once a sale exists, these fields cannot be changed — delete and re-add to change them:

  • type
  • accessMode
  • gateId
  • gasSponsored
  • mechanicId
  • typeConfig

For a live public sale, on-chain fields (price, startAt, endAt, currency, limits, paymentRecipient) also can’t be changed yet. Only name, collectorMessage, customMintFee, and paused are mutable.

For a draft sale, everything is freely updatable.

  • Gas sponsorship: only FIXED_PRICE + PUBLIC.
  • Ranked auctions: PUBLIC only. Gated ranked auctions are rejected.
  • Ranked auctions only work on LimitedEdition, standard Series, and Limited GenerativeSeries.
  • Custom sales require a registered mechanicId with a deployment on the sale’s chain.
  • See support matrix for the full combination set.

Fixed price sales support two advanced modes via typeConfig.

Burn-redeem — collectors burn tokens from another contract to redeem:

  • burnAddress — contract to burn from
  • mechanicAddress — on-chain mechanic handling the burn
  • tokenId, burnAmount — which and how many
  • chainId — optional, for cross-chain burns

Donation — collectors can pay above the reserve:

  • reserveEtherPrice — minimum
  • maxPerWallet — optional wallet cap

Both only apply when type: "FIXED_PRICE".