> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getveles.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Units of Measure

> Define the inputs that drive pricing calculations: what's being counted, how it's labeled, and how it scales.

A Unit of Measure (UOM) defines what a rep is entering when they set a quantity on a quote line -- and what the buyer sees on the proposal. "Per User," "Per GB," "Per 1,000 API Calls," and "Per \$1M Transaction Volume" are all units of measure.

UOMs serve two purposes: they label the input field so reps know what they're entering, and they configure how that input drives the pricing calculation. By defining a UOM once, you can reuse it across multiple products for consistency.

***

## Attributes

Each Unit of Measure has four key settings:

| Attribute | Scope           | Description                                                                                                                              |
| --------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**  | Internal        | Display name in the Veles admin interface (e.g., "User Seats", "API Call Volume").                                                       |
| **Key**   | System          | Unique identifier used to reference this UOM in rules and pricing logic. Use lowercase with no spaces (e.g., `user_seats`, `api_calls`). |
| **Label** | Customer-facing | The text that appears on quotes and proposals. This is what the buyer sees (e.g., "Per User", "Per 1,000 API Calls").                    |
| **Scale** | Both            | The numerical multiplier applied to the rep's input. See [Scale](#scale).                                                                |

***

## Input kind: Quantity vs. Driver

The **Input Kind** is the most important setting on a UOM. It determines whether the input represents the number of units being sold or a metric that drives the price of a single unit.

### Quantity

The rep is entering how many of a product to sell. The total price is calculated as the rate (from the pricing tier) multiplied by this quantity.

This is the default for most products: per-seat licenses, per-unit hardware, per-hour services.

### Driver

The rep is entering a value that determines the price tier, but the order quantity is always 1. The product is sold as a single SKU whose price varies based on an external metric.

<Info>
  The Driver input kind corresponds to [custom lookup drivers](/get-started/pricing-and-packaging/creating-a-product#lookup-drivers) on the pricing plan. When you use a Driver UOM, set the product's quantity to 1 and mark **Quantity Editable** as off in the [rep permissions](/get-started/pricing-and-packaging/creating-a-product#rep-permissions).
</Info>

***

## Scale

Scale simplifies data entry for reps working with large numbers. Instead of typing `42,500,000`, a rep enters `42.5` with the scale set to Millions. Veles handles the math internally.

| Scale         | Multiplier | Rep enters | Veles interprets as |
| ------------- | ---------- | ---------- | ------------------- |
| **Singles**   | 1          | 50         | 50                  |
| **Hundreds**  | 100        | 50         | 5,000               |
| **Thousands** | 1,000      | 50         | 50,000              |
| **Millions**  | 1,000,000  | 42.5       | 42,500,000          |

The scale setting affects the input field during quoting and the tier evaluation in the pricing engine. The simplified value is what the rep sees; the full value is what the calculation uses.

<Tip>
  Match the scale to how your team naturally talks about the metric. If your sales team says "42 million in transaction volume," set the scale to Millions so they enter `42`. If they say "50,000 API calls," set it to Thousands so they enter `50`.
</Tip>

***

## Currency toggle

You can mark a Unit of Measure as a **currency** input. This formats the input field and all outputs as a dollar value rather than a plain number.

**When to use it:** Primarily for transactional or revenue-share products where the pricing driver is a monetary amount, like "Total Transaction Volume," "Annual Ad Spend," or "Total Contract Value."

**Effect:** The input field shows a currency symbol, and the value is formatted as currency throughout the quote and on generated documents. This makes it clear to both reps and buyers that the input represents a dollar amount, not a unit count.

<Info>
  Products using a currency-type UOM are typically configured as [Transactional](/get-started/pricing-and-packaging/creating-a-product#rep-permissions) in the rep permissions, which excludes them from Total ARR calculations and displays them as a rate to the buyer.
</Info>

***

## Shared vs. unique UOMs

You have two strategies for managing units of measure:

**Shared UOMs** define a single unit that's reused across multiple products. For example, a "Per User" UOM can be applied to every product in your SaaS catalog. When a rep enters a quantity on any of these products, the label, input kind, and scale are all consistent.

**Unique UOMs** define a specialized unit for a single product. For example, a cloud storage product might have a "Per GB" UOM that no other product uses, or a construction analytics product might have an "Annualized Construction Volume" UOM specific to that industry vertical.

<Tip>
  Start with shared UOMs for your most common pricing dimensions (per-user, per-license, per-month). Create unique UOMs only when a product has a genuinely distinct input that doesn't apply to anything else in the catalog.
</Tip>

***

## Creating a Unit of Measure

1. Navigate to **Admin > Price Books > Units of Measure**.
2. Click **+ New Unit of Measure**.
3. Enter the **Name** (internal) and a unique **Key** (system identifier).
4. Enter the **Label** that buyers will see on quotes and proposals.
5. Select the **Input Kind**: Quantity or Driver.
6. Set the **Scale** (Singles, Hundreds, Thousands, or Millions).
7. Toggle **Is Currency** if the input represents a monetary value.
8. Click **Save**.

The UOM is immediately available for selection when configuring [pricing plans](/get-started/pricing-and-packaging/creating-a-product#pricing-plans) on any product.

***

## Common examples

| UOM Name           | Label                     | Input Kind | Scale     | Currency | Used for                    |
| ------------------ | ------------------------- | ---------- | --------- | -------- | --------------------------- |
| User Seats         | Per User                  | Quantity   | Singles   | No       | SaaS per-seat licensing     |
| API Calls          | Per 1,000 API Calls       | Quantity   | Thousands | No       | Usage-based API products    |
| Storage            | Per GB                    | Quantity   | Singles   | No       | Cloud storage products      |
| Transaction Volume | Annual Transaction Volume | Driver     | Millions  | Yes      | Revenue-share platform fees |
| Ad Spend           | Monthly Ad Spend          | Driver     | Thousands | Yes      | Marketing platform pricing  |
| Hours              | Per Hour                  | Quantity   | Singles   | No       | Professional services       |

***

## UOMs and Stripe import

When importing products from Stripe, unit labels come in as blank because Stripe doesn't have an equivalent concept. After import, update each product's UOM to set the correct label. See [Connect your Stripe Account](/get-started/quickstart/connect-your-stripe-account#what-to-know-about-stripe-imports) for details.

***

## What's next

<CardGroup cols={2}>
  <Card title="Creating a Product" icon="box" href="/get-started/pricing-and-packaging/creating-a-product">
    Assign UOMs to products through pricing plan configuration.
  </Card>

  <Card title="Pricing Models" icon="calculator" href="/get-started/pricing-and-packaging/pricing-models">
    Understand how UOM inputs drive tier-based pricing calculations.
  </Card>

  <Card title="Deal Components" icon="puzzle-piece" href="/get-started/pricing-and-packaging/deal-components">
    Configure billing frequencies alongside your units of measure.
  </Card>

  <Card title="Data Sheets" icon="table" href="/get-started/pricing-and-packaging/data-sheets">
    Use reference tables for dynamic pricing driven by UOM inputs.
  </Card>
</CardGroup>
