See all services Shopify Plus Partner
Shopify Premier Partner B2B portals since 2016

Your buyers should
never have to call a rep again.

Self-serve B2B on Shopify Plus, wired to the ERP you already run. Contract pricing, credit limits, approvals and stock resolve live, at 6am, with nobody in the office.

Free · yours in 48 hours · no call required

northlandsupply.com/account/quick-order
Northland Supply · Industrial & SafetyShip to: Sudbury Yard · Net 30
QuotesInvoicesM. Chartrand · Ridgeline Mech.
Quick order pad
Contract RIDGE-2026 applied. Prices below are yours, not list.
Order lines 3 lines
ProductQtyListYour price Extended
Contract pricing applied · Net 30 · PO required
Stock and credit checked against Prophet 21 on submit.
Order total $0.00 You save $0.00 against list

Live quick order pad. Add a line, change a quantity, paste a reorder.

B2B commerce built for

B2B did not move online
because it wanted to.

Your buyer is a maintenance manager with 40 lines to place before a shift starts. They already reorder everything else at 6am from a phone. The order desk is the last thing in their week that requires a phone call, a PDF, and someone else's business hours.

Buyer preference 73%

of B2B buyers are millennials or younger, and rank self-serve reordering above rep contact.

Order cost $18

to key one order by hand, against pennies for the same order placed by the buyer themselves.

Where it breaks 1

system of record. A portal that cannot read your ERP quotes the wrong price, and the phone rings again.

One buyer. One morning.
Nobody at the order desk.

06:02

He signs in with a code.

No password to reset, no account to create. Shopify's new customer accounts email a six digit code to the address you already have on file. The buyer is in before the coffee is done.

  • Passwordless, on Shopify's own infrastructure
  • One identity across every company he buys for
  • Nothing for your team to provision or reset
06:07

He reorders last month's list.

Every order he has ever placed with you, searchable, with a reorder button on each. Quantities and pack sizes carry over. Prices redraw against his contract, not against list.

  • Contract price list resolved per company
  • Volume breaks applied at the line
  • Saved lists for recurring site orders
06:11

Prophet 21 answers before he closes the tab.

The order posts to your ERP as a real order, against the real customer record, with the PO number attached. Stock, credit and pricing are validated where they actually live. This is the part every portal project dies on.

  • Order written to the ERP, not to a spreadsheet
  • Credit hold and stock checked at submit
  • Failures surfaced to your team, not silently dropped
08:15

His office manager runs the account herself.

Company profile, users, spending limits, ship-to locations and the assigned price list, all editable by the customer. The permission model is Shopify's, so it survives your next audit.

  • Buyer roles with per-order spending limits
  • Multiple ship-to locations per company
  • Approval routing above a threshold
09:40

She pays two invoices without emailing anyone.

Open invoices, terms, aging and a pay button. Payments reconcile back to the ERP the same day. Your AR team stops being a call centre.

  • Net terms and aging pulled from the ERP
  • Pay by card or ACH against the open balance
  • Statements the customer can pull themselves
account.northlandsupply.com
Northland Supply
Enter your code

We sent a six digit code to
m.chartrand@ridgelinemech.ca

4072··

Didn't get it? Resend code

Powered by Shopify
northlandsupply.com/account/orders
Northland Supply · Industrial & SafetyShip to: Sudbury Yard · Net 30
QuotesInvoicesM. Chartrand · Ridgeline Mech.
Order history
218 orders · Ridgeline Mechanical Ltd · all locations
Recent ordersContract RIDGE-2026
OrderPlacedShip toLinesStatusTotal
#NS-4821914 Jul 2026Sudbury Yard41Delivered$7,412.60
#NS-4798002 Jul 2026Timmins Shop12Delivered$1,884.15
#NS-4774418 Jun 2026Sudbury Yard38Delivered$6,905.40
#NS-4751205 Jun 2026Sudbury Yard7Partial$942.00
#NS-4730122 May 2026Chelmsford24Delivered$4,120.85
#NS-4715509 May 2026Sudbury Yard33Delivered$5,663.20
northlandsupply.com/account/orders/NS-48307
Northland Supply · Industrial & SafetyShip to: Sudbury Yard · Net 30
QuotesInvoicesM. Chartrand · Ridgeline Mech.
Order #NS-48307
Placed 06:04 today by M. Chartrand · PO 4471-B · 41 lines
Order statusAccepted by Prophet 21
  • 06:04:12
    Order submitted from the portal41 lines, contract RIDGE-2026, PO 4471-B attached
  • 06:04:13
    Credit checkedcustomer.creditAvailable $184,000 of $250,000 limit. Cleared.
  • 06:04:14
    Stock reservedinventory39 lines from Sudbury DC, 2 lines backordered to 21 Aug
  • 06:04:16
    Sales order createdP21 SO 118442Written against customer 10-4471, ship-to SUD-01
  • 06:11:02
    Confirmation returned to buyerERP order number and promised dates shown in the portal
  • Pending
    Pick ticket releasedScheduled with the 07:30 warehouse wave
ERP record
System
Epicor Prophet 21
Sales order
SO 118442
Customer
10-4471
Ship to
SUD-01
Terms
Net 30
Price list
RIDGE-2026
Totals
Subtotal
$8,244.10
Contract savings
-$1,166.45
Freight
$0.00
Tax
$1,071.73
Total
$9,315.83
northlandsupply.com/account/company
Northland Supply · Industrial & SafetyShip to: Sudbury Yard · Net 30
QuotesInvoicesD. Aubin · Ridgeline Mech.
Ridgeline Mechanical Ltd
Customer 10-4471 · managed by D. Aubin, office manager
Buyers and limits
MC
M. ChartrandOrdering · Sudbury Yard
$10,000per order
JT
J. TremblayOrdering · Timmins Shop
$2,500per order
DA
D. AubinAdmin · all locations
No limitapproves others
RP
R. PelletierDraft orders only
$0needs approval
Pricing and terms
Price list
RIDGE-2026
Volume breaks
Applied
Payment terms
Net 30
Credit limit
$250,000
PO number
Required
Ship-to locations3
SUD-01
Sudbury Yard · default
TIM-02
Timmins Shop
CHE-03
Chelmsford Site
northlandsupply.com/account/invoices
Northland Supply · Industrial & SafetyShip to: Sudbury Yard · Net 30
QuotesInvoicesD. Aubin · Ridgeline Mech.
Invoices
Balance $24,908.41 · 2 invoices past due · terms Net 30
Open invoices
InvoiceOrderIssuedDueAgingStatusAmount
INV-90441#NS-4751205 Jun05 Jul41 daysPast due$942.00
INV-90388#NS-4730122 May21 Jun55 daysPast due$5,248.29
INV-90612#NS-4798002 Jul01 Aug14 daysDue soon$1,884.15
INV-90755#NS-4821914 Jul13 Aug2 daysDue soon$7,412.60
INV-90810#NS-4830715 Jul14 AugCurrentOpen$9,315.83

Sign in · account.northlandsupply.com

Shopify Plus Partner

The B2B object model
is already in the platform.

Companies, locations, buyer roles, price lists and net terms are first class records on Shopify Plus. On a licensed platform each one of these is a line item in a statement of work. That difference is most of the gap between a nine month build and a fourteen week one.

companyCompany accounts

The buying organisation, separate from the people in it. Orders, terms and credit hang off the company.

companyLocationShip-to locations

Each site carries its own address, tax treatment, catalogue and payment terms.

companyContactBuyers and roles

Ordering, draft-only or admin. One person can buy for several companies.

spendingLimitSpending limits

Per order caps by buyer, with anything above the threshold routed for approval.

priceListContract price lists

Fixed prices or percentage adjustments off list, assigned per company location.

quantityRuleVolume breaks

Case quantities, increments and minimums enforced at the line, not in a footnote.

paymentTermsNet terms

Net 15, 30, 60 or fixed date, with the balance visible to the buyer.

draftOrderQuotes

A rep builds it, the buyer accepts and pays it themselves. No PDF round trip.

customerAccountsPasswordless login

Six digit codes to a known address. Nothing for your team to reset.

checkoutPCI checkout

Shopify's checkout, with PO capture and terms, carrying the compliance burden.

catalogPer-company catalogues

Show a company only what it is contracted to buy, and hide the rest.

FunctionCustom logic

Where your rules do not fit the model, they run as your own code inside checkout.

What is not standard is your ERP. That is the part we build, and it is the part below.

Shopify's own B2B documentation

Your ERP stays
the system of record.

We do not copy your pricing into Shopify and hope it stays current. Every object has one owner, one direction of travel and one defined behaviour when it fails. Pick one and read the contract.

Six objects, six contracts.

Reads reconcile nightly and on change. Writes are queued, idempotent and replayable, so a failed post is a retry rather than a phone call.

Shopify Plus Storefront · accounts · checkout
MK Makro middleware Queued · idempotent · replayable
P21 Your ERP Prophet 21 · NetSuite · SAP · Dynamics
System of record
Direction
Trigger
Payload
When it fails

This is the layer most portal projects underestimate. A price list that drifts, or an order that silently fails to post, puts your buyer back on the phone and costs you the trust the portal was built to earn.

Before you scope it,
score it.

Forty-two questions about your own business: who buys from you, what they pay, what they order, and what happens after they hit submit. Each one sits beside what that answer changes about the build, so by the end you know which parts of your operation set the number.

The cost of a B2B portal is set by your pricing model and your ERP write path, not by the storefront. The storefront is the only one of the three anyone demonstrates.

PDF · 9 pages42 questionsScored out of 84

One email with the file. Fill it in before you talk to anyone, including us.

01    WHO BUYS FROM YOU
01.01Does one buying organisation ever hold more than one account number in your ERP?
01.02Can one person legitimately buy for more than one of your customers?
01.03Does your largest customer buy to more than one address, and does each address carry its own price?
01.04Who inside the customer approves an order above a threshold, and does that person exist in a system today?
01.05Do your customers require a purchase order reference on the order, or on every line?
01.06Should a buyer see orders placed by other people in the same company?
01.07Is every buyer contact in your customer master a person, with an address of their own?
01.08Do you sell the same item to trade customers and to the public?
01.09Do you have customers under a parent that negotiates centrally and buys locally?
01.10How does a new trade customer get an account today, and who approves it?
02    WHAT THEY PAY
02.01Is a contract price a fixed amount per item, a percentage off list, or a cost-plus calculation?
02.02How many distinct price lists exist on day one, and how many items does the largest carry?
02.03Do prices break by quantity, and are the breaks per item or per product family?
02.04Does any price depend on the whole order rather than on the line?
02.05Do promotions ever stack on top of contract price, and in what order do they apply?
02.06Who changes a price, in which system, and how often?
02.07Is any customer quoted in a currency other than the one you invoice them in?
02.08Is freight priced when the buyer submits, or after the warehouse picks the order?
02.09Do you apply surcharges, fees or minimum order values that are not products?
02.10Where is tax exemption held: per customer, per location, or per certificate with an expiry?
02.11Can you produce today's correct price for any customer and any item without asking a person?
03    WHAT THEY ORDER
03.01How many items are visible to your largest customer, and how many to your smallest?
03.02Take twenty items at random. Can a buyer find each one without calling you?
03.03Do you sell in units that differ from how you stock and pick?
03.04Do minimums, increments or case packs differ between customers?
03.05Do customers order from their own part numbers or saved lists more often than by browsing?
03.06Is stock one number, or per warehouse with allocation rules?
03.07Do you sell configured, cut-to-length or made-to-order items?
03.08Is any customer contractually forbidden from buying specific items?
03.09How current does availability have to be before it misleads a buyer: seconds, minutes, or overnight?
04    WHAT HAPPENS AFTER SUBMIT
04.01What is the system of record for an order, and can it accept an order created outside it?
04.02Should a portal order land as a firm order, or as a pending order that a rep releases?
04.03What happens today when a customer is over their credit limit, and who decides?
04.04Can your ERP return available credit in real time, or only a balance from last night?
04.05Which system owns net terms, and can terms differ per ship-to location?
04.06When an order fails to post to the ERP, who finds out, and how?
04.07Are open invoices, aging and statements reachable through an interface, or only as printed reports?
04.08If a buyer pays online, which system applies the payment against the invoice?
04.09Do you take payment at order time, on terms, or both depending on the customer?
04.10Does anything downstream depend on a rep touching the order?
04.11What is your ERP's integration surface: a supported API, a middleware layer, a database, or nightly files?
04.12Who inside your company can answer the previous question without calling a vendor?
makro
Edition 01 · 2026

Forty-two questions, answered by you

The B2B portal readiness audit.

The cost of a self-serve B2B portal is set by your pricing model and your ERP, not by the storefront. Score yours before anyone quotes you.

Questions
42, in four sections
Scored out of
84
Written for
Distributors and manufacturers
Time to complete
Under an hour, with two people

Section 01 · 10 questions

Who buys from you.

Identity and hierarchy. Every answer here decides how many records exist, who maintains them, and which system owns the customer.

 The question What the answer changes012
01.01Does one buying organisation ever hold more than one account number in your ERP?Each account number becomes a company or a location. Duplicates reach the buyer as two balances.
01.02Can one person legitimately buy for more than one of your customers?Shopify models a contact against several companies. Most ERPs model a contact against one. The gap is yours to close.
01.03Does your largest customer buy to more than one address, and does each address carry its own price?Price lists attach per company location. Per-address pricing is configuration. Per-address anything else is code.
01.04Who inside the customer approves an order above a threshold, and does that person exist in a system today?Spending limits and approval routing need a named approver record. If none exists, someone maintains it from launch.
01.05Do your customers require a purchase order reference on the order, or on every line?Order-level PO capture is standard at checkout. Per-line references become custom line attributes and an ERP mapping.
01.06Should a buyer see orders placed by other people in the same company?Visibility is a policy decision, not a default. Get it wrong and you either leak information or frustrate the account.
01.07Is every buyer contact in your customer master a person, with an address of their own?A shared mailbox cannot hold a per-person spending limit, an approval role, or a passwordless identity.
01.08Do you sell the same item to trade customers and to the public?One storefront serving both needs catalogue separation and price separation, decided before design starts.
01.09Do you have customers under a parent that negotiates centrally and buys locally?The native model is company, then location. Two levels. A third level lives in your ERP and is mapped in deliberately.
01.10How does a new trade customer get an account today, and who approves it?A self-serve application with an approval step is a build. A rep-created account is a process. Choose before scoping.
Section 01 · Who buys from you03
Shopify Plus development store 48h from request to staff invite

Skip the demo. Get the store.

We stand up a real Shopify Plus development store with B2B switched on and the data already in it: one company account, two buyers on different spending limits, a contract price list, net 30 terms and a quick order pad. You are added as staff. You click through the whole thing yourself, with nobody on the call.

admin.shopify.com/store/your-sandbox/admin
Shopify admin home for a new sandbox store
Your own Shopify admin, on day one. Companies, price lists and buyer permissions are already loaded under Customers.
  1. 01
    You send three fields. Store name, the email to add as staff, and the ERP you run.
  2. 02
    We provision and seed it. B2B enabled, companies, price lists, terms and test orders loaded.
  3. 03
    Shopify emails your invite. Inside two business days. The store stays yours.

Claim your sandbox

A working Plus store with B2B enabled and test data in it.

What we will call your sandbox
Shopify sends the staff invite here
So the test data matches your object model

No cost, no sequence, nothing to cancel. If it is not useful, close the tab.

Distributors who stopped
taking orders by phone.

NewPro Containers
NewPro Containers

Wholesale horticultural containers, sold to growers on contract pricing with pallet-level breaks.

Shopify PlusB2B company accounts
ERPPricing and stock integrated
Ennis Fabrics
Ennis Fabrics

Upholstery supply across North America, with trade accounts buying by the roll against account terms.

Multi-regionTwo entities, two currencies
TradeAccount-only catalogue
Fumex
Fumex

Industrial fume extraction, configured systems quoted by engineers then bought self-serve.

QuotesDraft order to self-checkout
ConfiguratorEngineered product paths
Clarius
Clarius

Handheld ultrasound sold to clinics and health systems, where the buyer is a procurement committee.

GlobalMulti-market rollout
RegulatedCredentialed purchasing

An assessment, not a proposal.

Two weeks. We map your pricing model, your ERP objects and the order paths your buyers actually use, then hand you a scope with fixed numbers. You keep the document whether or not you build with us.

  • Pricing and customer hierarchy mapped
  • ERP object and field inventory
  • Integration architecture, named systems
  • Fixed-scope build plan and timeline

Talk to an architect

Thirty minutes with the person who would scope the build.

Same business day reply. No sequence, no drip.