Selling
B2B: Company Accounts, Price Lists & Net Terms
Give wholesale buyers their own accounts, negotiated price lists with volume breaks, net-terms invoicing inside a credit limit you set, and quote-to-order and payment-link checkout — all in the merchant dashboard.
Overview
BestWebby's B2B suite lets you sell to businesses the way businesses actually buy: named company accounts with their own buyers, negotiated prices instead of retail, invoices due later instead of pay-now, and merchant-built orders you send as a single payment link. Wholesale price lists and invoices are on the Growth plan and above; B2B company accounts, net terms and credit limits are on the Scale plan.
Everything lives under B2B accounts in the dashboard and is built on the same billing and order engines as the rest of the platform, so a wholesale sale flows into your normal fulfilment, order, and analytics pipeline. You stay in control at every step: you set the price list, you set the terms, you set the credit limit, and you approve who can order.
The suite has four parts:
- Company accounts — an organisation with one or more buyers, an assigned price list, net terms, a credit limit, and a tax-exempt flag.
- Price lists — per-company price overrides with optional volume breaks.
- Net-terms invoicing — buy-on-account orders that issue an invoice due in N days instead of charging immediately, capped by a credit limit.
- Draft orders and quotes — merchant-built carts sent as a payment link, and accepted quotes converted straight into real orders.
Step 1: Create a company account
Go to B2B accounts → Companies → Add company and fill in:
- Company name (required).
- Status —
Pending,Active, orSuspended. Only an Active company gets B2B pricing and can buy on terms; a pending or suspended account is blocked. New accounts start asPendingby default so nothing goes live before you approve it. - Net terms —
Pay on order,Due on receipt, or Net 7 / 14 / 15 / 30 / 45 / 60 / 90. - Credit limit — the most the company may owe you at any one time. Leave it blank for unlimited.
- Price list — the negotiated list this company's buyers see (or none, for catalogue prices).
- Tax-exempt — for resale or charity accounts. When set, this account's orders are billed with no tax.
You can activate, suspend, or delete a company from the list, and edit its terms, credit, price list, and tax status any time on the company detail page.
Step 2: Add buyers
Open a company and use Buyers → Add buyer. Each buyer has an email and a role:
- Buyer — orders on behalf of the company.
- Approver — an internal approval role on the account.
- Admin — the primary contact; net-terms invoices are addressed to a company admin when one exists.
The buyer's email is their identity even before they've created a storefront account. When they later sign up with the same email on your store, BestWebby links their storefront customer record to the company automatically, and they see the company's negotiated prices at checkout.
Tip: Add at least one buyer or admin before billing a company on terms — the net-terms invoice needs a contact email to send to.
Ship-to addresses
A company can keep a shared address book: its warehouses, stores and job sites. Open the company and use Ship-to addresses → Add address. Give each one a name buyers will recognise (Main warehouse, Store 12), then the street address, city, province or state, postal or ZIP code and two-letter country code (CA, US). An attention line and a phone number are optional; without a phone, the buyer's own is given to the carrier. Addresses are checked against their country's rules when you save them, so one you saved is never refused at checkout.
- Default. The first address you add is the company's default, and there is only ever one. Make default moves it. Removing the default makes the oldest remaining address the default.
- At checkout. A buyer signed in to an account that belongs to an Active company sees Ship to a … address above the address form, with the default already chosen. Picking one fills in the form; the order, and an order placed on account, is shipped to the address as you saved it, not to anything typed over it. Typing over a picked address makes it a one-off typed address instead. An address can only be used by buyers of its own company: an address from any other company is refused, and nothing is ordered.
- Buyers adding their own. Off by default: only you add addresses. Tick Buyers may add addresses under the book to let the company's buyers save a new one from checkout (they name it and choose Save this address for …). A buyer can add, but cannot edit, remove or change the default; addresses a buyer added are marked Added by a buyer on the company page. A company holds up to 200 addresses.
Adding, editing, removing an address and changing Buyers may add addresses are recorded in the audit log with the address's name, not its contents, and need the same permission as the company's other edits.
Step 3: Build a price list
Go to Price lists → New price list, give it a name and a currency, then open it to add entries. Each entry:
- Overrides a product's catalogue price for buyers on this list.
- Can price one option of a product (the 1 L bottle but not the 5 L, say) or All options. Find the product by typing its name, then pick the option.
- Can carry a volume break (a minimum quantity). Add several entries for the same product at different minimum quantities and the buyer automatically gets the deepest break they qualify for.
For example, on one product you might set 250.00 from quantity 1, 230.00 from quantity 6, and 210.00 from quantity 12. A buyer ordering 8 units pays 230.00 each; a buyer ordering 15 pays 210.00.
Case packs: selling in multiples
Some products only ship by the case. Set Sold in multiples of on the product (next to Min order qty and Max order qty in the editor) and shoppers can only order that product in multiples of it: 12, 24, 36 for a case of 12, never 13. Leave it blank (or 1) for any quantity.
- What shoppers see. The quantity buttons on the product page, in the cart and in the cart drawer step by the pack size and start at the first pack, with Sold in packs of 12 under them (in French on a French page). A product sold in packs is never added from a Featured product section's quick-add button; the button opens the product page instead.
- What is refused. Checkout, an order on account, a draft order, a net-terms order from the dashboard, and orders placed through the agent API or a UCP checkout all refuse a quantity that is not a multiple, before anything is charged, reserved or invoiced, and say which product and which pack size. The minimum and maximum are checked first, as before. A privately agreed price (an accepted offer or a won auction) keeps its own quantity.
- Saving it. The pack size must be a whole number from 1 to 10,000. A pack that leaves no quantity between the minimum and the maximum (a pack of 12 with a maximum of 10) is refused when you save it, because nobody could order the product.
- Imports, exports and the API. The product export has an
orderIncrementcolumn, and both product imports read it (also as Pack size, Case pack or Sold in multiples of); a blank cell leaves the product's pack alone, and a bad one skips the row with the reason. The public API reads and writes it asorder_increment. A changed pack size, minimum or maximum is in the product's audit-log entry with its old and new value.
A company's own pack size. A price-list entry can carry its own Sold in multiples of for buyers on that list. It replaces the product's pack for the line that entry prices (the same volume break), stricter or looser: a list can sell a product by the dozen to one customer while it sells in singles to everyone else, or the other way round. Leave it blank and the product's pack applies. A signed-in buyer whose list sets its own pack sees that pack before checkout: the quantity buttons on the product page, in the cart and in the cart drawer step by it, and Sold in packs of shows its size. Checkout checks it again, so a quantity that is not a multiple is still refused there with the list's pack. Signed out, or on a list priced in another currency than the site's, the product's own pack applies.
List currency. A list's prices are plain amounts in the list's currency, and they are used only when the charge is in that same currency: at checkout, the currency of the site the buyer is on; on a draft or net-terms order, that order's currency. They are never converted. Where the currencies differ, buyers on the list pay your regular prices (a wholesale tier discount still applies), and a draft or net-terms order that would have used the list is stopped with the reason. New lists start in your store's currency. If a list shows a currency warning and you entered its prices in your store's currency, choose Change this list to … on the warning; no price on the list changes.
How a company buyer's price is decided
For every line, BestWebby resolves the effective unit price with a strict, predictable order of precedence:
- Price-list entry — if the company's assigned list has an entry for the option being bought, or else an All options entry for the product, the best qualifying volume break wins. An entry for one option never prices another. A negotiated list price always beats a tier discount.
- Wholesale tier — if there's no list entry but the company matches a wholesale tier, the tier's percent discount is applied to the catalogue price, as long as the order reaches the tier's minimum order (see below).
- Base — no list entry and no tier means the buyer pays the catalogue price.
Prices are computed server-side in whole cents, and a discount can never push a price below zero. The storefront and the dashboard use the same precedence. Draft and net-terms orders are priced per product, so they use a list's All options entries and not entries for a single option.
Wholesale tiers and their minimum order
Tiers are set up under Channels → Wholesale → Tiers. A tier has a name, a percent discount and a Minimum order in your store's currency. Each wholesale account belongs to a tier, and can also have a discount percent of its own, which replaces the tier's percent.
A tier's discount applies only to an order that reaches its minimum:
- What counts is the goods in the order at their price before the tier discount: the price-list price where a list entry applies, otherwise your catalogue price. Gift cards, partner items and prices agreed with one buyer (offers and auctions) don't count, and neither do tax or shipping.
- Below the minimum, the order still goes through. Those lines are charged at the price-list or catalogue price, without the tier discount, and checkout tells the buyer the minimum and how much more to add to get their wholesale price.
- An account's own percent keeps the tier's minimum. The percent is replaced; the minimum still applies.
- The minimum is in your store's currency. Nothing is converted, so on a site that charges in another currency the tier discount does not apply, and checkout says why. A minimum of 0 means no minimum, and the discount then applies in every currency.
- The buyer sees it before paying. A signed-in wholesale buyer sees their discount and minimum on the checkout page before placing the order, then, next to the prices on the payment step, whether this order reached it. The prices on the payment step are the prices charged.
- Draft and net-terms orders follow the same rule. A line you price by hand counts toward the minimum at your price.
Step 4: Sell on net terms
When a company has net terms configured, an order can be placed on account instead of charged immediately. BestWebby issues a proper invoice due in the company's terms window (for example, Net 30) rather than taking a payment.
Before the invoice is issued, the credit limit is checked first. BestWebby adds up everything the company already owes on its open invoices and compares outstanding + this order against the limit:
- If it fits, the invoice is issued and the company's balance goes up by the order total.
- If it would go over, the order is blocked. You'll see the outstanding balance, the order total, the limit, and how far over it goes. Collect a payment against the open balance, or raise the limit, then try again.
- A credit limit is in one currency, and amounts are never converted. Only open invoices in the order's currency count toward it. While the company has an unpaid invoice in any other currency, it cannot be measured against the limit, so a terms order is refused until that invoice is paid or voided. You are told which currencies are owed; a buyer at your checkout sees no credit available and can pay by card. A company with no limit is not affected.
Concurrent orders for the same company are serialised, so two orders placed at the same moment can't both slip past the limit. The credit check is always computed from your committed invoice records — it never trusts a total sent from the browser.
Tax on a terms invoice follows the account: a tax-exempt company is billed with no tax. Otherwise each line is taxed from your Tax rules for the company's address, the way checkout taxes it: a product's tax category picks its rate, so basic groceries you zero-rate are zero-rated on the invoice too, a regional rule set to add to the country rate is charged with it, and the invoice shows each line's rate. A line that is not one of your products (shipping, for example) is taxed as general goods. The total the buyer reviews is the invoice amount and the amount the company owes; an invoice already issued never changes. Due on receipt (0 days) still produces an invoice rather than an immediate charge.
Bill on net terms from the dashboard
A terms order starts in the same composer as a draft order (see Step 5). You can also start it from a company's own page: Bill on terms… in its Terms & credit card opens the composer with that company chosen. Choose a company that has net terms, add the lines, then choose Bill on net terms instead and confirm with Issue invoice. The lines are priced exactly as a draft's would be, and a unit price you typed is kept. No draft or payment link is created.
When the invoice is issued, the composer shows its number, its total, when it is due, and what the company owed before it. You'll find it under Wholesale → Customer invoices, where you can send it, download its PDF and record payments.
The same step creates the order for the goods, so it goes through your normal fulfilment: it appears under Orders as Processing, with the PO number and reference, and its packing slip lists what to send. The composer links to it. The products on it are taken out of stock at once (from your locations, if you use them). If there is not enough stock, the order is still created and the shortfall is recorded on it as a backorder; the composer tells you how many units. Payment is recorded on the invoice, not on the order. If the invoice cannot be issued, no order is created either.
If BestWebby can't issue it, the composer says why and nothing is billed:
- the company is pending or suspended (only an Active account buys on terms);
- the company has no net terms;
- the order would go over the credit limit (you see what is owed now, this order, the limit, and how far over);
- the company has unpaid invoices in another currency, which cannot be counted against its credit limit;
- a PO number is required and none was given (see Step 6);
- the company has no buyer or admin to address the invoice to.
Issuing a terms order is a finance action, so it requires the finance permission. Bill on net terms instead only appears for a member who has it, and only when the chosen company has net terms.
Buyers order on account from your store
A buyer who is signed in to your store with an account that belongs to an Active company with net terms sees one more way to pay at checkout: On account (net 30 days) (with the company's own terms), with the credit still available under its limit. Nobody else sees it: not a guest, not a buyer of a pending or suspended company, not a company without terms. It needs the B2B accounts feature on your plan, and a storefront that charges in your store currency.
- The buyer fills in the shipping address, chooses a shipping method and gives a PO number if their account needs one (see Step 6).
- Review order on account shows the invoice the order will be: the items at the company's prices, shipping, the tax for the shipping address and the total, with when it is due.
- Place order on account issues the invoice and creates the order, in the same way as Bill on terms in the dashboard: the credit limit is checked against what the company already owes, the goods are taken out of stock (the size or colour the buyer chose), and the order appears under Orders as Processing with its PO number. You are notified of the new order, as for a card order. If the total changed since the buyer reviewed it, nothing is placed and they see the new total first.
- The buyer gets an order confirmation email, like a card order's receipt but without any "paid" wording: it says the order was charged to the company's account on its terms (for example, Net 30), gives the invoice number and its due date, and lists the items, shipping, tax and total in your store currency, with their PO number and reference. It is sent once per order: if the buyer's connection drops and they press Place order on account again, they get the order they already placed, not a second order, invoice or email. Your own wording for the order confirmation (Settings → Email design) is used for card orders only, because it is written for an order that has been paid. The invoice itself is not emailed automatically; send it from Wholesale → Customer invoices when you want the company to have it by email.
The prices on account are the company's: its price list, then its wholesale tier, then your pricing rules, as at a card checkout. Discount codes, gift cards and flash-sale prices are not applied on account. Some items can only be bought by card, and the buyer is told which: gift cards, digital products and services, items sold through Network Search or Amazon, lot- or serial-tracked items, made-to-measure clothing, personalised or gift-wrapped items, and registry gifts.
If the order would take the company over its credit limit, it is refused with what is still available, and the buyer can pay by card instead. The buyer finds the order, and its invoice to download, under My account → Orders.
Step 5: Draft orders and payment links
A draft order is a cart you build for a company or an individual customer, then send as a single payment link.
- Go to B2B accounts → Draft orders → New draft order and compose it:
- Company account — choose a company, or leave No company for an individual customer's draft.
- Customer (optional) — search your customers by name, email or phone to attach one.
- Products — search by name or SKU and pick a product to add it as a line (picking it again adds one to its quantity). Set each line's Quantity.
- Unit price — leave it blank and the line is priced for you: for a company, its price list, then its tier, then your catalogue price; with no company, your catalogue price. Type a price to override it. Prices are in your store currency, the one your catalogue is in.
- Buyer's PO number and Buyer's reference — optional on a draft, with the same rules as everywhere else (see Step 6).
- Link payable for (days) — how long the payment link works once sent; 14 unless you change it.
Choose Create draft order. The composer shows each line at the price the server worked out and the subtotal. When the company's wholesale tier has a minimum this order doesn't reach, it says so, for example "Below the Gold minimum of $500.00: the tier discount is not applied", with how much more would reach it. If the draft can't be created, the reason is shown and the lines it is about are marked: for example, a company price list in another currency than the draft, where you type those lines' prices yourself or change the list's currency.
- Send link moves the draft from
drafttosentand activates a payment URL at/pay/<token>. Sending copies the link to your clipboard so you can paste it into an email or message. - The buyer opens the link — no login required, the unguessable token is the authorisation — and pays.
- On a confirmed payment the draft becomes a real order in your pipeline.
The payment is captured on your own connected payment gateway; funds go directly to you. BestWebby verifies the payment succeeded and matches the draft total before marking anything paid — it never fakes a sale. If a store hasn't finished connecting payments yet, the link says so instead of failing silently.
Payment links expire after a window you set when creating the draft (14 days by default). A paid, cancelled, or expired link reports its state honestly rather than accepting a second payment.
Step 6: Purchase-order numbers
Most businesses match every invoice to a purchase order before they pay it. BestWebby lets a company buyer give you theirs:
- At checkout on your store. A buyer signed in to an account that belongs to a company sees two extra fields: Purchase order (PO) number and Your reference (a person, department or project). Ordinary shoppers never see them. The same fields go on an order the buyer places on account (Step 4), and on its invoice.
- On a draft order's payment link. A draft attached to a company asks for the same two fields before the buyer pays. A PO you typed on the draft yourself is filled in already.
- On a net-terms order. Type the buyer's PO number and reference in the composer before Bill on net terms instead, and they are printed on the invoice and in its email.
The PO number and reference then appear on the order page, in the order list (the search box finds an order by its PO number or reference), on the packing slip, on the invoice and its PDF, in the invoice email, and in the order confirmation email. The order export has po_number and buyer_reference columns at the end.
Making a PO number required. Under B2B accounts → Companies → Purchase orders, tick Require a PO number from every buyer on net terms to require it store-wide, or open one company and tick Require a PO number on orders in its Terms & credit card. Either is enough. It only applies to an account that has net terms (Due on receipt counts): a buyer who pays on order is never forced to give one. When it is required, checkout, the payment link and the terms order all refuse to go ahead without it, and the buyer is told why.
What a PO number may contain. Up to 40 characters: letters, digits, spaces and . _ / # : -, starting with a letter or digit (so it can never be read as a spreadsheet formula). A reference is up to 80 characters and may also use letters with accents and , ( ) ' &. Anything else is refused with a message that says what is allowed. Whatever is stored is still escaped everywhere it is shown: on pages, in emails, in the PDF and in the CSV export.
Step 7: Turn a quote into an order
If you've sent a customer a quote from the Quotes tools, accepting it can create the order for you. Quote → order builds a real order from the quote's saved lines and totals — recomputed server-side from the stored quote, never from a client total — and tags the order so the tax carries over from the quote. Running it twice returns the same order rather than duplicating it.
Tips and gotchas
- Only active companies get B2B treatment. A pending or suspended account prices at catalogue and can't buy on terms — activate it first.
- Blank credit limit means unlimited. Set a number if you want a ceiling; leave it empty to allow any balance.
- Draft orders and quote-conversions don't decrement stock or capture payment on their own. A draft is paid through its link; a quote bills or fulfils through your normal pipeline. Keep an eye on stock for high-volume B2B orders.
- The credit limit counts open invoices, not paid ones. Once a company pays down an invoice, that headroom is available again for the next order.
- One currency per limit. An unpaid invoice in a different currency from the order stops terms orders until it is settled; it is never converted and added in.
- A sent link or a paid draft is history. You can cancel a sent draft (the link stops working), but you can't hard-delete it — that keeps an audit trail.
- A PO number is the buyer's, not yours. It is for their accounts team. Use the order's internal note for your own references.
- Every B2B action is audit-logged — company changes, buyer invites, price-list edits, terms orders, draft sends, and quote conversions all record who did what.
Where to start
Create one company account, mark it active, add a buyer, and build a small price list with a couple of volume breaks. Send that buyer a draft-order payment link to see the full loop end to end, then add net terms and a credit limit once you're comfortable extending credit.