Wholesale order sheet guide
How approved wholesale buyers order by SKU from one page: turning the order sheet on, linking it from your menu, showing it inside a page, how buyers search, paste SKUs, upload a CSV and use saved lists, and what is stored.
What the order sheet is
The order sheet is one page on your storefront where approved wholesale buyers order by SKU. A buyer searches by SKU, barcode or product name, enters quantities, pastes a list of SKUs or uploads a CSV file, keeps saved lists for repeat orders, and adds the whole order to their cart in one go. They then check out in your normal Shopify checkout.
Every price on the sheet is the buyer's own price: the price their company location gets in Shopify, including quantity breaks and quantity rules from their price level or catalog. The sheet needs Shopify B2B on your store, and buyers log in as company contacts.
The sheet is an App Proxy page, like your registration form. B2B Onboard never edits your theme files or injects scripts: an optional block you add and remove in the theme editor can show the sheet inside one of your pages.
Turn it on
- In B2B Onboard, open Settings → Wholesale pricing → Order sheet.
- Click Turn on the order sheet and confirm. The app reads your product list once to build a search index of your active products. Your products and theme are not changed.
- The page shows Preparing your search index with a count that rises as products are read. A few hundred products take seconds; tens of thousands of variants take a minute or two.
When the index is ready, the page shows how many variants buyers can search and when the index was last updated. The index follows your product changes usually within a few minutes and is rebuilt every night. Rebuild search index now reads your whole product list again: use it if search results look out of date. You can rebuild once every few minutes.
Once the sheet is on, the Setup Guide on your dashboard shows Add the order sheet to your store under Level up. It is marked done after the first buyer adds an order from the sheet to their cart.
Where buyers find it
The order sheet has its own address on your storefront: your store's domain, your App Proxy path, then /order, for example https://yourstore.com/apps/wholesale-register/order. The card Where buyers find it on the Order sheet settings page shows your exact address with a Copy button.
To link it from your store's navigation:
- Click Open menu editor on the settings page (or go to Online Store → Navigation in Shopify admin).
- Open your main menu or account menu and click Add menu item.
- Name it, for example Quick order, paste the address as the link, and save.
Everyone can open the link, but only logged-in wholesale buyers see products and prices. A visitor who is not logged in sees Log in to place orders with a log-in button. A logged-in customer without a wholesale account sees The order sheet is for approved wholesale accounts with a link to your registration form.
To see the sheet as a buyer, log in to your storefront with a wholesale test account (a customer who is a contact of an approved company).
Buyer account page
Buyers who log in land in their Shopify account. Two optional additions there show them the way to the order sheet: the Wholesale ordering block on the Profile page, and the Wholesale order page, a page of its own in the account menu. They run in Shopify's account pages: no theme edit, no script. They need Shopify's new customer accounts (the same accounts Shopify B2B needs).
What buyers see. The block names the company and location the buyer orders for, their payment terms, the order rules of their price level (minimum and maximum order amount, a PO number, the handling fee), a note when their orders are reviewed before they are confirmed, how many saved lists they have, and Open the order sheet. The page shows the same, plus their Saved lists, each with Open on the order sheet, which loads that list into the buyer's order on the sheet once, with every price checked live there. Lists are renamed, replaced and deleted on the order sheet itself. Customers who are not wholesale buyers see nothing in the block.
Add them in Shopify's editor:
- On Settings → Wholesale pricing → Order sheet (while the sheet is on), click Open the checkout and accounts editor in the Buyer account page card. It opens Shopify's editor on the customer account Profile page in a new tab.
- Click Add block and choose Wholesale ordering. Add it to the Profile page itself: once for the whole store. Shopify also offers it in the company section, but only per B2B market (Only available in B2B markets), so a store with several markets would add it once per market.
- For the full page, open the Apps panel in the editor, choose Add page to → Accounts for Wholesale order page, then Add to menu to put it in the customer account menu. The page does not load before it is added.
- Save in the editor.
After the first wholesale buyer opens the block or the page, the card says Buyers have opened it. and the Setup Guide row Add wholesale ordering to the buyer account is marked done.
Order history. In the card Order history in the buyer account, Turn on asks you in Shopify to allow the app to read orders. Once you allow it, the page shows a Recent orders section: the buyer's orders from the last 60 days for their company location (Shopify lets the app read the last 60 days only; cancelled orders are left out and the ten most recent are shown), each with Reorder on the order sheet, which loads the order's products into the order on the sheet at today's prices. Orders are read when the buyer opens the page and are not stored. Turn off hides the section again.
What it never does: it never writes to the buyer's cart (only the order sheet adds to the cart, when the buyer clicks Add all to cart), never edits your theme and never shows stock. Your order (on the sheet) and your cart stay two different things.
Style: the Style card does not apply there. The block and the page use your customer account branding, which you set in the same editor.
Match your shop's look
The order sheet starts with a plain, neutral look. The Style card on Settings → Wholesale pricing → Order sheet (shown while the sheet is on) makes it look like your shop. Every change is a draft until you click Save in the bar at the top; Preview the order sheet opens the buyer page in a new tab.
- Match my theme reads the colours and the body font of your live theme, the same way the form editor does: the button colour, the background, the text colour, the error colour and the font.
- Copy from a form takes the style of one of your registration forms that has its own style: colours, font, corners and, on Growth and Pro, the button style, heading font, your own fonts, label style and input border width.
- Overrides: Button colour, Button text, Text, Background, Font, Corner roundness and (Growth and Pro) Button style, Filled or Outline.
Readability comes first. If a colour pair is hard to read (for example white text on a white background), the card says so, and buyers see a readable pair instead: the default colours for text on the background, a readable text colour on your buttons, filled buttons instead of outline ones. Other colours keep your choice. Muted text, input borders and error messages are adjusted to stay readable on your background, and the keyboard focus ring stays the same dark outline with a white edge on every background.
The block on a dark page: inside the Wholesale order sheet block the page around the sheet is your theme's own section, so the sheet's background colour is not drawn there; the product cards and the order panel keep your background colour. If your section is dark, choose a dark background and light text for the sheet too. The log-in and wholesale-account messages keep their plain white card on any page colour.
Reset to default brings back the neutral look after one confirmation. Your theme and forms are never changed by any of this.
Plans: colours, font and corners are on every plan. Button style and the fonts and label styles that come with a copied form need Growth or Pro; on another plan those settings keep the values you saved before.
Show it inside one of your pages
Instead of, or as well as, the menu link you can show the sheet inside a page of your online store with the Wholesale order sheet app block. The block is optional and needs an Online Store 2.0 theme (such as Dawn or Horizon). You add and remove it in the theme editor; B2B Onboard never edits your theme files or injects scripts.
Put the block on a page template of its own, so it appears only on the page you choose:
- In Shopify admin, open Online Store → Themes → Customize. In the template menu at the top choose Pages, then Create template, name it (for example order-sheet) and base it on Default page.
- In the new template, click Add block (or Add section → Apps) and choose Wholesale order sheet. Click Save.
- Open Online Store → Pages, create a page (for example Quick order), choose your new template under Theme template and save. Link that page from your menu.
The Default page template trap: a block added to the Default page template appears on every page that uses it, such as About us or Contact. The Add to a page button on the Order sheet settings page opens the theme editor on a page template with the block added for you. If the editor opens without it, choose Add block → Apps → Wholesale order sheet. Check the template menu at the top before you save, and switch to your own template if it shows Default page. Nothing is published until you click Save in the editor.
The block grows with the sheet. Its Minimum height setting (default 400 px) only reserves space while it loads. If you customised your App Proxy URL in Shopify, enter the same path in the block's App proxy path setting.
In the theme editor the block shows a preview line above the logged-out view, because the editor does not show your store as a logged-in buyer. Checkout and the login page always open over the whole page, not inside the block.
What buyers see first
Before a buyer types anything, the sheet shows up to two short sections of products they can add straight away, with the same price, pack size, quantity breaks and Add button as search results:
- Recently ordered: up to 8 of the products the buyer last added to the cart from the sheet, with the quantity they used last time already filled in. The section's Add to order and CSV work like the Recently ordered list card, which is not repeated under Saved lists while this section shows.
- Featured products: the first 12 products of one collection you choose (in the collection's own order), showing each product's first variant. A product with more variants has a More options link that searches for it.
Each section shows its first 4 products; a Show all button under it shows the rest.
To choose the collection, open Settings → Wholesale pricing → Order sheet and use Choose collection on the Featured products card (shown while the sheet is on); Remove takes the section away. Turning the sheet off and on again keeps your choice. It is on every plan.
Each buyer sees only the products of that collection that are active and published to their company location's catalog, at their own prices, read live from Shopify when the page opens (and read again when the buyer comes back to these sections a minute or more later). A change to the collection reaches buyers within about 10 minutes. The sections disappear as soon as the buyer starts typing and come back when the search box is cleared; a section with nothing to show is left out.
How buyers order
- Search: after three characters the sheet lists matching products, each with its picture, the buyer's price, quantity breaks and pack size. The buyer uses − / + or types a quantity, then clicks Add. Adding a product that is already in the order adds to its quantity. An unavailable product shows Out of stock and cannot be added. When a few more units would reach a cheaper quantity break price, the product says so, for example Add 4 more for €26.00 each. On a wide screen Your order sits beside the results with its total and Add all to cart always in view; on a phone a bar at the bottom of the screen shows the total and links to it.
- Quantities and packs: a quantity is rounded to the product's pack size, minimum and maximum, and the line says so (for example Rounded to a pack of 6). Shopify's cart applies the same quantity rules.
- Paste SKUs (the first icon at the end of the search box): one product per line, the SKU or barcode, then the quantity, separated by a tab, comma or semicolon. A header row is fine, and up to 500 rows are read at a time. The report lists what was added, codes that match several products (the buyer chooses one; nothing is picked for them), products that are not available, and codes that were not found, with a Copy not found button. Download these rows as CSV saves every row that was not added, with its quantity and the reason, as a file the buyer can fix and upload again.
- Upload CSV (the second icon): the same format as a
.csv,.tsvor.txtfile. The file is read in the buyer's browser; only the product codes are sent to look up prices. A spreadsheet must be saved as CSV first. - Keyboard: pressing / anywhere on the sheet jumps to the search box; the arrow keys move from the search box through the results, Enter adds the selected product and Esc clears the search.
- Saved lists and Recently ordered: Save order as list (at the top of the order panel) keeps the current order under a name. Each list is a card with its item count and the date it was last updated: Add to order loads it again, with every price checked live first, and CSV downloads it with today's prices (products the buyer can no longer order are left out and counted). Lists can be replaced with the current order, renamed and deleted. Recently ordered holds what the buyer last added to the cart from the sheet (it is not your store's order history).
- Clear all (at the top of the order panel) empties the order after one confirmation; it never touches the cart, and a line whose add may already have reached the cart stays until the buyer has checked the cart. The cart is shown as its own section under the order (with Go to checkout and View cart) whenever it holds items, so after Clear all the buyer sees an empty order and an unchanged cart. To empty the cart itself the buyer uses Empty cart in that cart section, again after one confirmation.
- Add all to cart: the sheet checks every price again first. If a price, a quantity rule or availability changed, it stops, shows the change on the line and adds nothing until the buyer clicks again. Then it adds the lines to the buyer's cart in groups and shows the progress.
- Checkout: when the lines are in the cart, the buyer clicks Go to checkout or View cart. If the buyer's company location is set up so that you review orders before they are confirmed, the button reads Submit order for review.
The sheet's totals are an estimate; the cart shows the final prices. Download my order as CSV saves the current order as a file the buyer can paste or upload again later. The sheet's own text is translated into the same 41 languages as your registration form.
Which products and prices a buyer sees
A buyer sees only active products published to their company location's catalog, at the price their location gets: the price level or catalog price, quantity breaks and quantity rules. Prices are read live from Shopify in the buyer's context every time they search, load a list or add to the cart; the search index only suggests which products match.
A product hidden from a buyer's catalog is simply not found, with the same message as a code that does not exist. A buyer with several company locations orders for their current company location, which the sheet names under the heading. If the buyer switches company location while the sheet is open, the sheet asks them to reload before anything more goes into the cart.
When the buyer's price level has order rules and checkout rules are active, a box above Add all to cart shows them: the minimum order with a progress bar and the amount still to go (or that the order reaches it once added, or that the cart has reached it), the maximum order, and that a purchase order number is required at checkout. When the level charges a handling fee, a line states it (for example Handling fee $12.00 on orders below $500.00). The minimum is measured on the goods without the handling fee, and counts as reached only when the goods already in the cart reach it. The maximum follows the level's Measure the maximum on setting: by default it is measured on the goods without the handling fee (the fee comes on top); with Order total, including the handling fee it is measured on the cart subtotal with the fee. Checkout measures both the same way. The box only informs: buyers can always add to the cart, and checkout decides. It is not shown when the cart is in another currency than your store currency, because checkout does not compare those either.
Under the company location's name, the sheet shows the location's payment terms from Shopify (for example Payment terms: net 30 days) when checkout will use them. When the price level sets its own net terms, the sheet says nothing about payment terms: checkout decides.
Limits
- An order holds up to 500 lines. A paste or a file is read up to 500 rows at a time.
- A buyer keeps up to 50 saved lists of up to 500 items each. Recently ordered keeps up to 100 items.
- Files are CSV, TSV or plain text. Excel files (.xlsx, .xls) and other spreadsheet formats are not read: save them as CSV first.
- Lines are added to your cart in groups of up to 25, and the sheet checks your cart before it ever sends a line again. A 500-line order takes about a minute. If one line is refused, the others are still added and the refused line shows the reason.
- Search starts at three characters. A store with more than 120,000 variants cannot be searched yet.
Privacy
- Saved order lists are stored per buyer: the list name, product variant ids and quantities, and the buyer's Shopify customer id. Recently ordered stores the variant ids and quantities the buyer added to the cart from the sheet. No prices or product names are stored.
- Lists stay until the buyer deletes them, a customer erasure request for that buyer arrives (Shopify's customers/redact), or your store's data is deleted after you uninstall the app. A customer data request includes them.
- Pasted text and uploaded files never leave the buyer's device: they are read in the browser and only the product codes are sent to look up prices.
- The order in progress is kept in the buyer's browser tab (variant ids and quantities only) so a reload does not lose it.
- If the sheet's style uses a Google font, the buyer's browser loads it from Google Fonts (fonts.googleapis.com), as your registration form does with a Google font.
- With order history turned on, the buyer account page reads the buyer's orders of the last 60 days when the buyer opens it and shows them only to that buyer. Orders are not stored.
See the privacy policy for the full list of data the app processes.
Turning it off
On Settings → Wholesale pricing → Order sheet, click Turn off and confirm. Buyers lose access to the sheet at once and the search index is deleted. Your products and orders are not affected. The address and the block then show The order sheet is not available.; remove the menu link and the block yourself in Shopify admin.
Buyers' saved lists are kept, so they are there again if you turn the sheet back on. They are deleted with a customer erasure request or when your store's data is deleted.