Skip to main content
💰 Pricing

How B2B pricing works

How bulk form prices show in the form and are checked again at draft checkout.

Written By Floris de Vries

Last updated 19 days ago

Overview

A bulk order form shows a B2B price to the customers who can see that form. Catalog prices in Shopify stay unchanged for everyone else.

A customer sees one bulk form. The price rules of that form are the ones that apply. Rules from other forms do not stack, and inside one form you use one strategy: individual prices, one fixed price, or a percentage off.


Where the price is used

  • In the form — the buyer sees the B2B price while entering quantities.

  • At checkout — a line with a B2B price goes through draft-order checkout. The draft order is created with that unit price.

The regular product page price does not change because of the bulk form. Custom Pricing and Volume pricing are separate modules and can show a B2B price on the product page.


Server-side price check

Under B2B pricing → Bulk forms → Design & settings, keep Validate custom prices on the server on. Draft checkout then recalculates the unit price from the form and the customer, and corrects a cart price that was changed in the browser.

Turn it off only as a temporary fix if price resolution fails. While it is off, checkout trusts the price that is already on the cart line.

The app embed must be enabled on the active theme, or the draft-checkout script does not load. Do not also turn on Use draft order logic in Tax Exempt. That VAT draft flow is separate and should not run at the same time.


Pricing methods

  • Individual prices — a price per product or variant.

  • Fixed price — one price for every product in the form.

  • Percentage discount — a percent off the Shopify price, so it follows catalog price changes.


When the price is missing

  • The form is off, or Bulk Forms is turned off on the B2B pricing page.

  • The customer does not match the visibility rule, so another form (or no form) is shown.

  • The product is not in the form.

  • No price rule is set.

  • The app embed is off, so checkout never switches to the draft order.