Importing vehicles from CSV

Bulk-add vehicles using a CSV file, including the template and common failure modes.

Updated Apr 18, 2026

If you have many vehicles to add at once, or you're migrating from an existing system, CSV import is faster than adding them one by one.

Before you start

  • You need Vehicles edit permission.
  • Have your vehicle data in a spreadsheet, or export it from your existing system.
  • Download the template first so your columns match what the importer expects.

To import

  1. From Vehicles, click Bulk CSV
  2. Choose Vehicles, then Import new
  3. Click Download template to get a CSV with the right headers
  4. Fill the template with your vehicle rows and save as CSV
  5. Drag the file onto the upload area, or click to browse
  6. Review the parsed preview and click Import

What the importer accepts

  • CSV format, one vehicle per row
  • Headers are case-insensitive and tolerate spaces, so Stock No and stock_no both work
  • Numbers can include commas, so 10,000 is read as 10000
  • Source type must be one of: auction, agent, dealer, private, trade
  • Supplier is matched to your existing non-archived suppliers by name, case-insensitive

Column reference

ColumnRequiredNotes
vinYesUnique per organisation. If you don't know the VIN yet, type unknown (any casing). Rows with unknown as the VIN can repeat and won't be flagged as duplicates. Update the real VIN later from the vehicle's page. When you use unknown as the VIN, fill in stock_no on that row. The stock number becomes the vehicle's identifier so you can find it later and add the real VIN.
makeYesNew values are added to Settings › Vehicle data after import.
modelYesNew values are added to Settings › Vehicle data after import.
yearYesFour-digit year.
stock_noNoIgnored when auto stock numbering is on in Settings. If auto stock numbering is on, you can leave this blank for rows with a real VIN. Rows with VIN unknown always need a stock number.
reg_noNo
variantNo
colourNo
transmissionNo
fuel_typeNo
engine_sizeNoNumeric displacement in cc (e.g. 1800).
mileageNoInteger. Use mileage_type for the unit.
mileage_typeNokm or miles. Defaults to your organisation default if blank.
body_styleNo
source_typeNoauction, agent, dealer, private, or trade. Defaults to auction.
supplierNoMust match an existing supplier name exactly (case ignored). No new suppliers are created from CSV.
purchase_dateNoYYYY-MM-DD. To record what you paid for the vehicle, use the Costs section on each vehicle after import.
origin_countryNoISO 3166-1 alpha-2, e.g. JP, US.
drive_sideNoLHD or RHD.
main_photoNoOne URL. The image is downloaded and attached to the vehicle.
additional_photosNoComma-separated URLs. Maximum 30 photos per vehicle including the main photo.

Common failure modes

  • Supplier not found: the importer won't invent suppliers for you. Add the supplier under Suppliers first, or correct the spelling in your CSV.
  • Unknown source type: must be one of the five listed above. Check for typos.
  • Duplicate stock number: if a row's stock number matches an existing vehicle, the row is skipped (not overwritten).
  • Missing required fields: rows without a stock number, make, or model are skipped. The preview tells you which rows were skipped and why.

Downloads

The import dialog offers two downloads:

  • Download template: a blank CSV with the correct headers, ready to fill in.
  • Download fleet as CSV: exports your current fleet. Download fleet as CSV is the easiest way to start an update: it gives you a ready-to-edit spreadsheet with stock numbers already filled in.

After import

Imported vehicles appear in the Vehicles list with the Purchased stage. Open each one to fill in anything the template didn't cover: shipment, costs, documents, photos.

Updating existing vehicles

You can edit multiple vehicles at once with a CSV.

How it works

  1. Click Download fleet as CSV in the import dialog. This gives you a spreadsheet of your current fleet with stock numbers already filled in.
  2. Open it in your spreadsheet tool and change the fields you want to update. Leave any cell blank to keep that field unchanged.
  3. Click Bulk CSV, choose Vehicles, then Update existing, and upload your edited file.
  4. The Test step shows the changes for each row before you commit. Click Update vehicles when the preview looks right.

Matching by stock number

Every row must include a stock_no. The system finds the matching vehicle by that stock number. If no vehicle has that stock number, the row is flagged as an error.

What you can update

Most vehicle fields: VIN, registration number, make, model, year, variant, colour, transmission, fuel type, engine size, mileage, body style, source type, supplier, purchase date, origin country, drive side. Plus photos (see below).

What you can't update

  • stock_no itself (it's the matching key; changing it via CSV would be confusing).
  • Purchase amounts. Use the Costs section on each vehicle.
  • Stage, customer assignment, individual cost rows. These have their own flows.

Photos in Update mode

If you fill in main_photo with a URL, the existing hero photo is replaced with that image. If you fill in additional_photos with a list of URLs (comma-separated), the existing gallery is replaced with those photos. Leave the cells blank to keep the existing photos as they are.

Photo cells in the downloaded export are always blank, because the existing photos live in the system's storage and aren't accessible as public URLs you could re-upload. Fill those cells only when you want to replace.

You can't keep existing photos and add new ones via CSV. You can't reorder photos via CSV. For those, use the gallery on the vehicle's page.

What happens if a row has no changes

Rows where every cell matches the current state of the vehicle show as "no changes" in the preview and are skipped during the update.

See also

Was this helpful?

Related articles