Importing Data from Excel: Preparing the File, Mapping Columns, and Resolving Import Errors
The system lets you enter large amounts of data at once from an Excel or CSV file, instead of entering it manually one record at a time: for example, a list of clients, products, invoices or journal entries. This guide explains which screens support importing, how to prepare the file, how to map the file’s columns to the system’s fields, how to update existing records, and how to fix common import errors.
🛈
Note: The permission you need depends on what you import: importing clients needs the Add New Client permission, importing invoices needs the permission to add invoices, and importing employees needs the permissions to add and edit employees. You set them in Roles.
Contents
What can you import?
| Data | Where to start the import | Processing |
|---|---|---|
| Clients | Import Clients | In the background, with a tracking page |
| Suppliers | Import Suppliers | Immediate |
| Products & Services | Import Products | In the background, with a tracking page |
| Expenses and Incomes | Import Expenses and Import Incomes | Immediate |
| Sales invoices | Import Invoices | In the background, with a tracking page |
| Journal entries | Import Journal | In the background, with a tracking page |
| Assets | Import Assets | In the background, with a tracking page |
| Employees | Import Employees | Immediate |
| Contracts and Payslips | From the Contracts or Payslip list | Immediate |
| Attendance logs, Attendance Days and Temporary Shifts | Import attendance logs, Attendance Days and Temporary Shifts | Immediate |
| Price list items | From the price list’s page in Price Lists | Immediate |
| Stocktaking items | From the stocktaking’s page in Manage Stocktaking | Immediate |
| Bank statement | From the bank account’s page in Treasuries & Bank Accounts | Immediate |
| Product barcodes | Import Product Barcodes | Immediate |
| Employee assets | Import Employee Assets | Immediate |
| Time tracking | Import Time-sheet | Immediate |
There is currently no direct import for purchase invoices or the chart of accounts. Opening stock balances are imported with the products from the quantity column, or through Manage Stocktaking.
Preparing the import file
- Accepted formats: CSV, XLS and XLSX. In Excel files, only the first sheet is read.
- Start from Download Sample on the import page when it’s available, and fill in your data using the same columns.
- Make the first row the column names and each row after it one record. Don’t leave empty rows or columns in the middle.
- Write dates in the same date format as your account, or as 2026-01-31, with a four-digit year.
- Write numbers without currency symbols. You can use a comma as the thousands separator, as in 10,444.55.
- Write values linked to the system (such as the name of a treasury, account, cost center or warehouse) exactly as they are saved in the system.
- If the file is CSV, save it with UTF-8 encoding so Arabic characters appear correctly.
🛈
Important: When importing invoices and journal entries, all rows with the same invoice number or journal number count as one document. The header data (such as the date, client, currency and discount) must match in all of its rows, or the row is rejected.
Import steps
- Open the import page from the table above, or from the Import button in the list you need.
- Choose the file in File to Import or CSV / Excel File.
- If the file is CSV, choose the Delimiter that separates the columns: Comma, Semicolon or Tab. This field doesn’t appear for Excel files.
- Leave Import First Row unselected if the first row holds the column titles.
- When importing invoices and journal entries, choose the status (draft or issued), and choose whether numbers are generated automatically with Auto-generate Invoice Numbers or Auto-generate Journal Numbers.
- Click Next Step, then map the columns to the fields as described in Mapping columns to fields.
- Click Import or Next Step to start the import.
Mapping columns to fields
In the Fields Mapping step, a two-column table appears: the system field, and the matching column in your file. The system maps columns automatically when their name is similar to the field name, and you can change any mapping from the Select Column list.
- Fields marked with * are required and must be mapped to a column in the file.
- Fields with the link icon are unique fields that don’t accept duplicates, such as the client number or the product code.
- Leave columns you don’t need unmapped, and they won’t be imported.
Updating existing records instead of creating new ones
To change the data of records that already exist (such as updating product prices), turn on Update an existing record with new data (on some screens it names the record, for example “Update an existing client with new data”), then choose the field used to match each record:
| Data | Fields you can match by |
|---|---|
| Clients | Email, client number, phone, mobile |
| Suppliers | Email, supplier number, business name |
| Products | Name, product code, barcode |
| Other screens | The unique fields or the ID, as shown in the selection list |
Rows that match an existing record are updated, and rows with no match are created as new records. The update option isn’t available when importing assets.
🛈
Note: The newer screens have an Ignore errors while importing option. If you turn it on, the system imports the valid rows and skips the rows with errors. If you leave it off, the whole import stops at the first row with an error and no rows are saved.
Import result and tracking
- When an immediate import finishes, a message shows the number of records imported successfully, updated successfully and failed, with a list of errors and the line number of each one.
- Imports of clients, products, invoices, journal entries and assets run in the background. You move to a tracking page that shows the progress and the result of each row, then Importing was completed successfully when it’s done.
- If a background import stops for more than three minutes, a Resume button appears so you can continue from where it stopped.
- There’s no downloadable error file, so copy the line numbers from the result page, fix them in your file, then import only the rows that failed.
Limits
| Import | Limit |
|---|---|
| Sales invoices and Journal entries | A maximum of 10,000 rows per file, and a maximum of 500 lines per invoice or journal entry. |
| Payslips | A maximum of 5,000 rows. |
| Clients and invoices | You can’t exceed the number of clients or invoices allowed in your plan. |
Import errors and solutions
| Message shown | Cause | Solution |
|---|---|---|
| The uploaded file could not be processed. Please ensure it is a valid XLS, XLSX, or CSV file and try again. | The file is damaged or isn’t in a supported format. | Save the file again as XLSX or CSV. |
| Please Select Delimiter | You uploaded a CSV file without choosing the delimiter. | Choose the delimiter used in the file. |
| Sorry, it is not allowed to import one column file, make sure you have selected a file with the correct format | The system read the file as a single column, usually because the wrong delimiter was chosen. | Choose the correct delimiter, or save the file as XLSX. |
| CSV columns count is not the same through all file rows | Some rows have extra or missing columns. | Check the rows and delete the extra cells. |
| Please, enter the value for all required inputs marked with “*” | You didn’t map a required field to a column. | Map all required fields. |
| Invalid Data, Missing required field or does not exist (field name) at row #(line number) | A required cell is empty in this line. | Fill in the cell, then import the line again. |
| Invalid Data, duplicate (field name) with value (value) at row #(line number) | A duplicate value in a field that doesn’t accept duplicates. | Change the value, or turn on updating existing data. |
| Invalid Data, Wrong Relation (value) at row #(line number) | The value doesn’t exist in the system, such as a client, product or account. | Write the name exactly as it’s saved in the system, or add it first. |
| Invalid Data, Data must be in the correct date format in (field name) field at row #(line number) | The date format is different from your account’s format. | Write the date in your account’s format, or as 2026-01-31. |
| Invalid Data, Data must be a number (field name) at row #(line number) | The cell has text instead of a number, or a negative number in a field that doesn’t accept one. | Write a valid number without symbols. |
| Invalid Data, encoding issue or corrupted characters in field (field name) at row #(line number) | Question marks or symbols appeared instead of Arabic characters. | Save the CSV file with UTF-8 encoding, or use the XLSX format. |
| The maximum number of records in the sheet is 10000 | The file is larger than the limit for invoices or journal entries. | Split the file into several files. |
| The invoice (field name) should be the same for all invoice lines that share the same invoice code at row #(line number) | The invoice header data differs between its rows. | Make the date, client, currency and discount the same in all of the invoice’s rows. |
| You should add at least one price list to import | There’s no price list to import items into. | Create a price list in Price Lists first. |
FAQ
Arabic characters appeared as question marks after importing. How do I fix it?
Save the file as XLSX, or save the CSV file with UTF-8 encoding, then import again.
Can I update product prices by importing?
Yes. Import a file with the product code and the new price, turn on Update an existing record with new data, and choose to match by product code.
The client import stopped halfway. Do I start over?
No. Open the import tracking page and click Resume to continue from where it stopped.
Why was the first row of the file skipped?
Because Import First Row isn’t turned on, so the system treats the first row as column titles. Turn it on if your file has no titles.
Can I import purchase invoices or the chart of accounts?
There is currently no direct import for them.