
A purchase order on the showroom counter. Not a cart.
Somewhere in most wholesale roadmaps there’s a line that reads “enable B2B on the store.” It usually means the DTC checkout gets a login wall, a price list, a PO number field, a notes box for terms, and a minimum-order rule. The buyer can now “check out.” The desk calls it a wholesale portal.
Then the season starts, and every real order still happens in email, a spreadsheet, and a phone call. The portal takes the reorders nobody was worried about.
This follow-up sits on the spine: showroom → account-aware line sheet → quote → size/assortment → approved PO. Every piece in this series has put one commercial thing back on the sheet: the quote, the curve, door terms, availability, the season book. This one is about the shortcut that skips all of them, treating a wholesale buy like a consumer cart with a few more boxes to fill in.
The misuse
A DTC checkout is built for one person buying a few units, right now, at a public price, shipped to one address, paid on the spot. Every assumption in it is correct for that job.
A wholesale buy breaks every one of those assumptions:
- The buyer is an account with doors, not a shopper with an address
- The price is the account’s price, not the list price with a discount code
- The quantity is a size curve across styles and colors, not “qty: 1”
- The timing is a ship window and a cancel date, not “arrives Thursday”
- Payment is door terms and dating, not a card at checkout
- “Submit” is the start of an approval, not the end of a sale
Heads of wholesale know the pattern. The portal “works,” and yet:
- Buyers place a cart, then email the real order because the curve didn’t fit
- Account pricing lives in a price list that drifts from what sales actually agreed
- Minimums block a legitimate split-door order, so someone overrides it by hand
- Ship windows are typed into a notes field that nobody downstream reads
- The PO number field gets filled, and ops still rebuilds the PO from the email
Extra fields don’t make a cart a wholesale order. They make a cart that hides the wholesale order in its notes.
DTC cart with extra fields vs a wholesale buy
| What the order needs | DTC cart with extra fields | Wholesale buy on the sheet |
|---|---|---|
| Who is buying | A login on a shopper account | An account with doors, history, and terms |
| Price | List price, a B2B price list, or a code | The account’s agreed price on the line sheet |
| Quantity | Units per SKU, one line at a time | Size curve and assortment per style, per door |
| Availability | “In stock” today | ATP for the ship window the buyer is booking |
| Timing | Shipping speed | Ship window, start ship, and cancel date |
| Payment | Card or invoice at checkout | Door terms and dating on the same record |
| Minimums | A cart rule that blocks submit | Account and season rules the desk can see and work with |
| “Submit” | Order placed | Quote → approval → PO |
The cart desk asks: did the buyer check out? The wholesale desk asks: is this the buy we agreed, for these doors, in this window, on these terms?
If the first answer is yes and the second still needs an email thread, the portal is a checkout, not a wholesale system.
Related: Your Quote Isn’t a Thread. Account-Aware Showroom. Size Curves on the Wholesale Sheet. The PO Is Not a Form. Door Terms Belong on the Sheet. ATP on the Buy. One Season Book Beats Five Spreadsheets. Full spine: The Wholesale Season Breaks When the Sheet Stops Being the System.
What a wholesale order actually has to carry
A wholesale order isn’t a cart with more inputs. It’s one account-aware commercial object that has to hold the whole deal before anyone calls it a PO:
- The account and its doors: who is buying, for which stores, from the assortment they were shown
- Account-specific pricing: the price sales agreed, not a list price minus a code
- Size curves and assortment: units by style, color, and size, per door, at quote time
- Availability for the window: ATP against the ship window being booked, not today’s stock
- Ship windows and cancel dates: on the line, not in a notes box
- Door terms and dating: the payment deal on the same record as the units
- Minimums as rules the desk can see: by account and season, with a visible exception path instead of a blocked button
- An approval path to the PO: quote, review, approve, then the PO, with one history
When those live in a cart’s custom fields, the checkout records them but can’t reason about any of them. When they live on the sheet, every team reads the same deal.
Why “enable B2B on the store” stalls
The DTC route looks fast because the store already exists. The cost shows up somewhere else.
It shows up when the biggest accounts never use the portal, because their orders don’t fit a cart. It shows up as overrides: minimums waived by hand, prices patched after submit, curves rebuilt in a spreadsheet. It shows up when finance finds the dating in a notes field after the goods have shipped. And it shows up in adoption reports where the portal handles plenty of small reorders and almost none of the season.
A wholesale portal that only takes the easy orders isn’t a channel. It’s a second inbox.
ICP framing
For mid-market AFL brands selling to retailers (roughly $10M to $250M wholesale), whether the order is a cart or a commercial object is an input to:
- how much of the season the buyer can actually place without email
- quote and PO fidelity on account pricing, curves, and terms
- how many orders ops rebuilds by hand after “checkout”
- whether finance sees dating and terms before the goods move
It isn’t a B2B app bolted onto the DTC store, a password-protected price list, or a PO number field on the payment page.
Heads of wholesale feel it every time a key account says, “I’ll just send you the order.”
Product proof note: the Retail-OS wholesale path
MapleSage Retail-OS treats a wholesale buy as its own path, not a checkout variant: showroom, account-aware live sheet, quote, size and assortment, door terms, availability for the window, and a gated PO approval. Account pricing, minimums, and ship windows sit on the same commercial object the buyer builds, so sales, ops, and finance read one deal.
See the buyer path: b2b.maplesage.com. Wholesale surface: www.maplesage.com/retail/wholesale/. Talk: go.maplesage.net.
What we won’t pitch
- “Just turn on B2B in your store” as the wholesale fix
- More custom checkout fields as a substitute for terms, curves, and windows
- Competitor storefront or cart screenshots as the hero
Next step
If your wholesale portal is a DTC checkout with extra fields, stop measuring it by how many carts get submitted. Put account pricing, curves, availability for the window, ship dates, door terms, and the approval path on one account-aware order, or keep taking the real season by email.


