Private Catalog & Buyer Approval
On a consumer marketplace you remove friction. On a wholesale one you add it on purpose. A brand's trade price is the most sensitive number it has: if its own retail customers can Google it, the brand will not list with you. Retailers, in turn, expect to prove they are a business before they see trade prices. That is the shape of Faire, Ankorstore and every B2B marketplace - vetted on both sides, catalog behind a login - and until this week you could not build it on Prometora.
Two switches change that. Approve buyer accounts puts every new buyer signup in a pending queue: they can sign in, but cart, Buy now, purchase requests and messaging are refused until you approve them. Private catalog hides your listings, listing pages, seller profiles, search and shared wishlists from everyone except approved buyers and active sellers. Your homepage and custom pages stay public, so the site still sells the marketplace while the catalog is for members.
Owner approves in Buyer Management, visitors see a prompt instead of the catalog
Nordlys Interiør
CVR 38 21 44 09 · Copenhagen
The Corner Shop
Company no. 09876543 · Bristol
Both get an email either way. A rejected retailer sees your reason when they sign in.
This catalog is for approved Retailers
Sign in with your Retailer account to see listings and prices, or apply for one.
The prompt uses your terminology - rename Buyer to Retailer and it says Retailer everywhere.
Account approval, not order approval
This vets who may shop at all. The per-listing “request to purchase” flow, where a seller approves each order, is a separate setting on the listing type.
A closed marketplace may use both.
Gated for real, not just hidden
Hiding a grid is not enough when the data behind it is still one URL away. The gate holds at every layer.
- Listing and seller APIs refuse non-members
- Link previews show no title or image
- Sitemap drops catalog paths, robots.txt disallows them
- Direct links return the buyer to the listing after sign-in
Four emails, eleven languages
Every step of the queue is announced on both sides. All editable under Email Translations, all logged in the Email Log.
A wholesale setup in three switches
- Seller approval on (Sellers & Buyers), so brands are vetted before they list.
- Buyer approval on (Signup Form), so retailers are vetted before they buy. Existing buyers stay approved when you turn it on.
- Private catalog on (Signup Form), so trade prices stay behind the login. Keep buyer approval on with it - the settings page warns you when the two disagree, because a private catalog with open signup is a login wall anyone passes in ten seconds.
Available on Pro and above. Both switches live in Store Settings → Signup Form → Buyer Signup Fields, and the pending queue in Sellers & Buyers → Buyer Management. Gated pages are noindex from the moment you switch on, so a catalog that relied on organic listing traffic trades that for exclusivity. Private Catalog docs
Maximum Order Value per Listing Type
Two weeks ago we shipped a store-wide maximum order value, so a single chargeback can never wipe out a small seller. One number rarely fits a whole marketplace, though. Fabric sold by the metre from hobby sellers wants a low cap against bad-faith buyers; livestock or machinery should never be capped at all. Each listing type can now carry its own rule, set under Store Settings → Listing Form, right below the minimum listing price.
Per type you choose Use the store default, No limit for this type, or Set a limit for this type. A type limit is a ceiling: a seller can lower it for themselves but cannot raise it or opt out. Where a type has no rule of its own, the seller's choice applies, and otherwise your store default.
Three types, three rules, one cart
| Type | Rule | Cap |
|---|---|---|
| Fabric | Set a limit | A$100 |
| Patterns | Store default | A$350 |
| Machinery | No limit | – |
The overlocker is fine. Only the fabric line trips its cap, and the message names the type.
An uncapped type never drags a capped one over the line. Types without a rule of their own pool together under the seller's cap, exactly as before.
If only some types need a cap, leave the amount under Payments blank and set it on those types. The switch under Payments still has to be on.
The listing-form price warning now resolves per selected type, so a seller pricing a single item above its type's cap is told before they publish.
Available on Pro and above, in Store Settings → Listing Form under each type. Bookings, custom offers and approved requests stay uncapped. Price Rules docs
Minimum Order Quantity
Wholesale and bulk goods are rarely sold one at a time. A brand that packs candles in cases of twelve does not want an order for one, and a fabric seller with a 3-metre minimum cut has been writing “minimum 3” in the description and hoping. Sellers can now set a minimum order quantity on a listing, and the storefront holds buyers to it.
You turn it on per listing type under Listing Form. Sellers then get a Minimum order quantity field under Stock on the listing form; empty or 1 means no minimum. The quantity picker on the listing page starts at the minimum and will not go below it, the cart refuses to add or reduce a line under it, and Buy now and checkout reject smaller quantities on the server too, so the rule holds even if a page is out of date.
Seller sets it once, buyers cannot go under it
Stock quantity
Minimum order quantity
Buyers must order at least this many. Leave empty for no minimum.
Soy candle, amber & oak
A$6.50 per unit · wholesale
Minimum order: 12
The toggle requires the Stock Quantity field on for that type. Without stock, every listing is a single unit and a minimum cannot apply. A minimum above the tracked stock is refused, and a listing whose stock drops under its minimum shows as out of stock.
The CSV importer takes an optional minquantity column. A row with an invalid value, or a value on a type that does not allow it, is skipped with the reason.
Twelve units at A$40 is A$480, which an A$350 cap on that type blocks. Make sure a type's maximum order value still allows one minimum order.
Available on Pro and above, per type in Store Settings → Listing Form. Custom offers, approved purchase requests and bookings are not held to it. Minimum order quantity docs
Change a Seller's Login Email
Sellers sign in with a magic link to their email address, so that address is their login - and until now it could not be changed. A typo at signup, or a dealer account you set up under your own address to do the Stripe onboarding on their behalf, had one fix: delete the seller and start over, losing their listings and their Stripe account with them.
Open the seller in Seller Management, and in the Account section click Change next to Login email. A confirmation shows the old and new address, what changes and what stays. Confirm, and the account moves. Listings, orders, messages, reviews and Stripe payouts stay exactly where they were; only the sign-in moves.
Seller Management → open a seller → Account
[email protected] → [email protected]
- Sign-in links go to the new address only
- Open sessions on the old address are signed out
- Listings, orders and payouts stay on the account
Untick the notice to the previous address when it is your own, or when the old address was a typo that may belong to a stranger.
The new address always receives a notice with a link to the seller dashboard, in the store language. From then on the seller signs in themselves. The previous-address notice never reveals the new address.
The contact email on the seller's connected Stripe account and on their seller-plan subscription is updated too, so Stripe's own messages reach the seller. Verified identity, ID and bank details are untouched.
If another account on your marketplace already uses the address, the change is refused and you are told which one. Needs the Seller & Buyer Management permission; both notices appear in the Email Log as Login email changed.
Available on all plans, in Store Settings → Sellers & Buyers → Seller Management. Seller Management docs
More Improvements
Other things shipped this week.
- Listing descriptions can now have underline, bullet and numbered lists, and a spec table - a label column and a value column that renders as a spec sheet on the listing page. Tables and lists pasted from Word or Google Docs keep their structure
- Seller bios can be up to 2,000 characters (was 600). On the seller profile a long bio collapses to five lines with a Read more toggle, so it no longer pushes the listings down
- The listing-form icon picker can search all 1,636 Lucide icons by name, not just the curated set, with nothing extra loaded on your storefront
- Stripe webhook setup in Payments settings is now a step-by-step walkthrough with mock-ups of each Stripe screen, and the same steps are in the Payments docs. When Stripe blocks your platform setup, the banner shows Stripe's own message and tells you which onboarding step to finish
- A new Sold by label in Buyer & Seller Terminology, and your seller noun now reaches 'Seller since' on profiles, the Message seller button on buyer pages and the seller dashboard heading
- Approve buyer accounts and Private catalog are findable in the store-settings search and jump straight to the switch
- The CSV importer accepts a minquantity column, and very large image imports get a longer time budget - split imports of thousands of images into batches
Bug Fixes
Bug fixes shipped this week.
- CSV import read prices as cents, so a listing imported at 199 became $1.99. Prices and compare-at prices in the CSV are now major units, as the docs always said
- Stock and SKU fields shown for a listing type via a type override no longer look empty when a seller reopens the listing to edit it
- The seller's Maximum order value card no longer saved a half-filled custom cap the moment 'Set my own limit' was picked, which returned an error
- The minimal footer wraps its links on real phones instead of overflowing in one row
- A per-person price of 0 now reopens as 0 instead of empty, and event dates are validated as real calendar dates on save
- During a 'Log in as' support session, Stripe's finance views show a short notice instead of a raw English error
- Italian storefronts contract 'a' before a vowel-initial seller or buyer noun, so 'Scrivi a Organizzatore' reads 'Scrivi all'organizzatore'
- Deleting a store now removes every uploaded image from storage, not only the first 1,000
Don't miss the next release
New features, improvements, and bug fixes shipped every Friday. One email per week.