Skip to main content
This guide is designed for new stores building an APL (Approved Product List) from scratch. ✏️ Note: If you already use a Point of Sale (POS) system and/or a Back Office solution, Vori’s Solutions Engineer will work with you to retrieve and import your existing data. This guide is intended for new stores only, not stores migrating from another system.

What is an APL?

An Approved Product List (APL) is a list of every product your store will carry, including key details that power your POS, reporting, and inventory workflows. Setting up your APL is one of the first steps to getting started with Vori. 👉 Important: Be sure to make a copy of the template before editing. When you finish editing it, download or export the sheet as a CSV file before uploading it to Vori Back Office. Open the Store Product Uploader Template

Required Fields in APL

You need four required fields to build your APL:
FieldDefinitionPriority
Product NameThe name is what’s displayed on the POS and printed on receipts.Required
DepartmentVori organizes products into top-level categories (Departments) to support reporting, apply shared attributes like EBT eligibility or bottle deposits, and keep your store organized for easier sales tracking.

Define and name these in your APL file. They’ll be automatically created in your Back Office after upload.
Required
Retail PriceThe retail price entered as a decimal (e.g., 2.49).Required
Barcode (UPC / PLU, etc.)A unique product code used for scanning at checkout, ideally a GS1-standard code like a UPC, EAN, GTIN, or PLU. This code cannot be all zeroes. Enter barcodes as text to preserve leading zeros (e.g., by adding a single quote ’ at the start).Required
⚠️ Caution — Don’t include dollar signs in the Retail Price column. Enter prices as plain decimal numbers (e.g., 2.49, not $2.49). Adding a $ symbol will cause an error during import and the row will fail to load.

Additional Fields

Once your required fields are in place, you can include additional product attributes to support ordering, inventory, and checkout operations. These fields are optional, but they streamline Vori workflows as your store grows. ✏️ Note: If you already have this data on hand, it’s better to include it now rather than waiting to add it later.

Product Categories

FieldDefinitionPriorityNotes
Sub DepartmentSecond-level category for organizing products within departments.OptionalVori currently supports only two levels of product organization: departments and subdepartments.

Vendor & Cost Details

FieldDefinitionPriorityNotes
Vendor Item CodeThe ordering or reference code used by your vendor.Critical for Smart PricingOften printed on invoices or case labels.
Vendor NameThe primary vendor for the product.Critical for Smart PricingVori currently ingests one vendor per product.
CostVendor cost of the product.Critical for Smart PricingUsed to calculate margins and track cost changes.
Case SizeNumber of units per case.Critical for Smart PricingUsed for invoice and order accuracy.
BrandProduct’s brand or label name.OptionalHelpful for inventory search and shelf labeling.
⚠️ Important for Smart Pricing (Cost Changes): Including vendor, cost, and case size info now will significantly improve your ability to manage invoices and track margins.

Pricing & Sales Settings

FieldDefinitionPriorityNotes
Price EmbeddedMarks products where the barcode includes the price, such as items labeled and weighed in-store using deli or meat scales. These are often pre-printed labels with a Type 2 UPC generated by the scale itself.RecommendedApplies to printed barcodes from meat/deli department scales.
Manual PriceAllows cashiers to enter a custom price at checkout.OptionalUseful for open or flexible-priced items.
Prompt for QuantityTriggers POS to ask for quantity input at checkout.OptionalGood for loose-pack or variable-quantity items.
Sold by WeightMarks the product as sold by weight at the register (e.g., $3.99/lb).RecommendedCommon for produce, bulk items, meat, or deli.

Packaging & Size

FieldDefinitionPriorityNotes
Pack SizeInner pack units per retail product.Optional
Unit VolumeSize of the product (e.g., 16oz, 500g).Optional
Unit of MeasureThe unit the item is sold by (e.g., Each, LB, OZ).OptionalDefaults to “Each” in the Back Office.

Compliance & Tax

FieldDefinitionPriorityNotes
Age RestrictionMinimum legal age to purchase (e.g., 16, 18, 21).RecommendedCan be set at the item or department level.
EBT EligibleMarks whether the product qualifies for EBT.RecommendedCan be set at the item or department level.
Country of OriginThe country where the product was produced.OptionalRequired by law in some states (e.g., California).
⚠️ Caution: Compliance Reminder: Certain fields, such as Country of Origin and Other Tax, may be required by city, state, or federal regulations (e.g., California law requires Country of Origin labeling on certain products). It is the responsibility of each store to ensure compliance with all applicable labeling and regulatory requirements.

📤 Upload your APL to Vori Back Office

Once your CSV is ready, you can upload it directly from the Product Catalog. 🚨 Warning — The uploader overwrites existing product data. If a barcode in your CSV matches a product already in your catalog, the uploader will replace the existing values — including Retail Price — with whatever is in your file. Before you upload against a live catalog, double-check every column and use the Review Linked Data step to confirm what will change. If you’re a new store with an empty catalog, this doesn’t apply to you — new rows will appear under the Create tab.

Step 1: Open the product uploader

In Vori Back Office, go to Products > Product Catalog, then click Upload in the top-right corner. Vori Back Office sidebar with Product Catalog selected under the Products menu Product Catalog page with the Upload button highlighted in the top-right corner

Step 2: Upload your CSV

Drag and drop your file into the upload area, or click Select File to browse. Only CSV files are accepted. If you’re starting from the Google Sheets template, export it as a CSV first so you have a file the uploader can accept. 💡 Tip: If you don’t have a file ready yet, click Download CSV template at the bottom of the screen to grab a blank template directly from Vori. Once your file appears in the upload area, click Upload in the top-right to continue. Import Store Products upload screen showing a CSV file ready to upload and the Download CSV template link

Step 3: Map your fields

Vori automatically matches your CSV columns to the right fields in Back Office. Required fields — Barcode, Product Name, Department, and Retail Price — are flagged so you can confirm they’re mapped before moving on. The right-hand Preview panel shows sample values from your file so you can spot mapping issues before committing. If a column isn’t relevant, leave it set to Skip this column. When everything looks right, click Next. Map Fields step showing CSV columns matched to Back Office fields, with Barcode, Product Name, Department, and Retail Price flagged as required, and a Preview panel on the right

Step 4: Review linked data

Vori processes your file and sorts every row into one of four tabs. This is the most important step — it shows you exactly what’s about to happen before any changes are made.
  • Create: New products that will be added to your catalog.
  • Update: Existing products that will be overwritten with values from your file. Open this tab and review every row carefully — especially Retail Price.
  • Invalid: Rows with errors (e.g., missing required fields, malformed barcodes). These will not import.
  • Excluded: Rows you’ve manually excluded from the import.
⚠️ Caution: Anything in the Update tab will replace what’s currently in your catalog. To skip a row from the final import, click Exclude in the Exclude column. Rows in the Invalid tab will not be imported — fix the issues in your CSV and re-upload, or move on without them. When you’re confident in what’s about to change, click Commit in the top-right to finalize the upload. Review Linked Data step with Create, Update, Invalid, and Excluded tabs showing each row sorted before import

Step 5: Confirm your products are live

Once committed, your products appear in the Product Catalog with all mapped fields populated. Product Catalog showing the newly imported product with Name, Barcode, Department, Brand, and Retail Price populated

How the uploader handles existing products

If you’re uploading to a catalog that already has products in it — whether you’re adding a new vendor’s items or refreshing pricing across the store — here’s how Vori matches and updates rows:
  • Matching is by barcode. Vori looks at the Barcode column in your CSV and checks whether that barcode already exists in your catalog.
  • New barcodes create new products. Anything not already in the catalog lands in the Create tab.
  • Matching barcodes overwrite existing products. Anything that matches lands in the Update tab. Values in your CSV — including Retail Price — will replace the values currently on file.
  • Invalid rows are skipped. Rows missing required fields or with malformed data won’t import.
💡 Tip: If you only want to add new products without touching existing ones, filter your CSV down to barcodes that aren’t yet in your catalog before uploading. You can also use the Exclude action on the Update tab to skip specific rows during the review step.

Enhancing Your Product List Further

After your initial upload, you can continue improving your product list using tools in Vori Back Office: 💡 Tip: If you already have this info available, such as from purchase orders or invoices, it’s worth entering now to avoid backtracking later.