Importing your clients and products from a file

Bulk-import your clients, suppliers, products, invoices, quotes or purchase orders from a CSV file: template to download, column mapping, duplicates, limits and errors.

9 min readUpdated on 10 October 2026Intermediate
Browse help

What is it for?

Do you already have a list of clients or a catalogue in a spreadsheet, or in another invoicing tool? There is no need to retype everything: Billora imports your data from a CSV file and guides you in matching your columns to Billora's fields.

Example. Soumia runs a school supplies shop in Agadir. Her 180 clients are in an Excel file. She saves it as CSV, imports it in five minutes, and can immediately start sending them invoices.

What you can import

Clients, suppliers, products, invoices, quotes and purchase orders. Import is open to the owner and administrators.

1. Prepare your file

The simplest way is to start from the template provided:

  1. Open Paramètres → Import / Export (Settings → Import / Export) and scroll down to Import des données (Data import). Six cards are shown: Clients, Fournisseurs (Suppliers), Produits (Products), Factures (Invoices), Devis (Quotes), Bons de commande (Purchase orders).
  2. On the card you need, click Télécharger le modèle CSV (Download the CSV template). The file contains the right headers and some example rows.
  3. Open it in Excel or another spreadsheet, delete the example rows and fill in your own rows.
  4. Save in CSV format (preferably "CSV UTF-8", to keep accented characters).

Already have your own file (Invoice Ninja, QuickBooks, Wave, Excel…)? Import it as it is: you will match the columns in step 2.

File limits

  • CSV format (or .txt text): an Excel .xlsx file must first be saved as CSV.
  • Maximum size 5 MB and 500 rows per import. Beyond that, only the first 500 rows are taken: split your file into several.
  • The separator (comma, semicolon or tab) is detected automatically. The first row must contain the column names.
  • Headers in French or English are recognised (nom, name, email, telephone, prix, price…), with or without accents.

Client columns (examples)

nomtypeemailtelephoneiceadresseville
Atlas SARLcompanycontact@atlas.ma0522-123456001234567000001123 Rue Hassan IICasablanca

The name (nom) is the only mandatory column. The type column accepts company (business) or individual (private person); any other value is read as "company". An ICE must have 15 digits (spaces and hyphens are ignored), otherwise the row is flagged as an error.

Product columns (examples)

nomtypeprix_unitairetvaunitecategorie
Consultationservice50020forfaitServices

The name is mandatory. The type is product or service (default: product). An empty price is read as 0; an empty VAT (TVA) is read as 20%. An unknown category is created automatically. The template also offers columns for code, barcode, purchase price, stock, stock tracking and alert threshold.

Good to know

For invoices, quotes and purchase orders, a single document takes up several rows in the file: all rows carrying the same numero are grouped into a single document. Your original numbers are kept. If the client (or supplier) does not exist yet, it is looked up by email and then by name, or created. Where a line's VAT column is empty, Billora applies the default rate from Paramètres → TVA & Fiscalité (0% for a sale if you are VAT-exempt); an unrecognised VAT value receives the same rate, with a warning in the result.

2. Import the file, step by step

  1. On the card of your choice, click Importer un fichier (Import a file). The "Importer des clients" (Import clients) window (or products, etc.) opens with three steps: Fichier (File), Correspondance (Mapping), Import.
  2. File. Drag your CSV into the zone, or click to choose it. Billora announces the number of rows detected ("180 lignes détectées") and lists the columns recognised automatically. Click Suivant (Next).
  3. Mapping. A "Colonne CSV | Exemples | Champ Billora" (CSV column | Examples | Billora field) table shows, for each column in your file, the field chosen. Billora guesses most of them: correct them with the drop-down list, or choose — Ignorer — (Ignore) for an unneeded column. The Nom * (Name) field must be matched, otherwise the button stays greyed out. Click Aperçu (Preview).
  4. Import. The preview shows the first 5 rows as they will be imported (for invoices, quotes and purchase orders: "N lignes CSV → N documents détectés", i.e. N CSV rows → N documents detected). Check, then click Importer N lignes (Import N rows).
  5. The result is displayed: the number of items imported, those already existing (skipped) and the errors, with the detail "Ligne N : …" (Row N: …). Click Terminer (Finish): a green banner confirms "N clients importés avec succès" (N clients imported successfully).
Import cannot be undone

The box in step 3 reminds you of this: imported items cannot be deleted in bulk. Check the mapping and the preview before launching. If in doubt, test first with a small file of 5 rows.

3. Duplicates are skipped

Billora does not create the same record twice. For each row, it compares with what already exists:

  • Clients and suppliers: by email, then by ICE, then by name.
  • Products: by code / SKU (if present), then by name.

A duplicate row is not imported; it appears in "Lignes ignorées (déjà existantes)" (Skipped rows (already existing)) with the reason ("Email déjà utilisé par un client existant", "ICE déjà existant", "Nom déjà existant"). It is not an error: it is the protection doing its job.

4. Your subscription limits

Import respects your subscription limits. If you reach the limit during an import (for example the maximum number of clients), the following rows are rejected with the message "Limite de N clients atteinte" (Limit of N clients reached). Rows already imported are kept. See Understanding plans and limits.

5. Fixing errors

MessageWhat to do?
« Seuls les fichiers CSV sont acceptés. » (Only CSV files are accepted.)Save your file in CSV format.
« Le fichier ne doit pas dépasser 5 Mo. » (The file must not exceed 5 MB.)Split the file into several.
« Le fichier ne contient pas assez de données. » (The file does not contain enough data.)You need a header row and at least one data row.
« Nom requis » (Name required)The name cell is empty on this row.
« L'ICE doit contenir exactement 15 chiffres » (The ICE must contain exactly 15 digits)Correct the ICE (see Is the ICE mandatory?).
« Email invalide » or « Site web invalide » (Invalid email / Invalid website)Correct the address; leave it empty if you do not have it.
« Veuillez entrer un prix valide (ex: 150) » (Please enter a valid price)A price must be a number (a decimal comma is accepted).

After correcting, re-import only the rows in error: the others would simply be skipped as duplicates.

Frequently asked questions

Can I import an Excel file directly?

No: save it first in CSV format (File → Save as → CSV UTF-8).

My accented characters are displayed incorrectly after the import.

Save the file again as "CSV UTF-8" and start over; items already imported will be skipped as duplicates, so delete them by hand if necessary.

I have more than 500 rows.

Split them into several files of 500 rows maximum and import them one after the other.

Are my old invoice numbers kept?

Yes for the import of invoices, quotes and purchase orders: the number in your file is kept. Remember to then set up your numbering for what comes next (Paramètres → Numérotation, i.e. Settings → Numbering).

Why is the Preview button greyed out?

No column is matched to the mandatory Nom * field. Choose it in the list for the column that contains the names.

Next steps

Was this article helpful?