The create-a-vendor wizard for Market vendors — Type → Storefront → Lifecycle → Inventory → Costs & rules → Revenue → Summary — plus its modals, empty states, and the Draft → Review → Live stage transitions. The running/management side (vendor list, detail, lifecycle controls, runtime states) lives in vendor-management-states-gallery; gacha-only states live in gacha-vendor-states-gallery.
Steps keep their original numbers (03–09) to match the management gallery's numbering. Sub-frames are labelled "0X ·".
03Create — vendor typeStep 1 of the create stepper — the sale mechanism. Market is the only type available at launch and is collection-agnostic: it can sell tokens from one or several of your collections (no single/multi toggle — its inventory just spans whatever collections you stage). The price-override types — Gacha, Tombola, Gacha-RWA — are single-collection (one draw price + one weighted pool only make sense within one rarity system) and stay disabled for now. Whatever collections a vendor is created with become its fixed set — it can only ever hold tokens from those. Cards use the gallery's own selection convention (strong border + hairline ring). The stepper rail replaces a redundant page header on working steps (style-guide rule).
How buyers see this vendor on its public page and in Launchpad.
Square thumbnail (min 512×512) and a wide banner — same as the collection storefront.
05Create — lifecycle policyStep 3: how the vendor starts and ends. Activation (open immediately / start manually / schedule), control mode (autonomous vs admin-controlled with an earliest-stop), and what happens to unclaimed inventory when it stops.
Supports an earliest-stop time — set a date the vendor can't be stopped before. The date field appears here when this option is selected.
3When it stops — unclaimed inventory…
Returns to the collection
Unclaimed copies go back to held inventory.
Is burned
Unclaimed copies are permanently destroyed.
06Create — inventoryStep 4: choose how stock can change (locked / additive / flexible) and allocate minted copies from the collection's held inventory into the vendor. Inventory is backed by minted tokens, never draft definitions.
Additive — You can add new inventory while the vendor is running.
Add inventory
Editable on Live · additive
184 staged · 3 collections
Move minted tokens from Spring Foxes, Night Market + Winter Tales into this vendor. Browse, filter and bulk-pick in the inventory manager — built for 10,000+ tokens with pagination. Rarity is shown by the card border.
184 tokens staged
🏮
#0001
Common
🎭
#0042
Uncommon
🧧
×6
Lucky Charm
Rare · stack
🎆
#0099
Epic
🏮
#0517
Common
🦊
#0623
Common
🍜
#0701
Uncommon
🦊
×3
Golden Fox
Legendary · stack
🏮
#0820
Rare
🎐
#0844
Common
🐉
#0901
Epic
🥮
#1002
Uncommon
🏮
#1105
Common
🏮
×4
Night Lantern
Rare · stack
🎏
#1230
Common
🪭
#1310
Uncommon
🎇
#1402
Epic
🧨
#1500
Common
For a Gacha vendor this step is the prize pool instead — same cards, plus weight & odds per prize.
Staging moves these copies into the vendor's inventory account — they leave the collection-held lists until claimed or returned. A vendor can mix tokens from any of the project's collections.
Showing 1–18 of 184 staged
06 ·Inventory — locked policy (stock final on Live)How a Locked inventory vendor is set up. Unlike additive/flexible, a Locked policy means the staged quantity is final once the vendor goes Live — no top-ups or pull-backs afterwards. The Add inventory card therefore reads "Locks on Live" (not "Editable on Live"), and a warning makes clear you must stage the exact stock now.
Locked — The vendor's inventory cannot be adjusted once it starts running.
Add inventory
Stock locks on Live
120 staged · 1 collection
This vendor's stock is final once it goes Live. With a Locked policy you can't add or remove copies after launch — stage the exact quantity you want to sell now. Change the policy to Additive or Flexible if you need to top up later.
120 tokens staged
🏮
#0001
Common
🎭
#0042
Uncommon
🧧
×6
Lucky Charm
Rare · stack
🎆
#0099
Epic
🦊
#0517
Common
🦊
×3
Golden Fox
Legendary
Showing 1–6 of 120 staged
06 ·Inventory policy — three statesThe compact policy control in each of its three selections. The segmented control sets the policy and the caption beneath swaps to describe the active choice, keeping the alternatives visible in muted text.
Inventory policy
Additive — You can add new inventory while the vendor is running.
Inventory policy
Flexible — You can add and remove items from the vendor's inventory while it is running.
Inventory policy
Locked — The vendor's inventory cannot be adjusted once it starts running.
06 ·Inventory — first load (no tokens staged)What the step looks like before anything is added. Policy can still be chosen, but the Add inventory section shows a compact, no-hero empty (matching the rarity gallery's "No tokens to assign" pattern) — a dashed panel, one line of guidance, and the primary "+ Add tokens" action that opens the picker modal. No pagination bar until there's stock to page through.
Additive — You can add new inventory while the vendor is running.
Add inventory
Editable on Live · additive
No tokens staged
Move minted tokens that a collection holds into this vendor. Nothing's staged yet.
No inventory staged yet
Pick minted copies from any of the project's collections to stock this vendor. Only minted tokens a collection currently holds can be staged — if a collection has none, mint copies first.
Staging moves copies into the vendor's inventory account — they leave the collection-held lists until claimed or returned. A vendor can mix tokens from any of the project's collections.
06 ·Add tokens modal — minted tokens availableOpened from "+ Add tokens". Pick a source collection, then multi-select from the minted copies the collection holds — select-all on the page, per-card checkboxes, and pagination for large collections. Only minted, collection-held tokens appear; unminted definitions and externally-held copies can't be staged. The primary button counts the selection.
Add tokens to Spring Launch
Move minted tokens held by a collection in Vault One into this vendor. Only minted copies the collection currently holds can be added — unminted definitions and externally-held tokens can't.
3 of 620
🎭
Festival Mask #001
Common
🏮
Night Lantern #006
Common
🎭
Festival Mask #011
Common
🎆
Sky Firework #016
Epic
🎆
Sky Firework #021
Epic
🏮
Night Lantern #026
Common
🏮
Night Lantern #031
Common
🏮
Night Lantern #036
Common
🧧
×4
Lucky Charm #041
Rare · stack
🏮
Night Lantern #046
Common
🎭
Festival Mask #051
Common
🎆
Sky Firework #056
Epic
🥮
Moon Cake #061
Uncommon
🏮
Night Lantern #066
Common
🪭
Paper Fan #071
Uncommon
🎭
Festival Mask #076
Common
🎇
Sky Firework #081
Epic
🧨
Firecracker #086
Common
Showing 1–18 of 620 held
06 ·Add tokens modal — no minted tokensSame modal when the chosen collection holds no minted tokens to stage — reuses the "no minted tokens" empty from Minted token management. The action stays disabled until a collection with held inventory is chosen or more copies are minted.
Add tokens to Spring Launch
Move minted tokens held by a collection in Vault One into this vendor. Only minted copies the collection currently holds can be added — unminted definitions and externally-held tokens can't.
0 of 0
No minted tokens to add
Only minted copies the collection holds can be staged into a vendor. Winter Tales holds no minted tokens yet — mint some, or pick another collection.
07Create — costs & rules · as loaded (all from defaults)Step 5, on first load. Costs & rules are organised per collection in a concertina — each shows that collection's own tiers: Weighted (fixed set), Tiered (custom names), or a single row for Uniform. Every tier is pre-filled from that collection's Claim defaults (the "From claim defaults" tag) — cost, requirements, restrictions and rewards copied in — so nothing is empty. Editing a tier here overrides the copied default for this vendor only. Each row only offers "Edit" here — "Reset to default" appears once a tier has been overridden (next frame). "Edit" opens the requirements editor (modals, shown below).
Market requires a cost on every tier. Every tier must select a cost — free, ICP, or any ICRC-1 token — or the vendor can't go Live ("free" is an explicit choice, copied from the collection's claim defaults). Costs & rules are set per collection — each collection brings its own tiers (even two Tiered collections can differ), and a Uniform collection has a single cost for the whole collection.
Every requirement narrows your audience. Requirements on a tier are additive (AND) — the more you add, the fewer collectors qualify to claim it. A tier with no requirements is open to everyone.
Costs & rules lock on Live
Spring FoxesWeightedFrom claim defaults
CommonFreeNone
Uncommon3 ICPWhitelist
Rare8 ICPICP Neuron+Whitelist+Whitelist
Night MarketTieredFrom claim defaults
Patron2 ICPNone
Merchant5 ICPWhitelist
Founder25 ckUSDCICP Neuron
Custom tier names come from this collection's Tiered rarity — they won't match another collection's tiers. Each tier sets its own cost token — here Founder is priced in an ICRC-1 token (ckUSDC) rather than ICP.
Winter TalesUniformFrom claim defaults
All tokens4 ICPNone
Uniform collections have no tiers — set one cost & rule for the whole collection. Costs stay per collection so you can add tokens from a non-uniform collection later, each with its own tiers.
07 ·Costs & rules — some overriddenAfter editing a few tiers away from their defaults. Overridden tiers show an Edited badge and gain a "Reset to default" action; untouched tiers still only offer "Edit". A collection's head tag flips from "From claim defaults" to "Edited" when any of its tiers differ. Here Spring Foxes (Rare) and Winter Tales are edited; Night Market is untouched.
07 ·Costs & rules — no inventory yetWhen the vendor has no inventory, there are no collections to price, so this step has nothing to configure. You can still continue setting up — but a warning makes clear that inventory must be added before the vendor can go Live, or there'll be nothing to sell. Continue stays enabled; the go-Live gate is enforced later at Review.
No inventory yet — nothing to sell. Costs & rules are set per collection, drawn from the tokens you stage in Inventory. You can finish setting up and save as a draft, but the vendor can't go Live until you add inventory — without it there's nothing for collectors to claim.
Costs & rules
No collections
Add inventory to set costs & rules
This vendor has no inventory, so there are no collections to price here yet. Stage some minted tokens in the Inventory step and each of their collections will appear here, ready to price.
07 ·Requirement editor — accordionsOpened from "Edit" on a tier — the same four-concept editor as the collection's Claim defaults (Cost · Requirements · Restrictions · Rewards), pre-filled with the copied default. Claim cost sits at the top (free / ICP / ICRC-1); each requirement type is its own accordion. Requirements combine with AND — more gates means fewer eligible collectors. TokoToken (hold from a collection), Restrictions and Rewards are disabled teasers (coming soon). Promo / redemption codes aren't here — they're project-level code sets (future).
Edit · Spring Foxes · Rare
Resolved · ckUSDC — added to this vendor's token list
Pick ICP, or ICRC-1 then a common token. The ledger box appears only for Custom — a canister ID validated on entry; the resolved token is then added to this vendor's dropdown.
Requirements combine with AND. A collector must satisfy every active requirement below — the more you add, the fewer people can claim this tier.
ICP NeuronActive
ICP
One ICP neuron (NNS) requirement per tier — stake is in ICP.
ICRC-1 NeuronActive
$DKP
One ICRC-1 neuron (SNS) per tier (vendor_v1). Min stake is in the DAO's own token — Dragginz uses $DKP. Same pattern as the cost picker: pick a common SNS DAO, or Custom to add a governance canister by ID — the ID box appears only for Custom and is validated on entry; one that doesn't resolve is flagged inline and blocks save: No SNS found at this canister ID.
Whitelists2 selected
Spring OG420 addressesLive
Allowlist 21,200 addressesLive
Founders88 addressesLive
Only the project's Live whitelists appear here — Draft and Review lists aren't shown. Add as many as you need; manage them in Project Studio.
TokoToken — hold from a collectionComing soon
Maximum claims per humanComing soon
ICP payoutComing soon
ICRC-1 token payoutComing soon
07 ·Requirement editor — default open / closedThe same editor when only some requirements are set. Accordions with a selection open on load (ICP Neuron, Whitelists); empty ones stay collapsed with a "Not set" hint (ICRC-1 Neuron). TokoToken, Restrictions and Rewards stay disabled (coming soon).
Edit · Spring Foxes · Uncommon
A common token is picked straight from the list — no canister ID needed (the ledger box only appears for Custom).
ICP NeuronActive
ICP
ICRC-1 NeuronNot set
Whitelists1 selected
Spring OG420 addressesLive
Allowlist 21,200 addressesLive
Founders88 addressesLive
TokoToken — hold from a collectionComing soon
Maximum claims per humanComing soon
ICP payoutComing soon
ICRC-1 token payoutComing soon
Design note (not UI) — explore: project-level custom ICRC-1 tokens & SNS DAOsTwo places now take a custom canister by ID: the cost picker (an ICRC-1 ledger) and the ICRC-1 Neuron gate (an SNS governance canister). As drawn, each is entered at the point of use and cached in this vendor's dropdown. Worth exploring before build: persist both at the project level — validated once, then reusable across every vendor and tier — instead of re-entering canister IDs per vendor. Benefits: fewer lookups, less risk of a wrong/unsafe canister, a friendlier picker. Feasibility looks good — ICRC-1 ledgers expose symbol/decimals via standard metadata (the wallet already supports ICRC1) and SNS governance canisters are resolvable to a DAO name, so resolved entries + labels can be stored on the project and refreshed. Open questions: where they're managed (Project Studio › Tokens / DAOs?), who can add/remove them, and how to flag a canister that later changes or goes unreachable. Flagged here on the grey, outside the modal, per the style guide (design guidance never sits inside the UI).
07 ·Cost picker — three statesThe claim-cost token control in each state. A cost type must be chosen — Free claim is the fourth option and shows no amount or token control. ICP: just the amount and the token select. Known token: ICRC-1 chosen, then a common token picked from the second dropdown — no canister box. Custom: the second dropdown set to "Custom — add ledger…" reveals the ledger canister-ID box, validated on entry. (The ICRC-1 Neuron DAO picker follows the same list-or-custom pattern.)
A common token is picked from the list — no canister ID needed.
Resolved · ckUSDC — added to this vendor's token list
The ledger box appears only for Custom; the canister ID is validated on entry.
07 ·ICRC-1 Neuron — custom canister statesThe ICRC-1 Neuron accordion when "Custom — add governance canister…" is chosen. Resolved: a valid governance canister ID resolves to the DAO name and is added to the vendor's list. Error: an ID that doesn't resolve is flagged inline and blocks save. (Picking a common SNS DAO from the list — e.g. Dragginz — needs no canister ID.)
ICRC-1 Neuron · custom · resolved
Active
Resolved · Catalyze SNS — added to this vendor's list
CAT
ICRC-1 Neuron · custom · error
Won't save
No SNS found at this canister ID.
The tier can't be saved while the canister ID is unresolved — fix or remove it.
08Create — revenue (select a preset)Step 6: revenue is set by a project-level revenue preset — a vendor must use one (there's no free-style split editing here). Select an existing Live preset; its fees and royalties are copied onto the vendor and shown read-only, locking on Live. Presets aren't created from this step — they're created and edited in Project · Revenue presets. Selecting a preset is required to continue. Buyback below is a separate vendor policy: its fee always covers beneficiary costs and fees, so it can never cost the project money — only the margin is the creator's to set; a bought-back token returns to this vendor's inventory to resell while running; and proceeds are held until the vendor has ended and every buyback window has expired.
Revenue is defined by a project-level revenue preset and copied onto this vendor. Select an existing Live preset — there's no free-style split editing here, and presets aren't created from this step.
Copied from Standard Claim when the vendor is created; locks on Live. To change fees or royalties, edit the preset in Project · Revenue presets — not here.
Buyback optional
Your vendor can offer to buy a newly claimed token back from the purchaser, for a fee. The On / Off toggle reveals these options. A buyback always recovers the beneficiary and fee shares first — so the project never loses money — then adds your margin.
How long the buy back offer stays open after each claim · 3 minutes – 1 week
Beneficiary costs Always recovered
The beneficiary share of the original claim — refunded to the project so it isn't out of pocket.
14%
Fees Always recovered
The Toko share of the original claim.
2.5%
Additional profit margin (0–20%)
Extra the vendor keeps on top of what it recovers. Set 0% to buy back at cost.
%
Total buy back fee18%
08 ·Revenue — no preset selected (required)A vendor must use a revenue preset. Until one is selected the split is empty and Continue is disabled. You select an existing Live preset — presets are created in Project · Revenue presets (and must be Live before they appear here), not from this step. Buyback can still be toggled, but its always-recovered amounts come from the chosen preset.
Revenue is defined by a project-level preset and copied onto this vendor. Choose a Live preset to continue.
A revenue preset is required. The vendor can't continue until one is selected. No Live presets yet? Create one in Project · Revenue presets — it must reach Live before it appears here.
Buyback optional
Off by default — your vendor makes no offer to buy tokens back. Turn it on to offer to buy a newly claimed token back from the purchaser for a fee, then set the buy back window and the percentage fee the vendor keeps.
Select a revenue preset to continue
Design note (not UI) — show buy back terms on the public vendor pageBecause beneficiary costs and fees are always recovered, a buyback never costs the project money — the only variable is the additional profit margin (0% = buy back at cost, up to 20% margin). When we build the public vendor page on Launchpad, surface the buyback terms to collectors: whether a buyback is offered, the window length, and whether it's at cost or at a margin (and the effective buyback price). Logged here for the public-page work. Also to document: a bought-back token returns to the vendor's inventory (ownership transfers to the vendor via the offer settlement) and can be re-sold while the vendor runs — the current spec leaves the post-buyback destination unstated, so confirm and write it into vendor-system-design / secondary-marketplace-design.
Design note (not UI) — buyback + no-end vendor = locked fundsEdge case to guard. With buyback enabled, proceeds release only after the vendor ends and all windows expire. A vendor that never ends therefore locks its funds: today Autonomous ("runs until sold out or you stop it") and Admin-controlled (stoppable after the earliest-stop date) both keep a manual-stop lever, so funds are recoverable — but if any config ever lacked a stop path (e.g. an unbounded mode, or admin-stop set far in the future / never reached), buyback would lock the funds permanently. Required guarantee: every vendor must always retain a way to be stopped; never allow a no-end, no-stop vendor — especially with buyback on. Consider also warning at go-Live when buyback is on and the vendor has no scheduled end, so the creator knows funds stay locked until they actively stop it.
09SummaryStep 7: a summary of every section with a validation check. From here you Save as Draft or Submit to Review — Submit to Review is the required step before a vendor can go Live (you Set Live from the Review stage, not here). Submitting requires all required fields to validate; the tokens themselves are checked individually at their own go-live.
Control modeAdmin controlled · earliest stop 12 Jul 2026
When it stopsReturn unclaimed to collection
Inventory policyAdditive · locks on Live
Inventory420 copies · 3 collections
Costs & rulesSet per collection (3)
RevenuePreset · Standard Claim
All required fields valid. Submit to Review to lock the config for a final check — you then Set Live from the Review stage (Draft → Review → Live; you can return to Draft to edit). Inventory policy locks on Live; the inventory quantity can still change afterwards (additive allows top-ups).
09 ·Summary — validation errorsThe summary when things don't validate. Every blocking issue is listed with a jump-to-fix link, and Submit to Review is disabled until all clear; Save as Draft stays available. This shows the full set of things that can block progressing toward go-Live. Note costs & rules can't appear as a blocker here — a cost is required to save every tier (pre-filled from the collection's claim defaults) and custom ledgers / SNS canisters are validated on entry, so those failures are caught before this step.
Costs & rules can't fail here — a cost is required to save each tier (pre-filled from claim defaults), and custom ledgers/SNS canisters are validated on entry, so an unresolved one can't be added.
Revenue & buyback — valid
A Live revenue preset is selected and copied onto the vendor (no free-style edits). Buyback margin (0–20%) is range-checked as you edit. A vendor can't be submitted to Review without a preset.
Type & storefront media — valid
Market type set; thumbnail and banner present.
09 ·Stage: Review — go Live caution (buyback, no end)Setting Live from the Review stage when buyback is on and the vendor has no scheduled end. A non-blocking caution flags that proceeds stay locked until it's manually stopped and the last window expires. The creator acknowledges and proceeds; this warns, it doesn't block.
Market vendor · in Review. Configuration is locked for a final check — edit the storefront if needed, then set it Live.
State
ReviewSetup
Locked for review. Costs & rules, lifecycle, inventory policy and revenue are read-only at this stage. Only the storefront (aesthetic) fields can still be edited. Return to Draft to change anything else.
Configuration
Locked at Review
Read-only
StorefrontSpring Launch · "Claim a Fox" Editable
ActivationOpen immediately
Control modeAutonomous · no scheduled end
When it stopsReturn unclaimed to collection
Inventory policyAdditive
Inventory420 copies · 3 collections
Costs & rulesSet per collection (3)
RevenuePreset · Standard Claim · 14% royalties
BuybackOn · 24h window · 18% fee
Buyback is on and this vendor has no scheduled end. Proceeds stay locked until you stop the vendor and the last buy back window expires — a vendor left running keeps its funds locked indefinitely. You can stop it any time (Autonomous), or set a schedule / earliest-stop on the Lifecycle step. Going Live is still fine.
Stage
09 ·Stage: Review — read-only, then go LiveA vendor that's been submitted to Review. The config is locked and read-only — only aesthetic storefront fields stay editable (name, tagline, media, claim label). From here you Set Live to publish to Launchpad, or Return to Draft to unlock and edit. (Draft → Review → Live; there's no separate approval gate.)
Market vendor · in Review. Configuration is locked for a final check — edit the storefront if needed, then set it Live.
State
ReviewSetup
Locked for review. Costs & rules, lifecycle, inventory policy and revenue are read-only at this stage. Only the storefront (aesthetic) fields can still be edited. Return to Draft to change anything else.
Configuration
Locked at Review
Read-only
StorefrontSpring Launch · "Claim a Fox" Editable
ActivationStart manually
Control modeAdmin controlled · earliest stop 12 Jul 2026
When it stopsReturn unclaimed to collection
Inventory policyAdditive
Inventory420 copies · 3 collections
Costs & rulesSet per collection (3)
RevenuePreset · Standard Claim · 14% royalties
Stage
10Storefront media · cycle check (balance OK)Saving a vendor thumbnail or banner (Create · storefront, step 2) stores it in blob storage, funded from project cycles. Before it saves, Toko estimates the cost and checks the balance — the same guard used for every upload (see the Cycles & uploads gallery). With headroom, it saves normally.
Upload assets
spring-launch-banner.png staged · 2.8 MB · uploaded & held
Estimated cost
~0.03 T cycles
Project balance
2.040 T
After upload
~2.01 T
Enough cycles to store this image and keep your reserve. Toko moves project cycles into blob storage automatically.
11Storefront media · low balanceThe estimate exceeds the balance. The image stays staged — nothing is discarded — and the primary action becomes Top up & upload.
Upload assets
spring-launch-banner.png staged · 2.8 MB · uploaded & held
Estimated cost
~0.03 T cycles
Project balance
0.010 T
Shortfall
~0.02 T + reserve
Not quite enough cycles to store this image. It stays staged — top up and it saves straight away. Nothing is lost if you top up now.
12Top up to continue · image stagedThe inline top-up. The staged image is shown at the top so it's clear nothing was cancelled; once cycles land in blob storage, it saves automatically.
Top up to continue upload
spring-launch-banner.png staged · 2.8 MB · ready to save
This upload (est.)~0.03 T
Project balance0.010 T
Recommended top-up (cost + reserve)1.000 T
Top up amount
T cycles · ≈ 0.30 ICP
from your wallet to the project canister
Cycles are sent to the project canister; Toko moves what's needed into blob storage. After it lands, the staged image saves automatically.