Importing Brewery Orders
If your sales history lives in a spreadsheet, or in another brewery system like Ollie or Ekos, you can bring it into BarSight with one upload instead of re-entering every invoice. The Import Orders CSV tool reads your file, shows you a preview, lets you match your packages to your package groups, and then creates the customers, products, package groups and closed orders for you.
Before You Start
- Your account must be on a paid plan or an active trial, and you need full access to the Orders page. The import options only appear for people who have it.
- Decide which facility the sales belong to. The whole file is imported into the facility you choose.
- Decide how you want tax handled. BarSight works it out from your file in one of three ways, and the choice changes what you put in the file. See How Tax Is Worked Out below.
- Have your customer names spelled the way they appear in BarSight. Customers are matched by their exact name.
- You do not need to create products or package groups first. Anything the import cannot match is created, and you review the matches before anything is saved.
What the Import Does and Does Not Do
- Every new order is created as a closed order, dated with the date in your file, so it becomes part of your sales history.
- It does not add or remove stock. If you choose to create inventory records, they are placeholders at a quantity of zero.
- It does not import payments. Use Import Payments CSV from the same Settings menu for those. See Importing Order Payments.
- Existing orders are matched by customer, order number and date only, whatever their facility or status. If a row matches one, the line is added to that order, so never import the same file twice.
Step 1: Prepare Your CSV File
The quickest way to get the format right is to start from our sample file. It holds twelve lines across five orders, with kegs and cans, a dollar discount, taxes and deposits.
Open it in your spreadsheet program, replace the example rows with your own sales, and save it as a CSV again. Keep the first row as it is, because BarSight uses it to work out which column is which.
Columns BarSight Recognizes
Column order does not matter and you can leave out any column you do not need. Headings are case sensitive. If two columns would map to the same field, the one further left is used and the other is ignored.
| Column Heading | Other Headings Recognized | What to Enter |
|---|---|---|
Customer |
Buyer, Customer Name, Customer Title, Company |
Required. The customer's name. A customer BarSight does not know is created for you. |
Quantity |
- | Required. The number of units on the line, greater than zero. |
Product Name |
Product |
The beer or product. Use it together with Package Group. |
Package Group |
Item, Variant Name |
How it was sold, such as 24 x 355ml - Can or Keg - 50L. May also hold the product and the package together, like Pale Ale (Keg - 50L). |
SKU |
Item Number, Item Name |
If this matches a SKU you already have on a product package, it decides the product and package on its own. |
Order Number |
Reference Number, Invoice Number, Number |
Your invoice or order number. Lines with the same customer, number and date become one order. |
Date |
Order Date, Delivery Date |
The order date. 2026-01-12 is safest. Without this column every order is dated today. |
Unit Price |
Cost |
The price for one unit. A $ and thousands commas are removed for you. Use a period for the decimal point. |
Discount |
- | A dollar amount taken off the whole line, not a percentage. Enter a plain number with no $ sign, or the discount is ignored. |
Deposit |
Government Deposit |
The total deposit for the line. BarSight divides it by the quantity. Enter a plain number with no $ sign, or the deposit is ignored. |
Tax, Tax1, Tax2, Tax3, Subtotal |
Tax Code, Tax Rate for Tax; GST for Tax1, BC PST for Tax2 |
Used to work out tax. Tax is a tax code or a percent, Tax1 to Tax3 are dollar amounts. Read How Tax Is Worked Out before you use these. |
Address, City, Province, Country, Postal Code |
Address1, Shipping Address; Shipping City; State, Shipping State, Shipping Province; Zip, Zip Code, Postal, Zip/postal code, Shipping Postal Code |
Only used when a customer has to be created. Province and country can be a name or a code. If BarSight does not recognize them it uses your location's defaults. |
UPC |
- | The barcode, saved on the product package. |
Sales Rep |
- | An employee's email address or name. The order is credited to that employee. Email addresses match most reliably, because a short name such as a first name alone can match the wrong employee. If nobody matches, it is credited to the person importing. |
On accounts in British Columbia, License Number and Customer Type columns are also read and saved on any customer the import creates. Customer Type must be the three letter code, such as LIC or LRS. With no Customer Type column, new customers are set to LIC. The columns Id and Unit Volume are recognized but not used.
[SCREENSHOT: The sample CSV open in Excel with the header row highlighted and the Discount, Tax1 and Deposit columns visible]
How Rows Become Orders
- One row per line item. An order with three products is three rows. Repeat the customer, order number and date on every row.
- Orders are grouped by customer, order number and date. If you have no order number column, all of one customer's lines on the same date become a single order numbered
Imported. If you have the column but a cell is blank, that line goes onto an order with no number, so fill in every row. - A blank customer cell carries over the customer from the row above, but it is safer to fill it in on every row.
- Dates: with a year-first date like
2026-01-12there is no confusion. With slash dates like1/12/2026, BarSight reads the whole file to work out whether the day or the month comes first, using any date where the day is above 12. If every date is ambiguous it assumes the day comes first, so use the year-first format when in doubt. - Sales that are credits or returns usually have a negative quantity. Those rows are skipped, along with any row whose quantity is blank or zero. A credit written in brackets, like
(2), is read as a positive 2, so change those to negative numbers first.
How Tax Is Worked Out
BarSight does not store the tax amounts from your file. It works out which tax applies to each line, using the taxes you have set up, and then calculates the amount from your tax settings. It never creates a new tax. It looks for the tax in this order, using the first one the row has:
- A
Taxcolumn. This is a tax code or name such asGSTorGST+PST, or a percent such as5or12%. Codes match your own taxes, ignoring capital letters, spaces and punctuation. A percent matches the tax you have set up at that combined rate. - Tax amount columns. If the row has
Tax1,Tax2orTax3amounts, BarSight adds them up and finds the tax that gives that many dollars on the line, so a line with $0.60 of tax on $12.00 matches your 5% tax. An amount of zero means no tax. - A Subtotal that includes tax. If the Subtotal is higher than Unit Price multiplied by Quantity (after any Discount), BarSight works out the tax from the difference. A Subtotal that equals the pre-tax total says nothing about tax and is ignored.
- Otherwise, or when none of the above matches one of your taxes, the line gets your default tax.
The import summary email lists the tax used on every line, and marks it (default) where your default tax was used because the file gave no tax, or one BarSight could not match.
Tax-exempt lines. A zero in a Tax, Tax1, Tax2 or Tax3 cell means no tax. A blank cell means nothing was given, and the default tax is used. If your file has no tax information at all, every line gets the default tax.
Adding Your Own Tax Columns
The most reliable way to get tax right is to add it to your file yourself. The simplest choice is a Tax column holding the tax code for each line, such as GST, GST+PST or None. If you only have amounts, use Tax1, Tax2 and Tax3, each holding the tax amount in dollars for that line.
- Add a column headed
Tax1. In the first row, enter a formula for the tax on the line, such as Quantity times Unit Price, minus any Discount, times your rate. For 5% GST that is=ROUND((B2*C2-D2)*0.05, 2)if those columns hold Quantity, Unit Price and Discount. - If you charge a second tax, such as PST, put it in a column headed
Tax2. A third goes inTax3. - Copy the formula down, then use Paste Special → Values so the file holds numbers and not formulas.
BarSight adds the columns on each line and uses the tax whose rate gives that many dollars. A line taxed with 5% GST and 7% PST comes to 12%, so you need a tax at 12% in your tax settings, or the line gets your default tax. Enter the amounts as plain numbers, without a $ sign.
Tax can need a quick hand from us. Taxes are the part of an import most likely to need a final adjustment, especially for mixed rates or files exported from another system. After your import, compare a few order totals with your source records. If the tax is off, contact BarSight support and we will correct it on the imported orders for you.
Products and Package Groups
- BarSight first looks for a
SKUthat matches a product package you already have. If there is a match, that is used and the names in the file are ignored. - Otherwise it looks for a product with exactly the same
Product Name, and creates one if there is none. - If your product and package are in one cell, such as
Prairie Pale Ale (Case - 24x - 355ml - Can), BarSight splits them for you. - Items with no package, such as t-shirts, can be imported as plain inventory items. You choose in the matching step below. A plain inventory item is named after the full text of your Package Group column, or after the Product Name when that cell is empty.
Step 2: Upload the File
- Navigate to Brewery → Orders.
- Open the Settings menu in the toolbar and choose Import Orders CSV.
- In the Import Orders window, choose the Facility the sales belong to.
- Under CSV File, choose your file.
- Decide on Skip inventory creation. Ticked, BarSight only records the product and package on each order line and creates no placeholder inventory records for your beer. Unticked, it also creates those placeholder records, as described earlier. Lines imported as plain inventory items still get their inventory records either way. BarSight remembers your choice for 30 days.
- Click Upload.
[SCREENSHOT: Orders page Settings menu open with Import Orders CSV highlighted, and the Import Orders window showing Facility, CSV File and Skip inventory creation]
Files can hold up to 50,000 rows. Split anything larger.
Step 3: Review the Preview
BarSight shows your file as a table before anything is saved. The headings show the name each column was matched to. A column it could not match says -Unused- and is ignored, so if a column you need says -Unused-, fix its heading in your file.
Check that Customer, Quantity and either SKU or Product Name with Package Group are all matched. Once they are, the data rows are highlighted. That only means the columns were found, not that every value in them is valid.
Match Your Package Groups
When the preview opens, a Match Package Groups panel opens beside it. You can open it again with Review Package Groups. It lists each different package description in your file, with a choice beside it:
- Raw inventory item (find or create). The line is imported as a plain inventory item. This is the default for anything BarSight could not match with confidence, which suits merchandise and ingredients. Be careful with it for beer, because several products with the same package text would be combined into one item.
- Create new package group. A new group is made with that description as its name.
- An existing package group. BarSight pre-selects its best guess, comparing the count, volume and container of each.
Highlighted lines are the ones BarSight was not sure about. Check each, then click Apply Matches.
[SCREENSHOT: Match Package Groups panel with a matched line, a highlighted unmatched line and the dropdown open]
Step 4: Import
- Click Import into Database at the top of the preview.
- BarSight processes each row and returns you to the Orders page with a message such as "34 of 36 rows imported, 2 with errors. A summary was emailed to you."
A row that cannot be imported is skipped without stopping the others. The summary email goes to the address on your employee profile. It lists every order line that was imported and every row that was skipped, with the reason for each, so you can fix those rows and import them again. If your profile has no email address, the message says the summary could not be sent.
Expect some duplicates after a large file. The import creates a customer, product or package group for every name it could not match exactly, and gives each new product a placeholder recipe named Imported. Once all your files are in, merge the duplicates away by following Cleaning Up After an Import. It covers customers, package groups, products and recipes, in the order that keeps your pricing and history intact.
Why a Row Might Be Skipped
A skipped row does not create an order line. A new customer or product named on that row may already have been created before the problem was found.
| Reason | What to do |
|---|---|
| No customer for this row | The customer cell is empty and there is no customer above it to carry over. |
| Quantity is missing, zero or negative | Common for credits and returns. The line is not created, so add those in BarSight afterwards. The summary email lists these rows. |
| The order date could not be read | Use the 2026-01-12 format. |
| No product or item name, and the SKU did not match | Fill in the Product Name and Package Group, or the Item column, or use a SKU you already have. |
| The product, package group, order or order line could not be created | Contact support with the order number from the summary email so we can look into it. |
Moving From Ollie or Ekos
If you are switching from another brewery system, export your sales to a CSV and import that file. Most columns line up on their own, and a few need a quick change first. Exports from other systems can change over time, so always check the preview for -Unused- headings.
From Ollie
An Ollie sales export has one row per line item, with the order number repeated on each row. Most of its columns are recognized.
| Ollie Column | What Happens |
|---|---|
Reference Number, Date, Buyer, Address1, City, State, Country, Zip/postal code, Sales Rep, Product Name, Variant Name, SKU, UPC, Quantity, Unit Price, Discount |
Recognized automatically. Variant Name is used as the package, and the product name is removed from it for you. |
GST, BC PST, Government Deposit |
Recognized as Tax1, Tax2 and Deposit. |
License Number, Customer Type |
On BC accounts, saved on any new customer. |
Subtotal |
Recognized, but in an Ollie export it is the price times the quantity, before tax. That says nothing about tax, so BarSight ignores it and uses the GST and BC PST columns. |
| Everything else | Ignored, including Status, Payment Status, Lot Code, Cases, the unit and total volume columns, the shipping contact columns, Total and the order totals. |
- Many -Unused- headings are normal. The preview shows the columns in the ignored row above as -Unused-. That is expected, so you do not need to delete them.
- Credit lines. Ollie lists credits with a negative quantity. Those rows are skipped, so remove them first if you want a clean count.
- Payments. The payment status is not imported. Bring payments in with Import Payments CSV, described in Importing Order Payments.
- Tax. BarSight adds GST and BC PST for each line and uses the tax of yours that gives that many dollars. A line with zero in both is recorded with no tax. If you have not set up a tax at the combined rate, your default tax is used and the summary email marks it.
From Ekos
An Ekos sales export puts the product and the package together in one Item column, like Prairie Pale Ale (Case - 24x - 355ml - Can). BarSight is built to split that for you.
| Ekos Column | What Happens |
|---|---|
Number, Company, Shipping Address, Shipping City, Shipping State, Delivery Date, Item Number, Quantity, Unit Price, Sales Rep |
Recognized automatically, as the order number, customer, address, city, province, date, SKU, quantity, price and sales rep. |
Item |
Recognized as the package group. The product and the package are split apart, and the package is what you match in the Match Package Groups panel. |
Subtotal |
Recognized, but in an Ekos export it is the price times the quantity, before tax. That says nothing about tax, so BarSight ignores it. |
Sales Tax Rate |
Read as the Tax column, as a percent. Check the preview, because a line with a blank rate gets your default tax. |
Shipping Customer Name, Sales Tax, Deposit Item |
Ignored. Deposit Item holds the name of a deposit, not an amount, so deposits are not imported. Add a Deposit column with the dollar amount if you want them. |
- Many -Unused- headings are normal. Columns such as Shipping Customer Name and Sales Tax show as -Unused- in the preview. That is expected.
- Tax. Lines with a Sales Tax Rate get the tax of yours at that rate. Any other line gets your default tax. If some lines were taxed differently, add a
Taxcolumn with the code for each line, as described in Adding Your Own Tax Columns above. - Dates. Ekos dates have the month first, like
1/12/2026. BarSight works that out on its own as long as at least one date in the file has a day above 12. - No country or postal code. The export has neither, so customers BarSight creates get your location's country and no postal code.
- Items with no brackets, such as merchandise, show as "(no package listed)" in the matching panel and import as inventory items.
[SCREENSHOT: Import preview of an Ekos file with the Match Package Groups panel open]
Ollie and Ekos are trademarks of their respective owners. BarSight is not affiliated with or endorsed by either company. Their names are used here only to describe which files this importer can read.
Tips and Best Practices
- Settle your tax first. Check your default tax under your tax settings and make sure a tax exists at each rate you charge, because the import can only match rates you have set up.
- Compare a few totals afterwards. Open two or three imported orders and check the tax against your source records. If it is off, contact support.
- Clean up customer names before you upload.
The Copper Kettle PubandCopper Kettle Pubbecome two customers. A find and replace on the Customer column prevents duplicates. - Use SKUs once your products exist. A matching SKU settles the product and the package without any guessing, and it protects the price you already have on that package.
- Spend your time on the Match Package Groups panel. It is the one place where a wrong choice is hard to undo.
- Import one date range at a time. A file per year or per quarter makes any problem easy to find, and keeps you well under the 50,000 row limit.
- Keep the original export. You will want it if you need to compare what BarSight created with what you started with.
- Prices in the file can replace your package prices. For every row not matched by SKU, the unit price and deposit from that row are saved onto the package, and the last row wins. The price saved is the price after any discount, so a discounted line lowers it. Packages matched by SKU are left alone, so use SKUs to protect your current prices, and check your price lists afterwards.
Troubleshooting
Problem: I see "Invalid CSV Upload file (0 rows found), please try again."
Solution: The file is not a real CSV or is empty. Use Save As, choose CSV (Comma delimited), and make sure the name ends in .csv.
Problem: I see "Import file exceeds the maximum".
Solution: The file has more than 50,000 data rows. Split it into smaller files, for example one per year.
Problem: The orders came in with the wrong tax.
Solution: Open the import summary email, which lists the tax used on each line. A line marked (default) got your default tax because the file had no tax for it, or the value did not match one of your taxes. Contact support to remove the orders, then add a Tax column with the tax code for each line and import again.
Problem: Every line of an order appears twice.
Solution: The same file was imported twice. The second import adds its lines to the orders that already exist. Contact support and tell us the date and time of the import.
Problem: Dates are wrong, with the day and month swapped.
Solution: Every date in the file was ambiguous, so BarSight assumed the day came first. Use the year-first format, such as 2026-01-12.
Problem: A column I need shows -Unused-.
Solution: The heading does not match one BarSight knows. Compare it to the table above, watching for capital letters and extra words.
Problem: A package ended up matched to the wrong group.
Solution: The matching choice is saved as the import runs. Contact support to fix the affected order lines, and check the panel carefully next time.
Problem: I see "You need to upgrade to a paid plan to upload files."
Solution: File uploads need a paid plan or an active trial.
Related Features
- Importing Brewery Inventory Items
- Defining Packaging Groups
- Adding Items to Your Inventory
- Cleaning Up After an Import, for merging the duplicate customers, products and package groups an import leaves behind.