Skip to content
DevMarket
Odoo ModulesWordPress PluginsWordPress ThemesShopify ThemesApp TemplatesScripts & UtilitiesBlogSell on DevMarket

Import Order Lines from Excel / CSV for Odoo 19 documentation

A guide to importing order lines: the file and its headers, the check, the options, sales and purchase orders, and access rights.

Documents version 1.0.0Updated Oct 23, 2026

Start here

In plain words: A customer sends a spreadsheet with 150 items, and you type them in one by one. Import Order Lines from Excel / CSV adds the lines of a quotation, a sales order or a purchase order from a file: the products by reference, barcode or name, the quantity, and the price, discount, description and unit when the file has them. Every row is checked before anything is added, so you see the errors first.
The button on the order, the check of the file, and the lines added.
The button on the order, the check of the file, and the lines added.
Tip: Unlike the standard Odoo import, you do not map columns or create the order with the file: you open the order you have and add lines to it, with the prices and taxes of Odoo.

What you get

FeatureWhat it does
Excel and CSVFiles .xlsx, .xls and .csv (comma, semicolon or tab; UTF-8).
Sales and purchaseA button on quotations and on purchase orders in draft.
Products found byInternal reference, barcode or name; on a purchase order also the vendor's product code.
Headers recognisedIn English and Arabic, in any column order: Internal Reference, Barcode, Product, Quantity, Unit Price, Discount, Description, Unit.
The price of OdooIf the file has no price, the line gets the price of the price list (sales) or of the vendor (purchases).
A check firstEach row is Ready, Warning or Error, with the reason: product not found or ambiguous, bad quantity, price, discount or unit.
Your choiceImport the valid rows only, or nothing if a row has an error. A product already on the order: a new line, more quantity, or skip.
A templateDownload an Excel file with the right headers.
The chatterThe import is noted on the order: how many lines, from which file.
ArabicEverything is translated and works right to left.

Requirements

ItemDetails
Odoo19.0 (Community or Enterprise)
Apps neededSales (sale) and Purchase (purchase)
LicenseOPL-1 (Odoo Proprietary License v1.0)

Install

  1. Unzip the package. Inside is taqnix_import_order_lines.zip; unzip it to get the folder taqnix_import_order_lines.
  2. Copy the folder into one of the addons_path folders of your Odoo server and restart Odoo.
  3. Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
  4. Remove the “Apps” filter, search Import Order Lines from Excel / CSV and press Install.
# or from the command line
./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_import_order_lines --stop-after-init

Prepare the file

In plain words: The first row holds the headers; each following row is a line. Only the product and the quantity are needed.
ColumnAccepted headersContent
ProductInternal Reference, Reference, SKU, Code / Barcode, EAN / Product, ItemThe reference, the barcode or the name of the product. Without case, spaces around are ignored.
QuantityQuantity, QtyA number above zero. 1,250.50 and 3,5 are understood.
PriceUnit Price, PriceOptional. Empty: the price of Odoo.
DiscountDiscount, DiscOptional, from 0 to 100.
DescriptionDescription, Label, NameOptional. Replaces the description of the product on the line.
UnitUnit, UoMOptional, the name of a unit of the same family as the product's (Units, Dozens...).
Tip: Click Download the template in the wizard for a ready file. Arabic headers (الكمية, الباركود, السعر...) work as well.

Import the lines

In plain words: Open a quotation (or a draft purchase order) and click Import lines. Choose the file, then click Check the file.
The wizard with the file chosen.
The wizard with the file chosen.
OptionMeaning
If the product is already on the orderAdd a new line, add to the quantity of the existing line, or skip the row.
If a row has an errorImport the valid rows and skip the others, or import nothing.
The check: 5 rows ready, 3 with an error and the reason of each.
The check: 5 rows ready, 3 with an error and the reason of each.
In plain words: When the list is right, click Import the lines. Correct the file and Check again if you prefer.
The lines on the quotation, with the prices of Odoo and those of the file, and the note in the chatter.
The lines on the quotation, with the prices of Odoo and those of the file, and the note in the chatter.

How a row is checked

ResultWhen
ReadyThe product is found, the quantity, price, discount and unit are valid.
WarningThe product is found but cannot be sold (or purchased): the line is still imported.
ErrorNo product matches; several products match (use the reference or the barcode); the quantity is zero, negative or not a number; the price or the discount is not valid; the unit does not fit the product.
In plain words: Row numbers are those of the file, so you find the row in your spreadsheet.

Who can do what

WhoCan
Salespeople and purchase usersImport lines into the orders they can edit.
Other usersThe button is not on the order, and adding lines is refused by Odoo's access rights.

Arabic and right to left

The check in an Arabic interface.
The check in an Arabic interface.

Limits

LimitDetail
Draft orders onlyQuotations and draft purchase orders: not confirmed orders.
Up to 5000 rowsIn one file.
First sheetOnly the first sheet of an Excel file is read.
Lines onlyThe order itself (customer, dates) is not created from the file.
No combosCombo products are not imported.

For developers

In plain words: Skip this chapter if you only use the module.
wizard = env['taqnix.order.import'].create({'res_model': 'sale.order', 'res_id': order.id, 'file': base64_content, 'filename': 'lines.xlsx', 'duplicates': 'add'})
wizard.action_check()
wizard.line_ids.mapped('message')
wizard.action_import()

Troubleshooting

ProblemWhat to do
The file needs a column that tells the productName the column Internal Reference, Barcode or Product on the first row.
No product matchesCheck the reference; spaces and capitals do not matter; a purchase order also accepts the vendor's code.
Several products are named...Use the reference or the barcode instead of the name.
The unit does not fit this productUse a unit of the same family as the one of the product, and an active one.
The Import lines button is missingIt shows on quotations and draft purchase orders only.

Updating and removing

Replace the folder with the new version, restart Odoo and run -u taqnix_import_order_lines. Nothing is stored: the lines you imported stay on your orders.

Support

Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.