BarSight
Overview Pricing Resources Community Register Login

Importing Purchase Orders from a CSV File

When you move to BarSight, your accounts need your past purchases too, or your spending reports start from zero. The Import Purchase Orders CSV tool brings in historical purchase orders from a spreadsheet. It groups your rows into purchase orders, shows you a preview of what it will do, and then adds each order as a received, unpaid purchase. It is built for the numbers. It does not touch your stock and it does not send anything to QuickBooks.

This guide covers the import. For creating purchase orders day to day, see Purchase Orders: Complete Guide.

Before You Start

  • You need a paid or trial plan and access to the purchase upload tools. The menu entry only appears for people who have it.
  • You need at least one GL account that can be used on purchases, and at least one payment type. The import asks you to pick GL accounts in the preview, and each order takes its vendor's default payment type.
  • Import your items first if you can. The import matches each row to an item you already have by item number, then by exact name. A row that matches nothing creates a new, basic item. If your ingredients are already in BarSight, the purchases land on them. See Importing Brewery Inventory Items.
  • Keep the file to 5,000 rows or fewer. A larger file is refused with a message telling you how many rows you have. Split it into several files.

What the Import Does and Does Not Do

  • It adds one purchase order for each PO number in your file, with a line for each row. The file does not need to be sorted, and the rows of one PO can be anywhere in it.
  • Each order is added as received, posted and unpaid. You can record the payments afterwards, as described in the Purchase Orders guide.
  • It does not add stock. Nothing is received into your inventory, so your counts do not change. Use Importing Lot Counts for what is on your shelves today.
  • It does not send anything to QuickBooks, and it does not queue any events or notifications.
  • It does not change or replace a purchase order that already exists. See Running the Same File Twice.

Step 1: Prepare Your CSV File

Start from our sample file. It holds five purchase orders from four vendors, and most of the items match the sample file in the inventory import guide, so you can try the two together. The last order is from a vendor and for an item that are not in that file, so it shows you what a new vendor and a new item look like in the preview.

purchases_import_sample.csv Sample file with five purchase orders and twelve lines
Download Sample

Open it in your spreadsheet program, replace the example rows with your own purchases, and save it as a CSV again. Keep the first row, because BarSight uses it to work out which column is which.

[SCREENSHOT: The sample CSV open in Excel with the header row and the three rows of PO 1001 visible]

Columns BarSight Recognizes

Order of columns does not matter, and capital letters in the heading do not matter. If two columns would map to the same field, the one furthest left is used. Each row is one line of a purchase order, and the order details repeat on every row of that order.

Column Heading Required? What to Enter
Vendor Yes The vendor's name, spelled the same as in BarSight. A vendor with a name BarSight does not know is created. Supplier and Vendor Name also work as headings.
PO Number Yes The order's number. It becomes the purchase's invoice number. PO #, PO No, Invoice Number and Order Number also work.
PO Date Yes The date of the order. 2026-03-02 is safest. See How Dates Are Read. Order Date and Invoice Date also work.
Item Yes The item's name. Item Name, Product, Product Name and Description also work.
Quantity Yes How many were ordered, above zero, with up to two decimals. Qty, Qty Ordered and Quantity Ordered also work.
Total Item Cost or Cost Per Yes, one of the two What the line cost. Total Item Cost is the cost of the whole line and is the one to trust. Cost Per is the price of one unit. If a row has both, the line total is used. Dollar signs and commas are fine. Line Total and Item Total also work for the first, and Unit Cost, Unit Price and Cost for the second.
Item Number No Your item's number or vendor SKU. When it matches an item you have, it wins over the name. SKU and Item Code also work.
UOM Type No Weight, Volume or Count (Each and EA also count). It is only used when the item has to be created. See Items That Do Not Exist Yet.
Total Cost No, but recommended What the whole order cost, including tax and shipping. It can sit on every row of the order. See Taxes and Shipping. PO Total and Total also work.
Created Date No The day the order was entered in your old system. If it is blank or unreadable, the PO Date is used. Date Created and Entered Date also work.
Address, City, Province, Postal Code No The vendor's address, used only if the vendor has to be created. Vendor Address, Vendor City, State, Zip Code and similar spellings also work.

If the file is missing a required column, the preview tells you which one and nothing can be imported until you add it.

How Dates Are Read

ISO dates like 2026-03-02 are always read correctly. For dates written with slashes, dashes or dots, BarSight looks at every date in your file. A value like 23/04/2026 can only be day first, and 04/23/2026 can only be month first, so one such row settles the whole file. If every date in the file could be read either way, BarSight assumes day first. A time after the date, such as 09/06/2026 03:17 PM, is ignored. A date that cannot be read fails the whole order.

Taxes and Shipping

The lines of the imported order carry no tax. Instead, BarSight compares your Total Cost with the lines. Whatever the total has beyond the lines is added to the order as one extra line called "Taxes and fees (imported from the file's Total Cost)". So GST, shipping and fuel charges all end up in that one line, and the order total in BarSight matches your file.

In the sample file, order 1001 has lines that add up to $944.25 and a Total Cost of $991.46. BarSight adds a taxes and fees line of $47.21.

  • If there is no Total Cost column, or it is blank for that order, no extra line is added and the order total is just the lines.
  • If the lines add up to more than the Total Cost, the extra line is negative, so the order total still matches your file.
  • Small rounding differences, from a unit price that was rounded in your old system, also end up in this line. That is why the line total is preferred over the unit price.

Items That Do Not Exist Yet

BarSight looks for each row's item in this order: item number first, then the exact name, ignoring capital letters. There is no fuzzy matching, so Pale Malt 2-Row and Pale Malt, 2-Row are different items. For items linked to your brewery inventory, the name used is the brewery item's name.

A row that matches nothing creates a new item with these settings:

  • The GL account you pick in the preview, under GL account for new items.
  • Your account's default tax.
  • A unit based on the row's UOM Type: Weight uses kilogram, Volume uses litre, and Count uses the default unit in your list. A missing or unrecognized UOM Type is treated as Count, and the preview tells you how many rows were affected.
  • The item is added to the vendor with the price from the file.

New items are basic purchasing items. They are not linked to brewery inventory, so they will not appear as raw ingredients for your recipes. Import your inventory first when you can, so this does not happen.

An item that already exists keeps its own settings. The order line uses the unit that item already has: the brewery unit for a linked item, otherwise the vendor's purchase unit, otherwise the item's unit. That means Quantity must be in that unit. If you buy a malt in 25 kg sacks but your item is counted in kilograms, enter 250 and not 10.

Step 2: Upload the File

  1. Navigate to Accounting → Purchase Orders.
  2. Open the Upload Invoice menu in the toolbar and choose Import Purchase Orders CSV.
  3. In the Import Purchase Orders window, choose your file under CSV File.
  4. Click Upload.

[SCREENSHOT: Purchase Orders page with the Upload Invoice menu open and Import Purchase Orders CSV highlighted]

Step 3: Review the Preview

BarSight shows your file before anything is saved. A summary at the top tells you:

  • How many rows and how many purchase orders are in the file.
  • How many purchase orders are ready to import, how many are duplicates, and how many have bad rows.
  • Which vendors and how many items will be created.
  • Which unit new items will use for each UOM Type.

Below the summary are two drop-downs. They are the only choices you have to make.

  • GL account for new items. Used for items the import has to create. Items you already have keep their own account.
  • GL account for taxes and fees. Used for the extra taxes and fees line on each order. If you have an account with "tax" in its name, it is chosen for you.

The table underneath shows every row. Column headings show the name each one was matched to, and a column it could not match says -Unused-. The first column, Status, shows what will happen to each row and is colored to match.

Status What it means
Import The order will be added, and every vendor and item on it already exists.
Import, creates vendor or items The order will be added, and a vendor or at least one item on it will be created. These rows are highlighted, so you can check them.
An error message The whole order will be skipped. The message gives the reason, for example that the order already exists or that a line has no quantity.

[SCREENSHOT: Import preview showing the summary table, the two GL drop-downs, and an Import row, a creates row and a skipped row]

If anything looks wrong, close the window, fix your file and upload it again. Nothing has been saved yet. The Import into Database button only appears when at least one order can be imported.

Orders Are All or Nothing

One bad row skips its entire purchase order, and the preview marks every row of that order. This keeps you from importing half an order. A row is bad when:

  • The vendor, PO number or item name is blank.
  • The PO date cannot be read.
  • The quantity is blank, zero or negative.
  • The row has neither a Total Item Cost nor a Cost Per.

Step 4: Import

  1. Choose your two GL accounts.
  2. Click Import into Database at the top of the preview.
  3. BarSight adds the orders and returns you to the purchases list with a message such as "5 purchase orders imported (12 of 12 rows), 0 rows with errors."
  4. Open a few of the orders and compare their totals with your own records.

A large file can take a while, so leave the page open until it finishes. Each order is saved on its own, so if one fails, the others are not affected, and the rows of the failed order are counted as errors.

What Each Imported Order Looks Like

  • The invoice number is your PO number, and the vendor is the one named in the file.
  • The order date is your PO Date, and so are the delivery and received dates. The entered date is your Created Date.
  • The payment type is the vendor's default payment type.
  • The order is received, posted and unpaid, and its comments say it was imported from a CSV.
  • Each line has your quantity, the unit described above, and a unit price worked out from the line total divided by the quantity.

A New Vendor

When a vendor in your file does not exist, BarSight creates it with the address, city, province and postal code from the file, and turns it on for the current location. It uses your account's default payment type until you change it. Later orders in the same file for that vendor use the new record. If the order that would create it fails, the vendor is not created either.

Running the Same File Twice

An order is skipped if the same vendor already has a purchase at this location with the same PO number. Leading zeros are ignored, so 0042 and 42 are the same number, and voided purchases do not count. This makes it safe to run a file again after you fix a few rows. The orders that went in the first time are skipped and the fixed ones are added.

Because existing orders are never changed, a file cannot be used to correct an order you already imported. Void the purchase in BarSight first, then import the corrected order.

Moving From Another System

You need an export with one row for each purchase order line, showing the vendor, PO number, date, item, quantity and cost. Several common headings are recognized as they are, such as Supplier, Qty Ordered, Cost Per and Total Item Cost. Check the preview for -Unused- headings, because exports from other systems change over time, and rename any that were not recognized.

If your old system does not export purchases at all, you can build the file in a spreadsheet from your vendors' invoices. The sample file is a good template.

Tips and Best Practices

  • Import your items before your purchases. Names and item numbers that match save you from cleaning up duplicate items later.
  • Include the Total Cost column. Without it, your imported orders do not include tax or shipping, and your spending reports come out lower than your real bills.
  • Use the line total, not the unit price. A unit price rounded to a few decimals drifts on large quantities. The line total does not.
  • Keep vendor names identical. Harbourside Brewing Supply and Harbourside Brewing would create a second vendor. Merge them afterwards if that happens.
  • Check the new items. In the preview, highlighted rows are creating something. Open the list of vendors and items afterwards and tidy the new ones.
  • Keep the original export. You will want it if you need to compare what BarSight recorded with what you started with.

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 "The file is missing these columns".

Solution: Add the columns named in the message. The import needs Vendor, PO Number, PO Date, Item and Quantity, and either Total Item Cost or Cost Per.

Problem: I see "You don't have any GL Accounts that can be used on purchases."

Solution: Create a GL account for purchases first, then upload the file again.

Problem: I see "Import file exceeds the maximum of 5,000 rows."

Solution: Split the file into smaller files, keeping all the rows of each purchase order in the same file.

Problem: A whole order is skipped and the message names one line.

Solution: The line number is the row number in your spreadsheet, counting the heading as row 1. Fix that row and upload the file again. The orders that already went in are skipped as duplicates.

Problem: An order says it already exists.

Solution: A purchase with that PO number is already in BarSight for that vendor. Nothing was changed. If the earlier one is wrong, void it first and import again.

Problem: The dates are the wrong way around, for example March 2 became February 3.

Solution: Every date in your file could be read either way, so BarSight assumed day first. Void the imported orders, change the dates to the 2026-03-02 style, and import again.

Problem: An item was created twice, or a new item appeared that should have matched.

Solution: The names differ by even a comma or a space, and there was no item number to go by. Merge the duplicate items, and add an Item Number column next time.

Problem: An order total is a little different from my records.

Solution: Look at the taxes and fees line on that order. Whatever your Total Cost has beyond the lines is placed there, so a total that is too high or too low in the file shows up on that line.

Problem: I see "The import stopped", or "Choose a GL account for new items and for taxes and fees".

Solution: Choose both GL accounts in the preview before you click Import into Database. If the message says no payment types exist, create one in your payment settings and upload again.

Problem: My stock did not change.

Solution: That is expected. Imported purchases are history for your accounts only. To set your stock, use Importing Lot Counts.

Related Features