---
title: How to import purchase orders and supplier confirmations
url: https://tideswell.xyz/docs/purchasing/import-orders-and-confirmations
description: Paste a CSV of orders, or turn a supplier's confirmation file into an order, with a preview before anything is written.
---

> Documentation index: fetch https://tideswell.xyz/llms.txt to discover every page before exploring further.

# How to import purchase orders and supplier confirmations



Three imports, for three different jobs: bringing an existing order book in, turning a
supplier's confirmation into a new order, and adding confirmed lines to an order you already
have. All of them preview before they write.

## Before you start [#before-you-start]

Import controls appear for people with write access.

Importing writes into Tideswell only. Your original spreadsheet is untouched, and nothing is
sent to Shopify or to a supplier.

## How do you import your existing order book? [#how-do-you-import-your-existing-order-book]

**Import CSV**, on the calendar view. Paste or upload the file, and you get a preview of what
will be created or updated, with per-row errors listed.

The file needs a specific header row:

```
vendor, po_number, revise_by_date, ship_date, days_out, original_amount, revised_amount, status
```

The preview shows the first ten rows and lists the first twenty errors, which is enough to
tell whether the file is right without scrolling a thousand lines. Fix the file and re-import
rather than fixing rows afterwards.

This is the one to use when you are moving off a spreadsheet. Do it once, check the book
looks right, then work in Tideswell.

## How do you turn a supplier's confirmation into an order? [#how-do-you-turn-a-suppliers-confirmation-into-an-order]

**Import confirmation**, also on the calendar view. Upload the file the supplier sent and map
its columns.

Mapping means telling Tideswell which column is the product, the quantity, the SKU and the
unit cost. **Product and quantity are required**, and SKU and unit cost are optional.

The mapping is remembered per vendor, so the second time you import from Portside Mills the
form is already filled in. That is the part that makes this worth using every month rather
than once.

## How do you add confirmed lines to an order you already have? [#how-do-you-add-confirmed-lines-to-an-order-you-already-have]

**Import lines**, from the order's own page. Same mapping, applied to the existing order.

This is the usual monthly rhythm: you wrote the order, the supplier came back with what they
can actually supply, and this puts their numbers in as revised quantities.

A line already on the order is skipped rather than duplicated.

## What does the summary tell you? [#what-does-the-summary-tell-you]

Before committing: how many rows are ready and how many will be skipped.

Afterwards: how many lines were imported, how many were matched to Shopify, and how many were
skipped.

**Matched to Shopify** means the line's SKU was found in your catalogue, so on-hand and
incoming figures can be shown for it. An unmatched line still imports; it just cannot show
those columns.

## What if a lot of lines did not match Shopify? [#what-if-a-lot-of-lines-did-not-match-shopify]

You are told to open the order and re-run the import to match them, which is the fix.

Unmatched lines are usually a SKU written differently by the supplier, or a product not in
Shopify yet. Both are worth correcting, because an unmatched line cannot contribute to
incoming stock and will not appear in reorder maths. See
<Ref to="inventory/find-what-to-reorder" />.

## Why did rows get skipped? [#why-did-rows-get-skipped]

Most often because the line is already on this order, which is the safe outcome: importing the
same confirmation twice does not double an order.

Otherwise the preview's per-row errors name the reason before you commit. Reading that preview
is the whole point of it.

## Why is the import taking a while? [#why-is-the-import-taking-a-while]

Because matching SKUs against your Shopify catalogue is the slow part, and a large file does
a lot of it. It runs under a longer time limit for exactly that reason.

Let it finish rather than re-running it.
