Docs  /  Pricing & Rules  /  Price Matrices from Excel/CSV

Price Matrices from Excel/CSV

Last updated: 20. October 2026

If your prices live in tables – width × height, or quantity × format –, you don't have to turn them into formulas. You upload the table as a CSV, define which characteristics select the row and the column, and the configurator reads the matching price on every selection.

When a price matrix makes sense

A price matrix pays off when the price depends on two dimensions and can't be written cleanly as a formula:

  • Sun protection, roller shutters, insect screens: width × height
  • Windows and doors: width × height, one table per material
  • Print products: run × format
  • Cut-to-size: length × width or length × material

If the price depends on one dimension only (e.g. "from 100 pieces €2.10, from 500 pieces €1.80"), a tiered price is enough – no matrix needed.

How it works

A price matrix is a characteristic of its own with the type Price list (category Calculation). The characteristic

  1. reads the current values of two other characteristics – the dimensions X and Y,
  2. uses them to find the matching column (X) and row (Y) in the table,
  3. returns the content of that cell as its result.

At first the result is just a number. To get it into the price, give the characteristic a Tiered pricing entry (see Add the result to the total price). Alternatively, keep calculating with the number in a formula.

Step by step

  1. Create the characteristics that drive the table – e.g. Width and Height as small input fields or as a selection.
  2. Create a new characteristic and choose the type Price list.
  3. Under Basic settings, set an Internal name (ID), e.g. preis_matrix. You use this name to reference the matrix in formulas later.
  4. Open Matrix data and upload your CSV (drag the file into the field or click it).
  5. Set the dimensions and operators under Matrix settings (see below).
  6. Under Tiered pricing, add a tier with value 0 and price 1, and set the Price operator to Value × Price.
  7. Set Visibility to No (hidden) if your customers shouldn't see the matrix result as a separate line.
  8. Check the result in the preview and publish the component.

The CSV format

;80;100;120;140;160
100;29.90;34.90;39.90;44.90;49.90
120;34.90;39.90;44.90;49.90;54.90
140;39.90;44.90;49.90;54.90;59.90
160;44.90;49.90;54.90;59.90;64.90
  • First row: the values for Dimension X (columns). The first cell stays empty.
  • First column: the values for Dimension Y (rows).
  • All other cells: the result for that combination, usually the price.

In the example, width 120 (X) and height 140 (Y) return 49.90.

Format rules

Rule Details
Separator Semicolon (;) – other separators are not recognised
Encoding UTF-8
Decimal separator A point (29.90) is recommended. A single comma (29,90) is read as well, thousands separators (1.234,56) are not.
Axis values Numbers or short codes made of letters, digits, underscore and spaces (e.g. holz, alu_eloxiert). Avoid umlauts and special characters.
Empty cells Produce no result – no price is calculated for that combination

Export from Excel

In Excel, save the table via Save As → CSV UTF-8 (Comma delimited). A German Excel uses the semicolon automatically; with an English Excel, check the separator. After exporting, open the file in a text editor and check that the first cell is empty and that no currency signs (€) are in the cells.

The matrix settings

Settings of a price list characteristic: operators, control list, price operator and decimal places, below them the matrix data with an uploaded CSV file

Setting Meaning
Dimension X Characteristic whose value selects the column (first row of the CSV)
Operator X How the value is looked up in the first row – see Operators
Dimension Y Characteristic whose value selects the row (first column of the CSV)
Operator Y How the value is looked up in the first column
Free entry Enter a fixed value for the dimension instead of a characteristic (field Free input X/Y)
Control list Characteristic that decides which table is used when there are several tables
Price operator Price: the tier is the price. Value × Price: matrix result × price of the tier
Decimal places Number of decimal places when the result is displayed (default: 2)

Which value is looked up?

The matrix uses the value of the dimension characteristic, not its displayed label:

  • Selection, Radio Buttons, List with images: the Value field of the chosen entry. If an entry is called "Solid oak" and has the value eiche, the CSV must contain eiche.
  • Input fields: the number entered.
  • Formulas and other calculated characteristics: their result. This lets you calculate an area first and use it as a dimension.

Operators: exact, next higher, next lower

Operator Behaviour Typical use
Exact match The value must appear exactly in the table. Upper/lower case and surrounding spaces don't matter, 19 and 19.0 count as equal. Selection characteristics like material or colour
Next higher number Takes the smallest table value that is greater than or equal to the input – i.e. rounds up. Dimensions: width 95 cm is priced with column 100
Next lower number Takes the largest table value that is less than or equal to the input – i.e. rounds down. Quantity tiers: 750 pieces are priced with row 500

Example with the table above, Operator X = Next higher number:

Width entered Column used
80 80
95 100
160 160
170 – (no price)

There is no interpolation. If an input lies outside the table, there is no result and therefore no price. Limit your input fields with minimum and maximum values to the range your table covers.

Add the result to the total price

The matrix result only reaches the price through Tiered pricing. Without a tier, its contribution stays 0 – even if the matrix calculates correctly.

Case 1 – the table contains final prices (most common):

  • Tiered pricing: one tier, condition >= (default), value 0, price 1
  • Price operator: Value × Price

Result: matrix value × 1 = matrix value.

Case 2 – the table contains a factor or a quantity that should be multiplied by a price: enter the price per unit under Tiered pricing (e.g. value 0, price 12.50) and keep the price operator on Value × Price.

A tier's condition (>=, >, =, <=, <, !=) is only evaluated by the V3 frontend engine. The Legacy engine always takes the highest tier whose value is less than or equal to the result – with >= both behave the same.

Case 3 – you want to keep calculating with the result: leave Tiered pricing empty and use the matrix in a formula via its internal name, e.g. $preis_matrix * 1.19 or $preis_matrix + $montage. The formula then delivers the price.

Several tables and the control list

You can give one price list characteristic several CSV files – for example one table per material or per version. All tables share the same layout, only the prices differ.

  1. Upload all CSV files under Matrix data – you can select several at once. The order of the list is the numbering: the first table has number 0, the second 1, and so on.
  2. Create a selection characteristic (e.g. Material) whose entries carry the table number as their Value: wood = 0, aluminium = 1, plastic = 2.
  3. Select this characteristic under Control list.

If your customer picks "Aluminium", the matrix calculates with the second table. If the control list is empty or the number matches no table, the first table is used.

Alternative without several tables: if the prices per material differ only by a factor, it is often simpler to maintain one table and apply the factor in a formula.

Prices for values from a matrix

Instead of a separate price list characteristic, you can also take the surcharges of the entries of a selection characteristic from a matrix. Example: every colour costs a different amount depending on the size.

  1. Create a price list characteristic with the table as above (set the operators, Visibility No (hidden), no tiered pricing needed).
  2. Open the selection characteristic (e.g. Colour) and set Prices from matrix to Yes.
  3. Under Option (Matrix), choose the price list characteristic.
  4. Set Dimension X and Dimension Y. The setting – current selection value – stands for the value of the respective entry itself.

Typical setup: Dimension X = current selection value (the colour), Dimension Y = the characteristic Size. Each entry then shows the surcharge from its column. If the matrix finds no value, the surcharge is 0.

Edit tables in the editor

Under Matrix data you see all uploaded tables with file name and size (rows × columns).

  • Edit: click the name to open the table. Click a cell to change it, confirm with Enter or Tab, cancel with Esc. + Row and + Column extend the table, the bin icon in a row or column header removes it. Apply saves the changes into the component.
  • Start without a CSV: Create empty matrix creates an empty table that you fill directly in the editor.
  • Download: the download icon (Download CSV) saves the table as a CSV – handy for reworking it in Excel and uploading it again.
  • Delete: the bin icon removes the table.

Like every change in the editor, a new table only takes effect in your shop after you Publish.

Use one price list in several components

If you use the same price table in several components, maintain it as a building block:

  • In the price list characteristic, click Create as central price list under Matrix data and give it a name – or
  • use Link to central price list … to take over an existing central price list. The table in the characteristic is replaced by the central one.

Linked characteristics show the note Maintained centrally as building block:. The table is then edited under Building blocks in the main navigation, and the change is passed on to all linked components. The matrix settings (dimensions, operators) stay separate per component. Unlink turns the table back into a local copy you can edit in the component.

With the AI agent

You can also have the AI agent set up the table. The chat doesn't accept CSV files directly – paste the content of the CSV into the chat as text, or save the file as .txt first. Describe what the axes mean:

"Here is my price list for pleated blinds. The columns are the width in cm, the rows the height in cm. For in-between sizes, round up to the next size in the table."

The agent creates the price list characteristic, uploads the table, connects the dimensions to your characteristics and sets up the tiered pricing. Afterwards, check the result in the preview with a few test sizes.

Troubleshooting: the matrix returns no price

Work through these points in order:

  1. Tiered pricing missing – without a tier (value 0, price 1) and the price operator Value × Price, the result doesn't reach the price.
  2. Dimension not set or without a value – as long as nothing is selected or entered in one of the two dimension characteristics, there is no result.
  3. Value instead of label – the CSV must contain the value of the entry, not the displayed text.
  4. Outside the table – with Next higher number the input is above the largest table value, with Next lower number below the smallest.
  5. Axes swapped – X is the first row (columns), Y the first column (rows).
  6. Wrong separator – the CSV must use semicolons. If the table shows up as a single column after uploading, the separator was wrong.
  7. Not published – your shop shows the last published version.

Next steps


← All articles Try free for 14 days