How to prepare a supplier CSV/XLSX price list

A practical setup for a table price list: source, table snapshot, header rows, section rows, columns, filters, new fields, variables, and price transformations.

Use a CSV/XLSX price list when a supplier sends data as a table: SKUs, names, categories, prices, stock, currency, image links, and additional columns. Eofferix accepts CSV, XLS, XLSX, XLSM, and ZIP archives when they contain a supported table file.

1. Source and template setup

The source can be uploaded once or received regularly on a schedule:

  • upload a file from your computer;
  • receive a file from a direct URL or an authorized URL;
  • download a file via FTP, FTPS, or SFTP;
  • receive an email attachment;
  • use Google Sheets, Google Drive, or another supported cloud source;
  • receive a file through a supplier API or another supported source module.
Choosing how Eofferix receives a CSV/XLSX price list source
The source defines where Eofferix receives the price list from.

After the source is ready, create a table processing template: enter a name, add a short description, select the data source, and choose the result format. The template stores the rules for reading the file, building columns, and transforming values.

Creating a CSV/XLSX price list processing template from a source
The template connects the source and stores the main settings for the final export.

2. Table loading settings

First check the table structure: the required sheet, the header row, rows that should not be loaded, and structure change checks. The header row is not loaded as a product row: for CSV/XLS/XLSX it becomes the header of the new document, for XML it provides node names, and for JSON it provides object keys. If the beginning of the price list contains supplier notes, an update date, or other reference information, enter those rows in "Rows to skip". This block is usually no longer than 20 rows, and the preview shows the first 30 rows, so you can mark them directly in the preview.

Sheet, header row, and structure control settings for a CSV/XLSX source
Table structure settings define the header row, skipped rows, excluded sheets, and change control. The highlighted column is where rows can be excluded from loading.

If the file contains several sheets with the same or similar structure, enable sheet merging. Before merging, set the header row and rows to skip separately on each sheet: for example, one sheet may have its header on row 4, while another uses row 2.

Merging several CSV/XLSX sheets by headers
Sheet merging combines included sheets into one table by headers; header and skipped-row settings are configured separately for each sheet.

If categories are provided as separate rows in the price list, enable section rows. A row without product data will not be exported as a product; instead, it becomes part of the category path for the product rows below it.

Configuring section rows in a table price list
Section rows build a category path from table rows instead of a separate category column.

Before

SectionSKUNamePrice
Furniture
Desks
DESK-01Nordic writing desk129.00
Armchairs
CHAIR-02Graphite Loft armchair89.00

After

skunamesection_pathprice
DESK-01Nordic writing deskFurniture / Desks129.00
CHAIR-02Graphite Loft armchairFurniture / Armchairs89.00

3. Table snapshot and field settings

After the table loading settings are configured, Eofferix analyzes the table and creates a short table snapshot. The snapshot shows sheets, detected columns, the header row, and a few sample rows, not the entire large file.

The snapshot is not meant for manually reading every row. It is used to configure the final structure: which columns go into the result, which fields should be renamed, and which values should be cleaned or calculated.

Table snapshot for a CSV/XLSX price list with columns and sample rows
The snapshot shows a compact table structure: columns, sample rows, and the source file state.

In the snapshot you can open settings for a specific column: rename the field, add transformation rules, set export conditions, change appearance, create a variable, or use values from other columns in the same row.

For example, for the price column you can open field settings, add a rounding rule, choose the 1000 step in the rounding rule window, save the setting, and immediately see updated values in the table.

Animation of price transformation setup in the table snapshot: open the price column, add a rule, choose rounding to 1000, and see updated values
After the rule is saved, values in the price column are recalculated directly in the table snapshot.

What can be transformed

  • rename columns and result fields;
  • change column order or the final structure;
  • remove unnecessary data;
  • filter rows by price, stock, category, SKU, or another condition;
  • clean text and remove spaces or service characters;
  • replace values and normalize dictionaries;
  • convert numbers, currencies, and dates;
  • round prices;
  • calculate markup, discount, or purchase price;
  • use neighboring columns in calculations;
  • create new columns;
  • create variables for intermediate calculations;
  • process images from links in a column: convert to JPG, PNG, or WebP, resize, and apply a watermark;
  • import the result into supported applications or export it in the required format.

Transformation examples

The transformation tool can significantly reshape the final output: clean source data, build a new structure, create additional fields, filter products, calculate values, and prepare the result for the required format or application.

Simple example: remove service rows

The first rows of the price list contain the update date and a supplier note. In the table structure settings, select the header row and skip the rows above it.

Selecting the header row and skipping service rows in a CSV/XLSX price list
After the header row is selected, the snapshot works with product rows instead of the service header.

Before

Partner1 price list
Updated: 2026-05-26
SKUNameCategoryPriceStockCurrency
DESK-01Nordic writing deskFurniture / Office / Desks129.0014USD

After

skunamecategorypricestockcurrency
DESK-01Nordic writing deskFurniture / Office / Desks129.0014USD

Conditional example: export only rows with stock

Add an export condition for the stock column: a row is included in the result only when stock is greater than zero. This keeps currently unavailable supplier items out of the final file.

Export condition based on stock value in a CSV/XLSX price list
The condition is checked before the row is included in the final export.

Before

skunamestock
DESK-01Nordic writing desk14
CHAIR-02Graphite Loft armchair0

After

skunamestock
DESK-01Nordic writing desk14

New column example: calculate a sales price

Add a new margin_price column when the source file has a purchase price but the result needs a sales price. In the column rules, replace the current empty value with {price} and then increase it by a percentage. After the setting is saved, the new column values are recalculated in the table snapshot.

Formula for the new margin_price column: replace the current value with price and increase by percentage
A new column is filled by transformation rules, not just added as an empty table column.

Before

skupricecurrency
DESK-01129.00USD

After

skupricemargin_pricecurrency
DESK-01129.00144.48USD

Sequential example: prepare a price

Example of sequential transformations for the Price field. Transformations can use not only the current value, but also other columns of the document for calculations.

Sequential price transformations using the stock column
Rules run from top to bottom: value cleanup, conditional price change, and rounding.

Before

pricestock
129.00140

After

pricestock
144140

New columns

A new column is needed when the result must contain a field that is missing from the source table, or when the source data should be arranged differently.

A column can be filled with:

  1. a value from another place in the source table;
  2. a system value, such as the run date or source name;
  3. an expression, such as assembling a category path or calculating a discount percentage;
  4. a variable.
New column in the table snapshot of a CSV/XLSX price list
A new column can become an output field or be used as an auxiliary setting.

For example, create a full_name column: first take the product name, then append the SKU if it is not empty, and then append the material in parentheses if the row contains a material.

Rules for the new full_name column: name, SKU, and material in one field
Each rule appends a part of the name only when its condition is met.

Before

nameskumaterial
Nordic writing deskDESK-01oak

After

nameskumaterialfull_name
Nordic writing deskDESK-01oakNordic writing desk DESK-01 (oak)

Variables

A variable stores an intermediate result and helps reuse one calculated value in several rules. Important: variables do not appear in the final export; they only help other transformations.

For example, you can calculate the base price with a supplier coefficient once, save it into a variable, and then use it for the sales price, discount, and export condition.

Animation showing a new column being created and marked as a variable in the table snapshot
A new column can be marked as a variable: it helps calculations but is not included in the final file.

Sequential transformations

Example of sequential transformations for the Price field. Transformations can use not only the current value, but also other columns of the document for calculations.

  1. first clean the value by removing spaces;
  2. then check conditions, for example price greater than zero;
  3. then use another document column, such as stock;
  4. then change the value, for example increase the price by a percentage or subtract a fixed discount for high stock;
  5. then round the result or convert it to the required format.
Step-by-step setup of price transformation rules in a CSV/XLSX price list