> ## 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.

# Data Sheets

> Upload reference tables that the Veles pricing engine can query at quoting time for dynamic pricing, discounts, and validation logic.

Data Sheets are reference tables that the Veles pricing engine queries in real time during quoting. They work like spreadsheet tabs -- rows and columns of data that you upload once and reference across your pricing formulas, pricing floors, and rules.

Use Data Sheets when your pricing logic depends on external data that doesn't belong hard-coded on a single product. Instead of embedding every pricing variation into individual product configurations, you centralize the data in one place and let the engine look it up.

***

## When to use Data Sheets

Data Sheets are the right tool when:

* Pricing varies by a dimension that isn't the quantity (e.g., geography, customer tier, ERP system, industry vertical)
* Discount thresholds differ across customer segments and you need the rules engine to validate them
* You have a matrix of values that would be impractical to maintain as individual product configurations
* The same reference data is used across multiple products or rules

If the pricing logic is straightforward (flat fee, standard per-unit tiers), you don't need a Data Sheet -- the product's pricing plan handles that directly.

***

## How Data Sheets work

Every Data Sheet has a unique **name** that acts as its identifier. Pricing formulas and rules reference this name to look up specific values based on inputs provided during quoting.

**The flow:**

1. A rep selects a product and enters inputs (quantity, a dropdown selection, a custom field value).
2. The pricing engine evaluates the product's formula and encounters a Data Sheet reference.
3. The engine queries the Data Sheet, matching the rep's input against a column to find the corresponding value.
4. The returned value is used in the calculation (as a multiplier, a rate, a discount threshold, etc.).

This all happens instantly -- the rep sees the calculated price in real time.

***

## Creating a Data Sheet

1. Navigate to **Admin > Price Books > Data Sheets**.
2. Click **+ New Data Sheet**.
3. **Name your sheet.** Use a clear, concise name with underscores instead of spaces (e.g., `ERP_Uplift`, `Regional_Pricing_2026`, `Discount_Thresholds`). This name is how you'll reference the sheet in formulas and rules.
4. **Build your table:**
   * Add columns to define your data points.
   * Enter data manually or **paste directly from a spreadsheet** (Excel or Google Sheets copy-paste is supported).
5. Click **Save**.

The data is immediately available for use in the formula builder and rules engine.

***

## Use cases

### Dynamic pricing adjustments

You have an uplift fee based on which ERP system your customer uses.

**Data Sheet:** `ERP_Uplift`

| ERP\_Type | Uplift\_Percentage |
| --------- | ------------------ |
| SAP       | 15%                |
| Oracle    | 12%                |
| NetSuite  | 5%                 |
| Other     | 0%                 |

**How it's used:** In the product's pricing formula, you tell Veles: "If the rep selects 'SAP' from the dropdown, look up the `ERP_Uplift` sheet and multiply the base price by 1.15."

When the uplift for SAP changes from 15% to 20%, you update the Data Sheet once. Every product referencing it picks up the change automatically.

### Regional pricing matrices

You sell at different price points depending on the customer's geography.

**Data Sheet:** `Regional_Pricing`

| Region        | Base\_Rate | Support\_Rate |
| ------------- | ---------- | ------------- |
| North America | \$50       | \$5           |
| EMEA          | €45        | €4.50         |
| APAC          | \$40       | \$4           |
| LATAM         | \$35       | \$3.50        |

**How it's used:** A pricing formula references `Regional_Pricing` and uses the rep's selected region to look up the base rate, replacing a hard-coded price with a dynamic one. This lets you maintain a single product SKU with region-specific pricing rather than creating separate products per region.

### Discount thresholds by customer tier

Your discount policy varies by customer segment, and you need the approval engine to enforce it.

**Data Sheet:** `Discount_Thresholds`

| Segment    | Max\_Discount\_Percent | Approval\_Required\_Above |
| ---------- | ---------------------- | ------------------------- |
| Enterprise | 25%                    | 15%                       |
| Mid-Market | 20%                    | 10%                       |
| SMB        | 15%                    | 5%                        |

**How it's used:** A [Validation Rule](/get-started/rules-and-approval/quote-validation-rules) references this sheet to check whether a rep's discount exceeds the maximum for the customer's segment. An [Approval Rule](/get-started/calculator/approvals) triggers manager review when the discount exceeds the "Approval Required Above" threshold.

### Pricing floors from external data

You need minimum prices that vary by product and region.

**Data Sheet:** `Pricing_Floors`

| SKU           | Region        | Min\_Price |
| ------------- | ------------- | ---------- |
| PLATFORM-001  | North America | \$10,000   |
| PLATFORM-001  | EMEA          | €8,500     |
| ANALYTICS-001 | North America | \$3,000    |
| ANALYTICS-001 | EMEA          | €2,500     |

**How it's used:** A product's [pricing floor](/get-started/pricing-and-packaging/creating-a-product#pricing-plans) is configured as a formula that looks up this Data Sheet by SKU and region, returning the appropriate minimum price dynamically.

***

## Referencing Data Sheets in formulas

Data Sheets are referenced by name in the formula builder. The exact syntax depends on the context (pricing formula, pricing floor, or rule), but the pattern is the same: specify the sheet name, the lookup column, the lookup value, and the return column.

For example, to look up the uplift percentage for a selected ERP type:

```text theme={null}
LOOKUP("ERP_Uplift", "ERP_Type", [selected_erp], "Uplift_Percentage")
```

The formula builder provides autocomplete for available Data Sheet names and column headers.

<Tip>
  Use the live calculation preview on the pricing plan to test your Data Sheet lookups before saving. Enter different inputs and verify that the correct values are returned.
</Tip>

***

## Managing Data Sheets

### Editing data

Navigate to **Admin > Price Books > Data Sheets** and select the sheet. Edit values directly in the grid, add or remove rows, or paste updated data from a spreadsheet. Click **Save** and the changes take effect immediately.

Changes apply to new quotes and any quote that recalculates pricing. Existing quotes with locked line items retain their original values.

### Adding columns

You can add new columns to an existing Data Sheet at any time. Existing formulas that reference the sheet aren't affected -- they only look up the columns they're configured to use.

### Deleting a Data Sheet

Remove the sheet from **Admin > Price Books > Data Sheets**. Any formulas or rules that reference the deleted sheet will fail to resolve, so review dependencies before deleting.

<Warning>
  Before deleting a Data Sheet, search your pricing formulas and rules for references to its name. Broken references will cause pricing calculation errors during quoting.
</Warning>

***

## Best practices

**Use underscores in names.** Names like `Regional_Pricing_2026` are easier to reference in formulas than names with spaces. Avoid special characters.

**Centralize logic, don't duplicate it.** If multiple products reference the same uplift or discount data, use one Data Sheet. This ensures a single update propagates everywhere.

**Version by year if rates change annually.** If your pricing matrix changes each fiscal year, name sheets with the year (e.g., `Discount_Thresholds_2026`) so you can maintain the old sheet for reference while switching formulas to the new one.

**Keep sheets focused.** A sheet called `Everything` with 50 columns is harder to maintain than three focused sheets. Organize by use case: one for regional pricing, one for discount thresholds, one for uplift fees.

***

## What's next

<CardGroup cols={2}>
  <Card title="Pricing Rules" icon="shield-check" href="/get-started/rules-and-approval/pricing-rules">
    Reference Data Sheet values in pricing rules and validation logic.
  </Card>

  <Card title="Creating a Product" icon="box" href="/get-started/pricing-and-packaging/creating-a-product">
    Use Data Sheets in pricing formulas and pricing floors.
  </Card>

  <Card title="Formula Rules" icon="function" href="/get-started/rules-and-approval/formula-rules">
    Build formula-driven fields that query Data Sheets dynamically.
  </Card>

  <Card title="Deal Components" icon="puzzle-piece" href="/get-started/pricing-and-packaging/deal-components">
    Configure billing frequencies and contextual data for products.
  </Card>
</CardGroup>
