
Twelve SKUs sit in the cart. Your ERP wants a purchase-order number on every wholesale invoice. Shopify’s cart note is optional prose. Half the buyers skip it; finance greps the mailbox. The missing piece is Shopify wholesale cart extra fields: PO, requested delivery date, internal notes — on the cart page, with checkout locked until the required ones are filled.
That module lives in OO - EU B2B & Wholesale. Docs: it does not replace Shopify checkout. It collects B2B fields, can add a handling fee, and can show a B2B price summary. Unit prices still come from Custom Pricing or volume pricing.
Live listing: Built for Shopify, 5.0 from 34 reviews. Free: one custom pricing rule, one registration form. Starter $22/month or $220/year. Growth $37/month or $370/year adds bulk forms, draft checkout, repeat order, RFQ, order limits, and wholesale cart — extra fields + fees. 14-day trial on paid plans. USD. Ignore older $8.95 copy.
Last live post: bulk form visibility priority. That was the grid. This is the cart.
Cart notes, Liquid cart attributes, Plus company fields: useful, still weak when you need a required PO before the buyer may continue, stored as an order attribute or a customer/company metafield per field, plus a handling fee that belongs to that wholesale cart, plus labels you translate inside the module instead of in theme files.
Workarounds that leak:
“Put the PO in the note” — empty, or “ASAP”.
A Plus-only checkout extension — this app does not replace Shopify Plus B2B / Companies. Wholesale cart is a theme block on the cart template.
A metafield on the customer profile — buyers change the reference per order.
Extra fields such as an order reference, delivery date, or notes.
Each field saved as an order attribute, or as a customer or company metafield.
A handling fee, fixed amount or percentage.
A lock so checkout stays closed until required fields are complete.
A company banner for logged-in company contacts.
What is included: Order management holds quote requests, order limits, and wholesale cart. Growth (and founder accounts). Turn the module on from the hub before you expect pixels.
Theme family: block on the cart template, not the shared embed. Embed covers pricing, tax display, login-to-see-prices, order limits. Blocks: registration, bulk, quote, wholesale cart. Finish setup on the card. Changing theme keeps app config; you re-add the block.
Design, field labels, and translations live on each wholesale cart (Extra fields, Design, translation step). No separate global label screen for this module.
Listing line: extra fields, handling fees, rules and order limits. Order limits are their own Growth module. This article is the cart fields.
Not a second checkout. Shopper fills the PO on `/cart`, then Shopify checkout.
Not the price list. Without Custom Pricing or volume pricing the cart will not invent a trade rate. Price modules first.
Not bulk-form columns. The order grid is a different Growth block.
Not Free or Starter. Growth is $37/month.
Tag `wholesale`, companies in Shopify, volume pricing already on Starter. Buyers check out with no PO.
Apps → B2B & Wholesale → Order management → Wholesale cart on (Growth).
Create a cart. Toolbox: required text PO, date Requested delivery, textarea Warehouse note.
Save PO as an order attribute (visible on the order). Put the date on a company metafield only if that is how you operate — docs allow both; pick on purpose.
Handling fee: 2% or a flat amount.
Lock on.
Visibility aligned with the price list.
Finish setup → block on the cart template → save theme.
Log in as that buyer. Empty PO: checkout locked. `PO-10441`: lock lifts, fee shows, prices still from volume pricing.
Theme swap: add the block again. Cart config in the app remains.
B2B theme app blocks covered embed vs block. Wholesale cart is the block on `/cart`.
Docs place Wholesale cart on the cart page. Dawn often opens a drawer first. If the block only lives on `cart.json`, the buyer never sees the PO until they hit “View cart”. Test the drawer checkout button and `/cart`. The lock cannot fire if the block is not on screen. Do not claim drawer auto-inject; the docs specify the cart-template block.
Order limits (Growth) ride the shared embed. A “cart not allowed” popup is that module. Extra fields will not enforce an MOQ. Set limits first, then collect the PO.
Registration forms stay on their own template. A cart PO is not wholesale onboarding. Tag or company first, cart fields for people who may already buy.
Order attribute: visible on the Shopify order, easy for ERP and for staff picking the order. Customer/company metafield: sticks on the profile. A delivery date that changes every PO rarely belongs on the company. A stable account number might. The toolbox lets you choose per field; that choice is operations, not “all attributes because why not”.
Handling fee, fixed or percent: listing pairs extra fields with fees. Confirm the fee in the cart summary before checkout. Trade rates still come from Custom Pricing / volume. The fee is not a quantity break.
Company banner: logged-in company contacts, per docs. A guest cart will not show it. Pair with login-to-see-prices (Starter) if the cart should sit behind login anyway.
Turn Growth on for the cart fields, not “because bulk exists”. Module on, fields, lock, block, test as the right buyer — and once on the full cart URL. Install from the OO - EU B2B & Wholesale listing.
Shopify wholesale cart extra fields sit on the cart page. Reference, date, notes. Attribute or metafield. Fee fixed or percent. Checkout can wait on required fields. Shopify checkout stays checkout.
Prices from Custom or volume. Cart from Growth. Put the wholesale cart next to the price list, not in place of the till.
Services
Reviews
5/5
Mail: info@onlineorigins.nl
Tel: 073 234 0612
KVK: 89825624
BTW: NL865123639B01
Bruistensingel 500,© 2026 Online Origins