Skip to content

Customer Classes & Price Levels

A customer class is a label that groups your customers — for example Retail, Wholesale, Landscaper, Employee, or Senior. Classes drive two big things in VMX:

  • Price levels — per-item pricing for a class. A landscaper class can pay a fixed contractor price on mulch, or get 20% off all pottery, automatically at the register.
  • Targeting and filtering — promotions can be limited to specific classes, and classes are used as filters when emailing statements, sending marketing broadcasts, and running customer reports.

This guide covers managing classes, assigning them to customers, and setting up class-based pricing.

Manage customer classes

Customer classes are managed on the Classes page: click Customers in the black ribbon at the top of any VMX page, then click Classes in the sub-navigation.

The page lists every class with its Name and Description, a Legacy ID column, and a # Customers column showing how many customers currently carry that class.

To add a class:

  1. Click the + Customer Class button.
  2. Enter a Name (the short code stored on each customer, e.g. WHOLESALE) and a Description (the friendly label shown in dropdowns, e.g. "Wholesale Landscaper"). Legacy ID is only used for data converted from a previous POS system — leave it blank otherwise.
  3. Click Create.

To edit a class, click the pencil icon on its row, make your changes, and click Update.

Two validation errors you may see when saving:

  • "Class name cannot be empty." — enter a Name before saving.
  • "A customer class with this name already exists." — class names must be unique; pick a different Name or edit the existing class instead.

Classes cannot be deleted from this page. Also, be careful renaming a class that already has customers in it: each customer stores its class as the class Name spelled out, not as a link to the row, so changing the Name leaves those customers pointing at a class that no longer exists. They stop matching the class for price levels, promotions, and class filters, and the # Customers count on the renamed class shows 0. The Description is safe to edit at any time — only the Name has this effect. If you need to rename or retire a class that's in use, contact help@vmxllc.com and we'll migrate the customers for you.

Assign a class to a customer

Each customer has one class, set in the Class dropdown on their customer profile page (open the customer from Customers → Search). The dropdown shows each class's Description.

New customers are assigned a default class automatically — usually a standard retail class. The default for your system is configured by VMX.

Changing a customer's Class is a protected action: on most systems it requires the Merge Customers employee permission (set under employee permissions in the admin area). Some stores configure this differently — for example allowing all employees to change classes, or restricting specific classes only — so if you can't change a class you believe you should be able to, ask your manager or contact help@vmxllc.com.

Customer class at the register

The customer class for a sale is set by the class dropdown in the options area below the sale's item list, on the left-hand side under the receipt note and customer PO# lines. It carries no printed label: when nothing is chosen it shows ..., and opening it lists None followed by each of your customer classes by Description.

  • When you attach a customer to the sale, the dropdown is set automatically from the customer's Class — their class pricing applies to every item on the sale without any extra steps.
  • The cashier can also select a class manually for a sale with no customer attached (for example, ringing a walk-in wholesale buyer).
  • Selecting None removes class pricing from the sale.

Selecting Employee typically requires an actual employee customer record to be attached to the sale — otherwise the register shows "EMPLOYEE CUSTOMER REQUIRED" and reverts the selection.

On some systems this dropdown is locked so the class can only come from the attached customer record, or only certain employees may change it. This is configured per-client by VMX — contact help@vmxllc.com if you'd like your register's behavior changed.

What is a price level?

A price level is class-specific pricing on an individual item. For each item and each customer class, you can set one of three discount types:

  • Fixed Price — the class pays this exact price for the item, regardless of the retail price.
  • Percent — the class gets this percent off the item's retail price.
  • Dollar — the class gets this dollar amount off the item's retail price.

Price levels take effect immediately, have no end date, and apply at every store location you have when you save them. They apply automatically at the register whenever the sale's customer class matches — the cashier doesn't do anything.

Price levels are managed on each item's page (see "Set price levels on an item" below) or in bulk via the Price Level Bulk Update admin tool. They do not appear on the Promotions page, even though they behave like always-on, class-specific promotions.

If a new store location is added to your system later, re-save the affected price levels (on the item page, or with a fresh export/import through Price Level Bulk Update) so the new location is included — existing price levels are not extended to it automatically.

Set price levels on an item

  1. Open the item page (search for the item from the Inventory area) and click the Price Rule tab.
  2. Scroll to the Price Levels section. There is one row per customer class, with columns Customer Class, Discount Type, Discount/Price, and Margin. The Customer Class column shows each class's Description.
  3. For each class you want to price, choose a Discount TypeFixed Price, Percent, or Dollar — and enter the amount in the Discount/Price column. Leave the type as None for classes that should pay the standard retail price.
  4. The Margin column updates as you type, showing the profit margin you'd earn at that class's price based on the item's cost — a quick sanity check before you save.
  5. Click Save.

To remove a class's price level, set its Discount Type back to None and save.

How price levels compute at the register

When an item is rung up and the sale's customer class has a price level on that item:

  • Fixed Price — the line price becomes the fixed amount (e.g. retail $34.99, fixed price $25.00 → the class pays $25.00).
  • Percent — the line shows a percent discount off retail (e.g. retail $34.99 at 20% → $27.99).
  • Dollar — the line shows a dollar discount off retail (e.g. retail $34.99 less $5.00 → $29.99).

Price levels apply even to items marked never discountable. An item's Discountable setting (Yes / Sometimes / Never on the item page) keeps promotions and whole-sale discounts off a Never item, but a price level still applies — the register treats it as the class's price, not as a discount.

Customers with no class assigned (and sales with None chosen in the register's class dropdown) never receive price-level pricing — price levels are tied to specific classes. Regular promotions that aren't limited to particular classes still apply.

Which price wins: price level, promotion, or class discount

One item can be covered by more than one deal at the same time — a price level for the customer's class, a scheduled promotion, and an automatic class-wide discount such as "landscapers get 10% off nursery stock" (automatic class discounts are set up per-client by VMX — contact help@vmxllc.com if you're not sure whether your store has one). The register prices each line once and picks a single winner among the three. It never adds them together.

The rules, in the order they matter:

  1. A price level always beats an automatic class discount. If the item has a price level for the sale's customer class, that price level is what the customer pays — even when the automatic class discount would have been the bigger break.
  2. A price level beats a promotion whenever the price level is the bigger discount. A Fixed Price of $25.00 on a $34.99 item beats a 10%-off promotion every time, because $9.99 off is more than $3.50 off.
  3. When a promotion's discount is equal to or bigger than the price level's, either one can win. The register works through the deals on an item one at a time, and a price level always replaces whatever it found ahead of it — so the winner depends on which of the two the register happens to look at last. That order isn't shown anywhere on screen, isn't something you can set, and isn't guaranteed to stay the same, so this is the one case you can't work out by reading the item and promotion pages.
  4. Price levels ignore the item's Discountable setting. A promotion is skipped on an item set to Discountable: Never; a price level is not.

What to do about rule 3: when an item really does have both a promotion and a price level for the same class, and the exact figure on the receipt matters, ring a test sale to confirm the price before the sale goes live. The surest fix is to stop the overlap: either deselect that class in the promotion's Customer Classes list, or clear the item's price level for the run of the promotion.

If an item somehow carries two price levels for the same class, the most recently saved one is what applies. This is rare — saving a price level on the item page or through Price Level Bulk Update replaces any earlier one for that class.

Price Level Bulk Update (export and import in Excel)

To review or change many price levels at once, use the Price Level Bulk Update tool in the admin Tool Box (Tool Box → Price Level Bulk Update, in the Inventory & Pricing section). This tool is admin-only.

The page has two tabs: Export and Import.

Export price levels to a spreadsheet

  1. On the Export tab, check the Departments and Customer Classes you want to include (use Select All / None to toggle everything).
  2. Click Export XLSX to download a spreadsheet.

The file contains one row per item in the departments you picked — only items with Allow Selling? checked on the item page are included — with these columns:

  • PLU, Description, Department — read-only identifiers; don't change these.
  • Retail Price — the item's base list price. Edit this column to change an item's base price; leave a cell blank to leave that item's price untouched.
  • One {ClassName} Type / {ClassName} Amount column pair per customer class you selected, headed with the class's Name (not its Description). Type can be FIXED, PERCENT, DOLLAR, or blank/NONE to remove the price level for that class.

Import your edited spreadsheet

  1. Edit the exported file in Excel, then switch to the Import tab and drop the file on the upload zone (Drop file here or click to select). CSV and XLSX files are accepted — anything else shows "Only CSV and XLSX files are supported".
  2. The Preview Changes step shows every difference from the current database — filter with the All / New / Changed / Removed / Retail Price buttons. Rows with the same values as the database are skipped automatically, so re-importing an unedited export changes nothing.
  3. Review any row errors listed, then click Apply Changes. A progress bar shows the changes being applied.

Common row errors in the preview:

  • "PLU not found in inventory" — the PLU column doesn't match an existing item; check for typos or Excel reformatting the PLU.
  • "Invalid discount type: '…'. Must be FIXED, PERCENT, DOLLAR, or empty." — fix the Type cell for that class.
  • "Amount must be numeric, got: '…'" — remove currency symbols or text from the Amount cell.
  • "Cannot bulk-update Retail Price for this item — it has store-specific pricing enabled. Edit prices per store on the item page." — items with per-store pricing must be priced on their own item page.

If nothing imports and you see "Could not find a "PLU" column in the file headers.", the header row was changed or removed — start from a fresh export.

Do customer classes change taxes?

No — a customer class does not by itself change how a customer is taxed. Tax status is controlled by the separate Taxable setting (and the Tax ID and Tax ID Expiration fields) on the customer profile page.

Some stores have a convenience configured where choosing certain classes (for example a municipal or landscaper class) automatically marks the customer non-taxable with a default tax number. That behavior is set up per-client by VMX — contact help@vmxllc.com if you'd like something similar.

Other places customer classes are used

Beyond pricing, customer classes appear as filters and targets across VMX:

  • Promotions — every promotion has a Customer Classes selection, so a sale promo can be limited to specific classes. Unlike price levels, promotions have start/end dates and compete with other discounts for the best price.
  • Statements — the Statements page (Reports → Email Statements) has a Class... dropdown so you can filter which account customers to select before clicking Email Checked or Print Checked.
  • Reports — several reports show or filter by customer class: Aging under the Accounts heading, and Top Spending, Who Purchased..., and Filtered Export under the Customers heading in the Reports sidebar.
  • Email broadcasts by class — a page that sends a one-off email blast to whole customer classes exists, but it is enabled per-client by VMX rather than switched on everywhere. Contact help@vmxllc.com if you'd like it turned on for your store.
  • Per-client features — some stores use classes to gate other behavior, such as loyalty/rewards eligibility or special register rules. These are configured per-client by VMX; contact help@vmxllc.com with questions about your setup.

Customer class pricing on your online store

Class-based pricing on the VMX online store (wholesale pricing for logged-in landscape customers, contractor discounts, and similar) is a per-client customization — it is not enabled by default, and the specific rules are tailored to each store. If you'd like your web shop to honor customer-class pricing for signed-in customers, contact help@vmxllc.com.