Home›Products & Catalog›Wholesale & bulk pricing

Wholesale & bulk pricing

TitanCart gives you three tools for selling in bulk or to trade buyers: Bulk Buys quantity price breaks on each product, minimum, maximum and step quantities, and Customer Groups. They work independently. This article describes exactly what each one does in the current release, including the limits, so you can plan a wholesale setup that behaves the way you expect.

1. Quantity price breaks (Bulk Buys)

Open a product and go to its Bulk Buys tab. Each row is a tier with four fields:

  • Quantity — the line quantity at which the tier starts. 10 means “10 or more”.
  • Value and Type — with Absolute ($) the Value is the unit price the shopper pays at that quantity, not an amount off. A product priced at 10.00 with a tier of “10, Absolute, 8.50” sells at 8.50 each from ten units up. With Percent (%) the Value is a percentage off the product’s Price field: “10, Percent, 15” gives 15% off from ten units up. Percent tiers follow the Price field automatically when you change it.
  • Customer group — All customers or one of the store’s Customer Groups by name (for example Customer or Wholesale). Read the note below before you use anything other than All customers.

Use Add for a new blank row, Clone to copy a row and change one value, and the trash icon to delete a row. A row with an empty Quantity is discarded when you save. A tier of “1, Absolute, All” is never stored either: a price for everyone from the first unit is simply the product’s Price field, so set it there.

How the price is chosen. At any quantity the shopper pays the lowest of three candidates: the product’s Price (or its List price sale), the best Bulk Buys tier whose Quantity is at or below the line quantity and whose group matches the shopper, and any catalog promotion that covers the product. These never stack with each other. Cart promotions and coupons still apply on top at checkout.

A tier with Quantity 1 and Type Percent is a blanket discount for that group from the first unit. The headline price and the product cards show it as a sale price with the regular price crossed out.

What shoppers see

The product page shows a Buy more, save more table under the price: one cell per tier with the threshold (“10+”), the unit price at that quantity and “Save 15%”. Only tiers from two units up that beat the product’s current price are listed, and only the ones that apply to the viewer. In the cart the discounted unit price is on the line itself; there is no separate “bulk discount” row.

The tier follows the quantity in the cart. Adding more of the same product later, changing the quantity on the cart page and signing in all re-check the price for the quantity (and customer group) the line ends up with. A shopper who adds 5 and then raises the cart line to 10 gets the 10+ price; dropping it back to 3 returns to the regular price. A line priced by something other than the catalogue (a subscription plan, a bundle, a theme deal) keeps that price.

What the User group selector really does

  • All customers — every shopper, signed in or not. Use this for ordinary quantity breaks.
  • A named group (Customer, Wholesale, or one you created) — only customers who are members of that group (see section 3), not every signed-in account. A customer who registered without choosing the group does not get the tier. Shoppers who are not signed in are not members of any group, which is why there is no “Guests” choice.
  • A tier saved for a group that has since been disabled is shown as “not offered” and is kept as it is until you change it.

The selector cannot target your own groups, including the built-in Wholesale group. Pricing by custom group is on the roadmap.

TitanCart Lite: quantity pricing is a TitanCart Pro feature. Lite has no Bulk Buys tab and shows no Buy more, save more table.

2. Minimum, maximum and step quantities

Wholesale often means “no orders below a case.” Set that on the product’s General tab, in the Pricing / inventory section:

  • Minimum quantity to buy per product — the smallest line quantity allowed. Choices: Global, 1, 2, 3, 5, 10, 25, 50, 100.
  • Maximum quantity to buy per product — an upper cap per order line. Same choices.
  • Quantity step — orders move in multiples of this value. Choices: Global, 1, 2, 3, 5, 10.

Global, the default, means “use the store-wide value”. Those live under Settings → Checkout → Checkout Flow: Minimum quantity to buy per product, Maximum quantity to buy per product and Quantity step (0 means no limit, or a step of 1). The global fields accept any number, so a case size that is not in the product dropdown (6, 12, 24) is set store-wide, with the product left at Global. The same settings group has Number of available quantities: set it above 0 to replace the quantity box with a dropdown of that many valid quantities.

How they are enforced:

  • The product page quantity box starts at the minimum and its −/+ buttons move by the step. The quantity cannot exceed the stock on hand when inventory is tracked.
  • If a smaller quantity reaches the cart anyway it is raised to the minimum without a message. A quantity above the maximum is trimmed with “Maximum N per order — quantity adjusted.”
  • Steps count up from the minimum. With minimum 10 and step 10 the valid quantities are 10, 20, 30. With minimum 1 and step 5 they are 1, 6, 11, so set the minimum as well as the step.

Tip: for case-pack ordering set both the minimum and the step to the case size. Minimum 10 and step 10 gives 10, 20, 30.

3. Customer Groups

Customer Groups live under Customers → Customer Groups. TitanCart ships three: Guest, Customer and Wholesale. + New Customer Group asks for a Group Name and a Status (Active or Disabled); the list shows each group’s name, type and status, and a group can be disabled or deleted from its row.

A customer becomes a member of a group in one of these ways:

  • At sign-up. With Settings → General → Customers → Allow customer to sign up for customer group enabled, the registration form shows a Customer group dropdown. It lists every active group except Guest and any group that a subscription plan grants, and it defaults to “— None —”. Only a customer who picks a group here joins it.
  • Through a subscription. A plan in the Subscriptions extension can name a customer group. The customer joins it when the subscription becomes active and leaves it when the subscription is cancelled or expires, unless another active subscription grants the same group. This is how paid membership tiers work.
  • Marketplace vendors are kept in a Vendors group automatically while their vendor account is active.

There is no way to add a customer to a group from the admin. The customer page has no group field and the Customer Groups page has no members list. A Wholesale group can only be filled through the sign-up dropdown or a subscription plan. Admin-side membership is tracked as a known issue and is planned.

What membership drives today: group tiers in Bulk Buys (any group by name), per-group earning rates in Loyalty Rewards, and subscription-gated access. Promotions have no customer-group condition, and a customer can only join a group by choosing it when registering, so a Wholesale tier reaches only the buyers who picked Wholesale at sign-up.

The product editor’s General tab also has an Availability → User groups row of checkboxes (All, Guest, Registered user). It is not wired to anything: the choice is not saved and does not hide the product from anyone. Leave it at All.

4. A wholesale setup that works today

  1. On the product’s General tab set the minimum quantity and the step to your case size, or set them store-wide under Settings → Checkout.
  2. On the Bulk Buys tab add tiers for All: for example 10+ at 8.50 (Absolute) and 50+ at 7.90. Tell trade buyers to enter the full quantity on the product page before adding to the cart.
  3. For a members’ price, turn on group sign-up, have buyers choose Customer (or Wholesale) when they register, and add a tier for that group with Quantity 1 and a Percent value. Every member of the group then sees that percentage off from the first unit. Any customer can pick the group, so this is a members’ price rather than a vetted trade price. The lowest price still wins, so the member discount and the bulk tiers do not add together.
  4. For membership pricing that switches on and off with payment, sell a subscription plan that grants the group instead.

Troubleshooting

  • The bulk price shows on the product page but the cart charges full price. The cart line is below the tier quantity, or the line was priced by a subscription plan, a bundle or a theme deal, which keeps its own price. Check the quantity on the cart page.
  • A group tier skips a signed-in customer. They are not in that group. Check that group sign-up is enabled and that they chose the group when registering; there is no admin control to add them.
  • An Absolute tier made no difference. Absolute is the unit price at that quantity, not an amount off. A Value higher than the Price field is ignored because the lowest price always wins. Enter the price the shopper should pay.
  • Shoppers can still order one unit. The product’s minimum is at Global and the store-wide minimum is 0. Set either one.
  • The quantity jumps 1, 6, 11 instead of 5, 10, 15. Steps count up from the minimum. Set the minimum to the step value.
  • The product page shows no Buy more, save more table. Only tiers from two units up that beat the current price are listed, and only for the viewer’s groups. A catalog promotion or List price sale that is already lower than the tier hides it, and the table is hidden whenever the store hides prices from signed-out shoppers.

See also

Previous
Product Bundles ("Buy Together")
Next
Inventory & stock control