Login
By OneChannelAdmin September 25, 2026 Ecommerce WMS & ERP

B2B Ecommerce for Distributors When Acme's Price Is $54

B2B Ecommerce for Distributors When Acme's Price Is $54

Acme's buyer opened the site and saw $80. The contract says $54. They called the rep, who retyped the order. B2B ecommerce for distributors has to show $54 before that cart exists.

A login that still shows the list price is a catalog with a password on it.

What does B2B ecommerce for distributors change on the page?

The same SKU can carry a different price, a different minimum, and a different assortment for each account. Acme should not see Beta's price. A guest should not see either contract. The page changes after you know who is buying, not after the order is placed.

GS1 US describes a GTIN as the key for a trade item. The item can be shared. The price is not part of that key. FILTER-12 keeps one product id while Acme and Beta pay different amounts.

The FTC's advertising FAQ says advertisers must have proof for express and implied claims. A struck-through $80 on Acme's screen implies a discount off a price you offer. If Acme's price has always been $54, show $54. Do not paint a fake comparison.

What does Acme see?

FILTER-12, example numbers, not a live price list.

Account Price on the page Minimum order Can they check out
Acme, contract $54 6 Yes, at 6 or more
Beta, list $80 1 Yes, at 1 or more
Guest No contract price None No, send them to sign in

Acme typing 4 should get a clear stop, not a cart that the warehouse will refuse later. Say the minimum on the product page. Six at $54 is $324. Four would have been $216, and that order should not exist.

Beta never sees $54. If a salesperson pastes Acme's link into a group text, the price has to depend on the login, not on a shared URL.

Who is allowed to place the order?

Acme has two logins in this example. The buyer can build the cart. An order at $500 or more needs the approver before it hits the warehouse.

$324 is under that line, so the buyer's click is enough. A second SKU that pushes the order to $540 waits.

Write the threshold in the account, not in a rep's inbox rule. When the approver is out, the cart stays unreleased. Do not teach the buyer a backdoor login "just for today." That second login is how the $54 price leaks to someone who should see $80.

Ship-to addresses belong on the account too. A new job site is an address you add, not a note in the comment field that the picker might miss. The warehouse should not guess which dock from "same as last time."

What stock number can the site show?

On hand is 40. Committed on open orders is 6. Available is 34.

Acme should see 34, or "in stock" only if your rule treats 34 as enough for their minimum of 6. They should not see 40.

If Acme orders 6, available becomes 28 for the next account. Beta ordering 30 after that should be told you have 28, and the rest is a backorder only if you accept backorders. Silent acceptance of 30 ships a promise you cannot pick.

Inventory management is the count the storefront should read. A nightly spreadsheet upload is already wrong by the time the buyer checks out at 4pm.

Contract price and stock are different problems. You can have the right $54 and still oversell. You can have 34 available and still show $80 to Acme. Fix the one the buyer is looking at, then check the other before you call the channel done.

What mistake shows the wrong price?

One price on the product, with the contract applied later as a credit memo. The buyer already approved $80 inside their company. Your credit for $26 a unit does not unwind their internal approval, and it trains them to ignore the site.

Another miss is a shared login named "counter." Everyone is Acme, including a new hire who should not see contract cost. Give people their own logins. Turn off the shared one.

A third miss, and this one is quieter, is copying Beta's assortment onto Acme because the import was "all accounts." Acme's contract might exclude a product line. If the row is missing, the SKU should be hidden, not shown at list "so they can ask."

B2B storefronts in OneChannelAdmin are meant to keep that account price, the catalog, and the order in one place. The rep still handles the odd quote. The repeat $54 order should not need them.

How do you publish one account price?

  1. Create FILTER-12 once, with a list price of $80 in this example.
  2. Attach Acme's contract price of $54 and a minimum of 6. Leave Beta on $80 with a minimum of 1.
  3. Sign in as Acme and confirm the page shows $54, not a crossed-out $80.
  4. Try a quantity of 4. Checkout should refuse it. Try 6 and confirm the line is $324.
  5. Sign in as Beta on the same URL and confirm the price is $80.
  6. Place Acme's order for 6 and confirm available drops by 6 from 34, not from the on-hand 40.
Acme cart at quantity 6 and $54, with a quantity of 4 blocked by the minimum

Save a screenshot of Acme's $54 and Beta's $80 from the same hour. If a later import makes them match, you will know which file did it.

Product data still has to be true for every account. A contract price does not excuse a title that claims a pack size you do not sell.

Purchasing replenishes FILTER-12 from demand you actually accepted. Orders you let through under the minimum will distort that demand.

What does the approver actually see?

The approver should open the same order the buyer built, not a forwarded email that says "please release Acme." The screen shows FILTER-12, quantity 6, $54, and the extended $324. If a second line pushed the total to $540, the release button is the approver's, and the warehouse does not see the order yet.

Write a reason when they reject it. "No" with an empty note sends the buyer back to the phone. "Over the monthly cap" tells them what to change.

In this example Acme's cap is $2,000 for the month, a figure you chose, not a standard. A $540 order that fits under the cap should not sit all afternoon because nobody knew it was waiting.

Log the release time next to the approver's name. If the warehouse picks at 2pm and the approver releases at 4pm, that pick should not have started. The timestamp is what ends the argument.

Notify the approver when the cart crosses $500. A badge they never look at is the same as no approval step. If they are out, name a backup on the account. Do not hand the buyer the approver password for the afternoon.

After release, the buyer sees a status of released, and available drops by the quantity you accepted. Releasing an order without decrementing stock is how Beta still sees 34 and both accounts get the same six units.

Keep the contract PDF off the storefront if the only thing the buyer needs is the price. The $54 is already the result of that contract. Posting the whole agreement on a shared screen is how a list-price customer learns Acme's number.

Questions about account pricing

Should Acme see a crossed-out list price?

Show the contract price by itself when that is the only price you offer them. A struck-through $80 implies a comparison you may not be making. The FTC expects proof behind a price claim.

What happens if Acme orders fewer than 6?

The site should stop the order. In this example 4 units must not reach the warehouse. Tell them the minimum on the page, before they build a cart their approver will reject.

Can the buyer and the approver share a password?

Each person gets a login. A shared "counter" password makes every click look like Acme and lets the $54 price travel with anyone who has it.

Which quantity do you show, 40 or 34?

Show what you can still sell. On hand 40 with 6 committed leaves 34. After Acme takes 6, the next buyer should see 28.

Are $54 and $80 real street prices?

Those amounts are an example so the two accounts are easy to tell apart. Load the contract you actually signed before a buyer can check out.

OneChannelAdmin Team writes about distributor catalogs, account prices, and the stock figure a buyer is allowed to trust.

Scale Your Multi-Channel Commerce Operations with 1CA

Discover how OneChannelAdmin unifies inventory management, WMS warehouse operations, order fulfillment, and automated marketplace repricing.