Product imports are how you create or update a whole catalog of products at once from a spreadsheet — faster than adding them one at a time when you're onboarding, loading a new vendor's line, or pushing a bulk price change.
In the POS mode, open Products in the left sidebar. The Import products button sits in the top-right of the list, next to Add product.

Click Import products top-right of the Products list. The Upload products modal opens with a dashed drop-zone in the middle and a Download template file link in the bottom-left.

Click Download template file and Rundoo saves products_template.xlsx to your downloads folder. The template is a pre-formatted Excel workbook with your company's actual department list, pricing-tier names, and location codes baked into dropdown tabs — so you edit it in Excel, save, and upload it back.
<aside> ⚠️
.xlsx only. The uploader rejects .csv, .xls, or any other extension with the error "Invalid file extension. Is your file's extension .xlsx?" Open the template in Excel, Numbers, or Google Sheets, but save or export it as .xlsx before uploading.
</aside>
<aside> 💡
50,000 rows per file. Rundoo caps each import at 50,000 products. If you have more than that, split the file into batches — the second batch can include the same ID column and Rundoo will just update whatever it already created on the first pass.
</aside>
The template ships with 95 columns on the first sheet (Sheet1) covering everything you can set on a product — far more than you'll ever fill for a single import. Only Product Name and Primary ID are required to create a product; the rest are optional and can fill in on later passes as your data matures. Here's every column, grouped by purpose.
| Column | What it does | Required? |
|---|---|---|
Token |
Rundoo's internal unique ID for the product. Leave blank when creating new products — Rundoo fills it in. Populated when updating products you already exported. | Blank to create |
Product Name |
The name that prints on sale receipts and purchase orders. | Yes |
Primary ID |
The product's canonical identifier — usually a SKU or UPC. What cashiers scan or type at POS. Must be unique; if it starts with 0 (like a UPC), keep the leading zero. |
Yes |
Additional IDs |
Alternate IDs that also find the product at the counter. Semicolon-separated. Must be unique across your catalog. | Optional |
Tags |
Report/search tags. Semicolon-separated. Tags must already exist in Rundoo — create them first at Admin > Product. |
Optional |
Department, Class, Fineline |
The three-level product taxonomy. Each must match an existing entry (dropdowns in the template). Create new ones at Admin > Product > Product categories. |
Optional |
Additional Fee |
A fee attached to this product (Eco Fee, California Paint Fee, Tint Fee). Must match an existing fee at Admin > Product > Additional fees. Blank defaults to None. |
Optional |
Tax Status |
One of Taxable, Non-taxable, or Single-use (waives tax only for customers with a resale or job-specific exemption). Blank defaults to Taxable. |
Optional |
Commissionable, Tintable, Non-stock, Active |
Per-product Yes/No flags. Active controls whether the product can be added to new sales and POs. Blank defaults to No. |
Optional |
Internal Notes, Sale Reminders, Template Sale Product Notes, Template Order Product Notes |
Free-text fields for counter staff, shown at different points in the sale or PO. Use \\n for line breaks. |
Optional |
| Column | What it does | Required? |
|---|---|---|
Cost Match Primary ID |
The Primary ID of another product whose costs and vendors this product should mirror. When set, Rundoo ignores this row's cost/vendor fields and uses the reference product's. |
Optional |
Standard Cost, Standard Cost UOM |
The cost used for COGS and margin when your company is set to standard cost at Admin > Company > Cost management. |
Optional |
Default Cost, Default Cost UOM |
The cost used when pricing by margin and the fallback on a PO if the vendor has no cost for this product. Blank defaults to $0.00. |
Optional |
Default Vendor |
The vendor the product is ordered from by default. Must match an existing vendor name. Blank defaults to No Vendor. |
Optional |
Additional Costs, Additional Cost UOMs, Additional Vendors |
Extra cost / UOM / vendor triples for products ordered from multiple vendors. Semicolon-separated, with the same number of entries across all three columns — order is paired (first cost + first UOM + first vendor, and so on). | Optional |
Vendor SKUs, Vendor SKU Vendors |
Vendor-specific SKUs and the vendors they map to. Semicolon-separated, same count in both columns, paired by position. This is how you capture per-vendor catalog numbers without making them scan-able Primary IDs. | Optional |
| Column | What it does | Required? |
|---|---|---|
Price Match Primary ID |
The Primary ID of another product whose prices this product should mirror. When set, Rundoo ignores this row's pricing fields. |
Optional |
Price Strategy |
One of Dollar, Margin, or Discount. Dollar treats each tier as an absolute price; Margin treats each tier as a % margin off cost; Discount treats tier 1 as a dollar price and tiers 2+ as a % off tier 1. Blank defaults to Dollar. |
Optional |
Price Rounded |
For Margin / Discount strategies, rounds the computed price. One of To $0.99, To $0.09, To $0.05, or No. Ignored when Price Strategy is Dollar. |
Optional |
Is Special Orderable, Is Non-nesting |
Yes/No flags. Blank falls back to the product's existing setting. |
Optional |
Gift Card Type |
For gift-card products — the gift-card type defined at Admin > Product > Gift card types. |
Optional |
Sale Form |
The sale form shown at checkout when this product is added to a cart (paint-tint notes, serial capture, etc.). Must match a sale form at Admin > Product > Sale forms. Blank defaults to None. |
Optional |
Pricing: {Tier} |
One column per pricing tier defined in your company — e.g. Pricing: MSRP, Pricing: Retail, Pricing: Painter, Pricing: Contractor (CC), Pricing: Volume Contractor(CC). Format depends on Price Strategy: dollars ($60.78) for Dollar; percent (40%) for Margin; dollars for the first tier and percent for the rest for Discount. Rule-based tiers ignore updates here — edit those in the web app. |
At least one tier filled when creating |
Quantity Break IDs, Quantity Break Quantities, Quantity Break Discounts, Quantity Break Markups, Quantity Break UOM Codes |
Semicolon-separated parallel columns defining automatic quantity-based discounts or markups (e.g. buy 4, take 10%). Same count across all columns, paired by position. Use either Discounts or Markups for each break, not both. |
Optional |
| Column | What it does | Required? |
|---|---|---|
Case Quantity |
Minimum multiple you can order — if the product only comes in cases of 4, enter 4. Rundoo rounds suggested-order quantities up to the nearest multiple. Blank defaults to 1. | Optional |
Min: {Loc}, Max: {Loc} |
Per-location reorder points used by suggested ordering — one pair of columns per location in your company (e.g. Min: 1, Max: 1, Min: NY, Max: NY). |
Optional |
Inventory: {Loc} |
Read-only. Rundoo exports your current on-hand here; it ignores any changes. Leave blank when creating. To change levels, run a count at POS > Counts > Start new inventory count. |
Leave blank |
Bin Location: {Loc} |
Aisle/shelf label for where the product lives in each store (e.g. A1S4). |
Optional |