PO numbers nowhere
Trade accounts need a PO field. Native Shopify doesn't ship one. Without it, orders get matched manually in your finance system — every single time.
B2B needs custom fields, payment terms, tax-capture. DTC needs the clean form. Conditional Visibility makes one checkout serve both.
Trade accounts need a PO field. Native Shopify doesn't ship one. Without it, orders get matched manually in your finance system — every single time.
EU B2B sales require a valid VAT ID at invoice time. Without checkout-level capture, you're chasing emails after every order to stay compliant.
Net-30 customers don't pay at checkout. They need an 'invoice me' option that bypasses the card form. Native checkout assumes everyone pays now.
Same checkout serves both retail shoppers and trade accounts. Without conditional visibility, B2B fields show to retail customers (confusing) or hide from B2B (broken).
PO Number, VAT ID, Tax ID, Cost Center, Buyer Reference — every field a trade account needs. Validation regex per field type.
Show B2B fields only to logged-in customers with the 'trade' tag. Retail customers see the clean checkout, B2B sees the full form.
For approved trade accounts, hide credit-card payment and surface 'Invoice me' instead. Conditional rule based on customer tag.
Pinned banner for trade-account messaging: 'Order will be reviewed within 4 business hours. Invoice issued upon approval.'
In Shopify customers, add a 'trade' or 'b2b' tag to every approved trade account. Everything downstream keys off this tag.
Configure Custom Field blocks for PO Number, VAT, Tax ID. Set them as required for B2B. Validate VAT format per country.
All B2B fields use Conditional Visibility with the rule 'customer has tag: trade'. Retail customers never see them.
Configure Hide Payment Methods to remove credit card for customers tagged 'net30'. Surface 'Invoice me' as the only option.
B2B preset on the ROI calculator. Smaller order count, much higher per-order value.
Model my B2B Custom Fields deep-diveText, phone, date, dropdown, checkbox, gift note, file upload — each with validation rules and conditional logic.
See field library Next playbookCross-border trade adds customs notices and multi-language. See the international playbook for the layered stack.
See the playbookEvery block this playbook prescribes, every template that bundles them, every merchant running this stack — all clickable.
Single-line custom fields with validation.
Open blockCountry-code aware phone field with validation.
Open blockSingle-select lists for structured choices.
Open blockToggle with optional conditional follow-up fields.
Open blockFour things wholesale merchants ask before setting up. If your B2B model is more complex (multi-location, multi-currency, multi-tenant), book a setup call.
Get a B2B setup callNo. These blocks work on standard Shopify Plus checkout, whether or not you've enabled the Shopify B2B addon. If you ARE using Shopify B2B, the blocks layer on top — your existing company/location structure stays intact, and our blocks add the field/visibility layer.
Tag-based. Customers tagged 'net30-approved' see Invoice option only. Customers tagged 'pending' see a Notice block saying 'Account under review — you can browse but not order'. Customers with no tag see standard DTC checkout. All driven by Conditional Visibility rules.
Yes — Custom Field block supports unlimited text fields. Most B2B merchants add: PO Number (required), Cost Center (optional), Buyer Reference (optional), Internal Notes (optional). Each can have its own validation regex.
Pricing is upstream of checkout. We layer fields and visibility onto whatever pricing Shopify renders. Most merchants use Shopify's B2B catalogs + price lists for the pricing side, and Checkout Ninja for the field/visibility/messaging side. Clean separation of concerns.