Shopify B2B and wholesale pricing without Plus

Company profiles, catalogs, quantity rules and net terms now run on every Shopify plan, three catalogs at most. What still needs Plus.

Published Updated 8 minute readShopify
A building with a price tag

A Shopify community forum thread titled “How to set up B2B selling without using Shopify Plus” has been collecting answers for two years, and most of them are out of date. They were written when native B2B, with company accounts, catalogs and net terms, was a Plus feature. In 2026 Shopify moved the core of it to every plan, with limits. The right answer changed, and the wholesale apps that used to be the only option are now the second option.

What did not change is the line where a standard plan stops. It moved. It is still there, and it sits at a specific place: three catalogs, and pricing that varies per company rather than per group.

TLDR

On Basic, Grow and Advanced you get company profiles, up to three active B2B catalogs assigned through Markets, quantity rules, volume pricing, net terms and B2B customer accounts. That covers a store with up to three price groups. Plus is needed for unlimited catalogs, catalogs assigned directly to a company for contract pricing, deposits, and any custom app that uses Shopify Functions. A custom app on a standard plan works through the Admin API: it keeps the three catalogs in sync with your ERP and runs the account approval flow.

What a standard plan gives you now

Shopify’s B2B features by plan page is the source, and the standard-plan column is longer than most people expect:

Feature Basic, Grow, Advanced Plus
Company profiles with locations and contacts Yes Yes
Catalogs with fixed prices or percentage adjustments Up to 3 active, assigned through a B2B market Unlimited, assigned to a market or directly to a company
Quantity rules (minimum, increments) Yes Yes
Volume pricing (price breaks by quantity) Yes Yes
Net payment terms Yes Yes
Deposits and partial payments No Yes
B2B checkout Yes; the contextual version on Advanced only Full contextual checkout
B2B customer accounts and reorder Yes Yes

A catalog is a price list: a set of products with their wholesale prices, or a percentage off retail. On a standard plan a catalog is attached to a B2B market, and companies are put in that market. Three markets, three catalogs, three price groups. Quantity rules and volume pricing live on the catalog too, so “cases of 12, minimum 3, price drops at 10 cases” is a setting.

That is the whole feature list the forum thread was asking for, on the plan the thread was asking about.

Where it stops

Three catalogs. A distributor with retail, trade, and distributor pricing is fine. Add a fourth group and it is Plus.

Per-company pricing. On a standard plan, a company gets the price list of its market. Company A and Company B in the trade market see the same trade prices. A contract price for Company A alone means a catalog assigned directly to that company, and direct assignment is Plus. This is the limit most B2B stores hit first, because contract pricing is how wholesale works once the accounts are big enough to negotiate.

Deposits. Plus only.

Custom apps with Functions. This one matters if you have read older guides, including a previous version of this one. Shopify Functions, the checkout-time programs that apply discounts and validate carts, run on every plan when they ship inside a public App Store app, and only on Plus when they ship inside a custom app built for your store. A developer offering to write a discount Function for your standard-plan store is offering something Shopify will not install.

Where a custom app fits on a standard plan

Everything above is configured by hand in the admin. That is fine for a store with thirty trade accounts and a price list that changes twice a year. It stops being fine when the price list lives in an ERP and changes weekly, or when new accounts arrive daily and someone has to check each one.

A custom app on a standard plan uses the Admin API, which needs no Plus, and it does the two jobs the admin screens cannot:

Price list sync. The ERP holds the price groups. The app reads them nightly and writes them into the three catalogs through the catalog and price list objects in the Admin API. Fixed prices per variant per catalog, quantity rules, and the product list per catalog. Nobody retypes a price.

Account approval. A trade customer applies through a form. The app creates the company as pending, notifies the sales lead, and on approval creates the company location, assigns the market, and invites the contact. The record of who approved what is in the app. The native B2B customer account does the login from there.

Two smaller jobs the same app tends to pick up: a nightly check that every company is in exactly one market, because a company in no market sees retail prices and wonders why, and a sync of company data back to the ERP so invoices carry the right account number.

None of that is a Function. All of it works on Grow.

When Plus is the answer

Contract pricing is the trigger. The moment the sales team negotiates a price for one account, that account needs its own catalog, and only Plus assigns a catalog to a company. A custom app on Plus then maintains one catalog per contract account from the ERP, and the number of catalogs is no longer a limit.

The second trigger is checkout logic: a discount that depends on the customer’s history, a validation that blocks an order below the account’s credit limit, a shipping option that only some companies see. Those are Functions, and Functions in your own app are Plus.

Plus starts at $2,300 a month on a three-year term, or $2,500 on one year. Against a wholesale line doing $40,000 a month it is a real cost and a real decision. Against a line doing $400,000 a month, contract pricing alone pays for it.

A worked example

Take a packaging supplier on the Advanced plan with sixty trade accounts. Their ERP holds three price groups. Their requirements: each account sees its group price, cases only, minimum order of $250 for trade, and new accounts approved by a named person before they see anything.

On a standard plan, that is: three B2B markets, one catalog each, synced from the ERP by a custom app; quantity rules on the catalogs for the case sizes; the minimum order set on the B2B checkout; the approval flow in the app. No Functions, no Plus. A fixed build of around four weeks in the $3,500 to $6,000 band.

Six months later the sales team signs a contract with a chain that wants its own prices on forty products. That is direct catalog assignment, so it is Plus. The app already syncs price lists, so adding a per-company catalog is a week of work, and the Plus fee is the real cost of the decision. The store owner can see that arithmetic before signing the contract, which is the point of knowing where the line is.

Setting up the three catalogs

For a store on a standard plan doing this by hand, the admin path in order:

  1. Settings, then Markets. Create a B2B market per price group: Trade, Distributor, and whatever the third is. Each market is a container for companies and a catalog.
  2. Products, then Catalogs. Create a catalog per market with the price list: fixed prices per product or variant, or a percentage adjustment off retail, plus quantity rules and volume pricing where the group needs them. Attach each catalog to its market.
  3. Customers, then Companies. Create each company with its location and its main contact, and put the company in the right market. The contact receives an invitation to a B2B customer account.
  4. Settings, then Checkout, for the B2B checkout settings and net payment terms defaults; net terms themselves are set per company.
  5. Place a test order as a trade contact and check the prices, the quantity rules and the terms offered at checkout.

That is an afternoon for a store with a stable list. The custom app described above automates steps two and three from the ERP, which is what makes it hold up when the list changes every week and accounts arrive every day.

What it costs

Setting up native B2B by hand with a price list that rarely changes: a day, and a wholesale app is not needed either. Do this yourself or as a small sprint.

A wholesale app: $20 to $100 a month, still the right answer when your pricing is a flat percentage for tagged customers and you do not want to set up markets and companies.

A custom app that syncs catalogs from an ERP and runs approvals: a feature sprint, usually $3,500 to $6,000, two to four weeks, on any plan.

Contract pricing and checkout logic: Plus, then the same app extended with per-company catalogs and Functions. That is usually a store build, from $4,500 and often more.

The question to answer before any of it: how many distinct price lists do you actually have? Three or fewer, by group, is a standard plan. More than three, or one per customer, is Plus. Our Shopify development page lists what a B2B build includes, and the Scripts to Functions guide covers the checkout logic side for stores already on Plus.

Questions

Does B2B on Shopify need Plus?

Not anymore for the basics. Company profiles, up to three active catalogs, quantity rules, volume pricing, net payment terms and B2B customer accounts are on Basic, Grow and Advanced. Plus adds unlimited catalogs, catalogs assigned directly to a company for customer-level pricing, deposits and the full contextual checkout.

Can a custom app use Shopify Functions on a standard plan?

No. Shopify's Functions documentation is explicit: only Plus stores can use custom apps that contain Functions. Public App Store apps with Functions work on any plan. A custom app on a standard plan works through the Admin API, which is enough for catalogs, price lists and approvals.

What about net 30 terms?

Net payment terms are part of native B2B on every plan. Set them on the company, and the B2B checkout offers them.

Have this problem on your store?Two sentences about it get you a written quote, or a plugin or app recommendation, within 48 hours.
Get a fixed quote