You can import historical orders, or orders from another system such as an old point of sale or a marketplace, on the Orders screen using + Import Orders CSV. Imported orders become part of each customer's purchase history in WithWine.
Check and clean your data before you import. The order import accepts some mistakes without a warning, such as a wrong total or an email address that isn't in WithWine, and imported orders can't be safely corrected by importing them again. Start with a test file of a few orders, check them, then import the rest. See What should I check in my data before importing it into WithWine?
Why import orders
Imported orders count towards each customer's lifetime value (LTV) and show up when you filter the Customers screen by what people bought. For example, you can find everyone who bought your Riesling in the last 3 years, including purchases made before you used WithWine, then email them about the new vintage.
What importing orders doesn't do
It doesn't email your customers.
It doesn't reduce your stock.
It doesn't earn loyalty credit.
It doesn't affect your payouts.
It doesn't create customers.
Before you start
Import your customers first. See How to import customers from a CSV file An order whose email address isn't in WithWine still imports, but with no customer attached.
Add the products you want to report on to WithWine, and note each one's product ID or SKU. Make sure no two products share a SKU.
Pick a name for the system your orders come from, for example Old Cellar Door POS. You'll use it in the External Channel Name column for every order.
Remove orders you don't want counted, such as test orders. Imported orders count towards lifetime value, even cancelled ones.
Set your date and phone number columns to text format so your spreadsheet program doesn't change them.
One row per product, or one row per order
Each row in the CSV file is one product in an order. You can set up your file in two ways:
One row per product (recommended): an order with 3 different wines has 3 rows. Each row names the product with WithWine Product ID or Product SKU, plus its Product Quantity and Item Total. Repeat the order details, such as External Reference, Total and Order Date, exactly the same on every row of the order.
One row per order: the whole order is one row, with the products described as text in External Product Name (for example "Mixed dozen") and the dollar amount in Item Total.
Only products imported with a product ID or SKU show up when you filter the Customers screen by product, wine type or variety. A product imported as text doesn't, even if the text is exactly the product's name in WithWine. The order still counts towards the customer's lifetime value and the Purchased filter.
Example of one order with two products (one row each):
Row 1: External Channel Name Old Cellar Door POS, External Reference OLD-1001, Email demo+110@withwine.com, Order Date 2024-12-10 01:00, Status Collected, Shipped Date 2024-12-10 01:00, Transaction Type ExternalVisa, Total 109, Product SKU SR-RIE, Product Quantity 2, Item Total 64
Row 2: the same order details, then WithWine Product ID 13705, Product Quantity 1, Item Total 45
Choosing a status for old orders
Collected or Shipped: use these for orders that are finished. Add a Shipped Date.
Cancelled: shows the order as cancelled.
Pending, ReadyForCollection and AwaitingPayment: these are for orders that still need to be dispatched, picked up or paid. A Pending order, for example, appears as an unfulfilled order on the Orders screen for your team to pack or hand over. Don’t use these statuses for orders that are already finished.
Paid isn't accepted, even though it's listed in the import pop-up. Use Collected or Shipped.
Steps
Go to Orders.
Click + Import Orders CSV.
If you don't have a file yet, click Download template CSV file. The template has every column. Fill it in, then save it as a CSV file.
Under CSV file, click Choose File and select your file. Leave File has a header row ticked if your first row has the column names.
Check that each field shows the right column from your file. Choose None for fields you aren't importing. The required fields are Total, Transaction Type and Order Date, plus External Channel Name and External Reference.
Click Import.
Read the Import Complete pop-up. The number shown is the number of rows (order items), not orders. Any failed rows are listed with the reason. Click Close.
For every field and the values each one accepts, see What order details can I import from a CSV file?
Things to get right
Dates are in UTC (GMT+0), written yyyy-MM-dd HH:mm. For example, an order placed at 12 pm in Sydney during daylight saving time is 2025-02-14 01:00. Don't use day/month/year: 03/04/2025 is read as 4 March.
Totals must be right. WithWine doesn't check that the items add up to the Total, and uses the first row's total if rows of the same order differ.
Item Total is the amount after any item discount. Put the discount in Item Discount.
Absolute Discount Applied is a negative number, for example -10 for $10 off the whole order. Item totals + shipping + Absolute Discount Applied = Total.
Shipping: put the shipping cost in the Shipping column (repeated on every row of the order), or as its own row with External Product Name set to Shipping and Is Shipping Cost set to True. Don't use both for the same order.
Transaction Type: use Cash, Eftpos, ExternalVisa, ExternalMastercard, ExternalAmex, ExternalGiftCard or ExternalOtherCredit. Invoice isn't accepted, even though it's listed in the import pop-up.
If some rows fail
If any row of an order fails, the whole order isn't imported, even though the Import Complete count includes that order's good rows. Fix the failed rows in your file and import all the rows for those orders again. Don't import orders that were already imported successfully a second time.
Don't re-import orders to correct them
Importing an order again with the same External Channel Name and External Reference updates that order, but it doesn't replace the products already on it, and it can change the order's payment and fulfilment status. If an imported order is wrong, contact WithWine support rather than importing it again.
What happens next
Imported orders appear on the Orders screen with your external channel name and reference under the order number, for example Old Webstore: OLD-2012. Click Remove all filters to see them all.
Each order shows Sales Channel: Import.
The orders count towards each customer's lifetime value and the Purchased filter on the Customers screen.
Troubleshooting
"Status must be one of the following…": use Shipped, Collected, Cancelled, Pending, ReadyForCollection or AwaitingPayment. Paid isn't accepted.
"Transaction Type must be one of the following values…": use one of the values in the message. Visa on its own isn't accepted; use ExternalVisa.
"Product SKU … matched multiple products": two products in WithWine have the same SKU. Use WithWine Product ID for that product instead.
"Product SKU … did not match an existing product": check the SKU, or add the product to WithWine first.
"Either WithWine Product ID, SKU or External Product Name are required": every row needs a product. For a shipping row, set External Product Name to Shipping and Is Shipping Cost to True.
An order has no customer: the email in your file didn't match a customer in WithWine. Contact WithWine support.
A customer doesn't show up when I filter by a wine: their order was imported as text in External Product Name, so WithWine can't tell which wines were in it. Use one row per product with a product ID or SKU for future imports.
Old orders are showing as unfulfilled: they were imported with a status such as Pending. Contact WithWine support.
