Importing your data
TradeOS imports CSV files from Settings. This page is the exact format — it is public so you can give the link to ChatGPT, Claude or whatever you use, alongside an export from your current system, and have it produce files in the right shape.
Give this to your AI assistant
“Here is the TradeOS import format: tradeos.mcmanussolutions.co.uk/docs/import. Here is an export from my current system. Convert it into the four files TradeOS wants, in the order listed, and tell me anything you had to guess.”
Four rules
- Order matters. Customers, then products, then order headers, then order lines. Each step matches against what the previous one created.
- Column names must match exactly. Lower case, underscores, no spaces. Surrounding whitespace is trimmed; anything else is not recognised and the column is ignored.
- Extra columns are ignored, so you can leave the rest of an export in place rather than stripping it out.
- Nothing saves until you say so. Every import previews first, telling you what would be created and what would be skipped and why. Fix and re-upload as many times as you need.
Customers
Import firstYour customer book. Orders match to these by email, so bring them in before orders.
| Column | Notes |
|---|---|
namerequired | Person or business name. The only required column. |
email | Used to match orders to customers on a later import. Worth including. |
phone | Free text — any format. |
company_name | For trade accounts. |
account_type | retail or trade. Defaults to retail. |
credit_limit | Number, no currency symbol. Trade accounts only. |
notes | Anything else worth keeping. |
name,email,phone,company_name,account_type,credit_limit,notes Mrs T. Reynolds,treynolds@example.com,07700 900142,,retail,,Prefers morning delivery Davidson & Sons,orders@davidson.co.uk,028 9145 6712,Davidson & Sons Ltd,trade,5000,Account since 2019
Products
Import secondYour catalogue. SKUs must be here before order lines, which match products by SKU.
| Column | Notes |
|---|---|
namerequired | Product name as customers see it. |
sku | Your own code. Strongly recommended — order lines match on it. |
unit_price | Number, no currency symbol. e.g. 1299.00 |
category | Free text. Used for grouping on the shop and in reports. |
description | Shown on the storefront. |
status | active or archived. Defaults to active. |
name,sku,unit_price,category,description,status Lagan 3-Seater Sofa,LSF-003,1299.00,Sofas,Solid oak frame with feather cushions,active Mourne Dining Table,MRN-DT-L,749.00,Dining,Six-seat solid oak table,active
Orders — headers
Import thirdOne row per order. Creates or matches the customer by email, so import customers first.
| Column | Notes |
|---|---|
order_numberrequired | Your existing reference. Must be unique. |
customer_email | Matches an existing customer. Without it a new one is created. |
customer_name | Used when creating a customer this order does not match. |
customer_phone | As above. |
company_name | As above. |
status | quote, confirmed, dispatched, delivered, complete or cancelled. Defaults to quote. |
delivery_type | delivery or collection. Defaults to delivery. |
delivery_date | YYYY-MM-DD. |
promised_date | YYYY-MM-DD. What the customer was told. |
delivery_address_line | Street address. |
delivery_address_city | — |
delivery_address_county | — |
delivery_address_postcode | — |
notes | Anything the office should see on the order. |
order_number,customer_email,customer_name,status,delivery_type,promised_date,delivery_address_line,delivery_address_city,delivery_address_postcode,notes SO-1042,treynolds@example.com,Mrs T. Reynolds,confirmed,delivery,2026-10-02,14 Malone Road,Belfast,BT9 5BN,Ring bell twice
Orders — line items
Import lastOne row per line. Matches orders by order_number and products by SKU, so both must already be in.
| Column | Notes |
|---|---|
order_numberrequired | Must match an order imported in the previous step. |
product_skurequired | Must match a product already in the catalogue. |
quantity | Number. Defaults to 1. |
unit_price | Number. Defaults to the product price if left blank. |
notes | Per-line note, e.g. a fabric choice. |
order_number,product_sku,quantity,unit_price,notes SO-1042,LSF-003,1,1299.00,Oatmeal fabric SO-1042,MRN-DT-L,1,749.00,
Getting the data out first
Most systems will export CSV from a reports or admin screen. If yours only exports Excel, save it as CSV — one sheet per file. If it exports nothing useful, tell us what you are running and we will look at it with you.
Also see the API documentation if you would rather move data in and out programmatically, and the error code reference if an import tells you something went wrong.