Skip to content

Import 500 customers from a spreadsheet

Suppose Nile Fresh takes over a smaller distributor and receives its 500 shops as a spreadsheet, to load as customers. This example checks the file, fixes what Slflo finds, and imports it in one go. Who: administrator · Where in the cycle: Set up.

  • Add and change customers (CUSTOMER_MANAGE) shows the Customers tab on Setup › Import.
  • The price lists the file names exist (here RETAIL).
  • The file is saved as CSV UTF-8, comma-separated, with a header row. The columns are listed on the Import screen, with what to write in each.

The old system’s export, reduced to the columns Slflo reads. It has a header and 500 rows, so the rows are spreadsheet lines 2 to 501. Four of them are Nile Fresh’s own shops (CUST-00001 to CUST-00004) with new phone numbers; the other 496 are new and keep the old system’s codes.

code,name,phone,creditlimit,pricelist,channel,paymentterms
CUST-00001,Nile Market,0225551010,5000,RETAIL,Retail,0
AL-0001,Al Amal Market,0225551111,2000,RETAIL,Retail,14
AL-0002,Corner Stop Shubra,0225551112,0,RETAIL,Retail,0
…

There are no route columns: the new shops are placed on routes afterwards. A route named in a file must already exist, and import can’t create one.

1 · Check the file — administrator, console

Section titled “1 · Check the file — administrator, console”

Open Setup › Import, the Customers tab, choose the file and press Check file. Nothing is saved. The answer is Not imported, with three problems:

Line Problem Detail
17 There’s no price list with that code. No price list ‘RETAIL2’
204 A number can’t be read. ‘5,000 EGP’ in column ‘creditlimit’ is not a number
388 This line repeats the code of an earlier line in the file. Same key as line 311
Import after checking customers-with-mistakes.csv: Not imported, 4 rows, 1 would be created, 3 problems and nothing written; line 2 names a price list WHOLESALE2 that doesn't exist, line 3 has 5000 EGP as the credit limit, and line 5 repeats line 4's code.
  1. Line
  2. Problem
  3. Detail
Open the full-size picture (new tab)

Every row is checked, so all three come at once. One bad row stops the whole file: none of the other 497 rows is saved either.

2 · Fix the three rows — in the spreadsheet

Section titled “2 · Fix the three rows — in the spreadsheet”
  • Line 17: RETAIL2 is a typo. Change it to RETAIL.
  • Line 204: a number column takes digits only. 5000 or 5,000 both work (commas are ignored); 5,000 EGP doesn’t.
  • Line 388: its code AL-0310 is already on line 311. Line 388 is a different shop typed with the wrong code; give it its own, AL-0387. Deleting the line would drop the shop.

Save the file again as CSV UTF-8.

Choose the saved file and press Check file. The answer is Ready to import: Rows 500, Would create 496, Would update 4, Unchanged 0, and “Nothing wrong with this file. Press Import to apply it.” What each row does lists the first 200 rows; each new shop reads Not on a route.

Import after checking nile-fresh-customers.csv: 4 rows, 4 problems, nothing imported, and the first problem says there is no price list with that code.
Open the full-size picture (new tab)

Press Import. Imported: “Done. Devices pick this up on their next sync.” The 496 new customers keep their AL- codes, with the credit limit, price list, channel and terms from the file and a Main branch each. The four existing shops have their new phone numbers. A blank cell keeps what was stored, so importing the same file twice changes nothing.

Nothing moves: no stock, no money. A shop’s balance starts at 0.00.

  • Reps see a new shop only once it is on their route. Put them on routes (Change a route), or import again with route, visitdays and visitevery columns once the routes exist.
  • Customers › Outlets shows the 496 under Not on a route until then.
  • Credit: a row with no creditlimit is cash only (credit limit 0). Write no limit for none.
  • Audit: one line for the file — “Imported 500 customer rows (496 new, 4 updated, 0 unchanged)”.
What you seeWhat to do
There's no price list with that code. Check the code under Catalogue, Price lists.UNKNOWN_PRICE_LISTUse the price list's code as on Catalogue › Price lists.
A number can't be read. Write digits only, for example 5000.INVALID_NUMBERDigits only, commas allowed: 5000 or 5,000.
This line repeats the code of an earlier line in the file. Keep one of them.DUPLICATE_IN_FILETwo lines share a code. Give each shop its own code, or keep one line if it's the same shop twice.
A required column is empty on this line. Fill it in and check the file again.MISSINGA required column is empty on that line — for customers, the name.
There's no route with that code. Create the route under Routes first, then import again.UNKNOWN_ROUTECreate the route on Routes first (a draft is enough), then check again.
This file is split by semicolons…Save it again as CSV UTF-8, comma delimited.
A removed customer came backA code that belonged to a removed customer brings it back, with its history. Use a new code for a new shop.