Excel to Odoo Migration: Data Prep, Import Templates and Cutover Plan
Excel to Odoo migration guide: clean your spreadsheets, use Odoo import templates and External IDs, load opening balances and cut over without disruption.
Most guides to Excel to Odoo stop at "export to CSV and import". The real work is deciding what to move, cleaning it, and loading it in an order Odoo accepts. Our Odoo migration services handle exactly that step for teams leaving spreadsheets behind.
This guide is for owners, finance leads and operations managers who have already decided to replace Excel with ERP software. If you are still deciding, start with our readiness checklist on the signs your business needs an ERP, then come back here.
When do spreadsheets stop working for a growing business?
Spreadsheets stop working when more than one team depends on the same numbers and nobody trusts which file is current. The tipping point is usually coordination, not file size.
Excel is excellent for one person modelling one problem. It struggles when sales, purchasing, stores and accounts all edit their own copies. Typical symptoms we see before an Excel to Odoo project:
- Version drift: "Stock_FINAL_v3.xlsx" and "Stock_FINAL_v3_new.xlsx" both exist, and they disagree.
- Re-keying: a quote is typed in Excel, then typed again as an invoice, then again in the stock sheet.
- No traceability: you cannot see which purchase order a delivery came from, or who changed a price.
- Slow month-end: finance waits for every department to send its sheet before closing the books.
- Formula risk: one broken cell reference changes a margin, and nobody notices until a customer does.
If three or more sound familiar, the question is how to move without stopping the business.
Odoo vs Excel: what actually changes when you move?

The real Odoo vs Excel difference is that Odoo stores each record once and every app reads it, while Excel stores copies. The table shows what that means day to day.
| Area | Excel today | Odoo after migration |
|---|---|---|
| Customer and product data | Copied into many sheets | One record used by sales, stock and accounting |
| Stock levels | Updated by hand after each delivery | Moved automatically by receipts and deliveries |
| Pricing | Formulas in a separate price sheet | Pricelists applied on every quote and order |
| Approvals | Email or verbal sign-off | Rules and validation steps on the document |
| Audit trail | File history, if anyone saved it | Change log on each record |
| Month-end | Collect sheets, then reconcile | Reports read live entries |
You do not lose spreadsheet-style analysis. Odoo Spreadsheet, part of the Documents app, lets you build pivots and charts linked to live Odoo data. See what changed in our Odoo 20 spreadsheet release notes.
What data should you move from Excel to Odoo?
Move the data you need to trade on day one, and archive the rest. Every extra year of history adds cleaning, mapping and testing time.
| Data | Move into Odoo? | How we usually bring it in |
|---|---|---|
| Customers and vendors | Yes, active ones | Contacts import with External IDs |
| Products and categories | Yes | Categories first, then products with costs and prices |
| Price lists | Yes, current prices only | Pricelist import after products |
| Open quotes, sales and purchase orders | Yes | Order import with one row per line |
| Open invoices and bills | Yes | Imported against a clearing account |
| Stock on hand | Yes, as a fresh count | Inventory adjustment at cutover |
| Trial balance | Yes, at the cutover date | One opening journal entry |
| Closed invoices and old years | Usually no | Keep as a read-only Excel or PDF archive |
If you truly need years of sales lines for reporting, plan them as a separate phase after go-live.
How do you clean spreadsheet data before an Odoo import?
Clean the data in Excel before it touches Odoo, because fixing duplicates after import is far slower. Give each sheet an owner who signs off that it is correct.
- Remove duplicates: merge "ABC Traders", "A.B.C. Traders" and "ABC Trading" into one customer before import.
- Give every row a unique code: customer codes, product internal references and vendor codes become your External IDs.
- Split mixed columns: put street, city, postcode and country in separate columns, and units of measure in their own column.
- Fix dates and numbers: store dates as real Excel date cells and remove currency symbols and text from number columns.
- Standardize lists: product categories, payment terms, taxes and units must match the values set up in Odoo.
- Retire dead records: archive customers with no orders in years and products you no longer sell.
- Freeze a snapshot: date-stamp the cleaned files so everyone knows which version was loaded.
Odoo guesses field types from the first ten lines of a file, so a clean, consistent top of the sheet also makes column mapping easier.
How do Odoo import templates and External IDs work?
Odoo gives you an import template for common records, and External IDs let you link and update records without creating duplicates. These two features carry most of a spreadsheet to ERP migration.
According to Odoo's guide to importing data from Excel or CSV, any business object can be imported from .xlsx or .csv, including contacts, products, bank statements, journal entries and orders. Common objects offer a downloadable Odoo import template.
The import screen maps each file column to an Odoo field. You click Test to check the file, then Import. The Test step is your best friend: run it on every file, every time.
The External ID is a unique key per row. You can reuse the codes from your spreadsheets, and Odoo advises prefixing them by table, such as `customer_101` and `product_101`, because duplicate External IDs cause conflicts.
Why External IDs matter for the second import
If a file contains an External ID column, Odoo updates records already imported instead of creating new ones. That means you can correct a sheet and import it again safely during testing.
Users who skip this pay later. One Odoo user found that every product re-import created duplicate vendor lines on the product. Another asked how to import purchase orders from Excel without duplicate vendors or products; the replies pointed to External IDs and internal references.
Small rules that break imports
- Empty cells: a blank cell sets the field to empty, while a missing column lets Odoo apply its default value.
- Tags: several tags go in one cell, separated by commas without spaces.
- Order lines: each order line needs its own row; extra lines leave the order columns blank.
- Big files: large imports can time out, so Odoo recommends smaller batches.
- CSV encoding: Excel can change separators and encoding on save, so check the formatting options.
In what order should you import Excel data into Odoo?
Import records that others depend on first, so every later file can find what it links to. Odoo states that related records must exist before the records that point to them.
- Configuration: company details, fiscal localization, chart of accounts, taxes, journals and payment terms.
- Contacts: customers and vendors, with their External IDs.
- Product categories: with costing method and accounts set correctly.
- Products: internal reference, cost, sales price, units of measure, vendors.
- Pricelists and vendor prices: linked to products by External ID.
- Open orders: quotations, sales orders and purchase orders still in progress.
- Opening stock: counted quantities loaded as an inventory adjustment.
- Opening balances: open invoices, open bills and the trial balance through a clearing account.
Odoo's accounting setup guide for companies transitioning to Odoo follows the same logic: master data first, opening entries at the time of implementation.
How do you bring opening balances from spreadsheets into Odoo?
Bring opening balances in once, at the cutover date, through a clearing account so nothing is counted twice. This is the step competitor guides skip and accountants worry about most.
Odoo's own example: if receivables stand at $1,000 for open invoices, and you import both the invoices and the receivables balance, Odoo shows $2,000. The same applies to vendor bills and payables. A clearing account absorbs the duplicate side.
Prepare four files from your spreadsheets for the cutover date:
- Trial balance: every account balance, signed off by your accountant.
- Open customer invoices and credit notes: one line per unpaid document, with due dates.
- Open vendor bills and refunds: same structure as receivables.
- Stock count: quantity per product per location, with the cost you want to value it at.
After loading, check that the clearing account nets to zero and that aged receivables in Odoo match the Excel ledger to the cent.
How do you cut over from Excel to Odoo without disruption?
Cut over on a period end, freeze the spreadsheets, load final balances and run both systems side by side only as long as needed to prove Odoo matches. Odoo calls the fiscal year end the easiest switch point and advises against the middle of a tax period.
| When | Step | Owner |
|---|---|---|
| 4 to 6 weeks before | Cleaned files loaded into a test database; users trained | Project lead, key users |
| 2 weeks before | Full trial import and test of daily scenarios | Key users |
| Cutover day minus 1 | Freeze edits to master spreadsheets | Department heads |
| Cutover day | Load final open items, stock count and trial balance | Finance and consultant |
| First 2 weeks | Daily checks of stock, receivables and bank against old sheets | Finance |
| After first close | Retire the master Excel files as read-only archives | Owner |
Run every key process in the test database first. Our guide to Odoo UAT scenarios and sign-off gives a ready list of tests.
How much does an Excel to Odoo migration cost and how long does it take?
A small Excel to Odoo project typically costs $3,000 to $9,000 and takes 4 to 8 weeks, with data migration work of $1,200 to $9,000 depending on volume and history. These are our published ranges, not quotes.
| Business size | Typical implementation range | Typical timeline |
|---|---|---|
| Small | $3k to $9k | 4 to 8 weeks |
| Mid-size | $9k to $27k | 8 to 14 weeks |
| Large | $27k to $150k+ | 12 to 24 weeks |
| Data migration only | $1.2k to $9k | Inside the project timeline |
The full breakdown is on our Odoo implementation cost page. Licenses are separate: the Odoo pricing page lists Standard at US$31.10 and Custom at US$61.00 per user a month billed yearly, plus a One App Free plan.
For your own number, the Odoo migration cost calculator asks about record counts, years of history and sources, then gives a range in a few minutes.
Excel to Odoo migration by industry
The spreadsheets that hurt most differ by industry, so the migration should start with the sheet that causes the most errors. The table shows where we usually begin.
| Industry | Pain or cost driver | Odoo approach | How iVentureTeam helps |
|---|---|---|---|
| Manufacturing | BOMs and costing in separate sheets | Bills of materials and work orders | Convert BOM sheets into Odoo imports |
| Wholesale and distribution | Stock sheet never matches the shelf | Warehouses, locations and barcode | Run the opening count and load it |
| Retail and eCommerce | Product and price lists copied per channel | One product catalog and pricelists | Clean SKUs and variants before import |
| Professional services | Timesheets in Excel, billed late | Timesheets linked to invoices | Map projects and rates |
| Trading and import | Landed costs worked out by hand | Purchase, landed costs, multi-currency | Load vendors, prices and open POs |
Manufacturers have the most to untangle. See how we set up production on our page on Odoo ERP for manufacturing.
How iVentureTeam helps with Excel to Odoo migration

iVentureTeam turns your working spreadsheets into clean Odoo imports and runs the cutover with your team, so trading never stops. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.
- Sheet audit: we list every spreadsheet, who owns it and what it feeds, then agree what moves.
- Mapping and templates: each column mapped to an Odoo field, with External IDs set from your own codes.
- Test loads: repeated imports into a copy of your database until totals match the sheets.
- Opening balances and cutover: clearing accounts, stock count and a reconciled first month, as part of our Odoo implementation services.
- Training: key users learn the new flow before go-live through our Odoo ERP training.
Moving from an older Odoo database instead? Our Odoo database migration guide covers that path.
Excel to Odoo case study: Chetan Plastics
An Ahmedabad plastics-printing manufacturer retired the shared Excel file that ran its business and moved to one connected Odoo system. The rollout was phased over 16 weeks.
Chetan Plastics kept sales, purchase, delivery and receipt records in Excel. Block-based print pricing was worked out in a separate spreadsheet, quotations were re-keyed for repeat orders, and nothing linked a CRM job to its order or delivery paperwork.
We connected six core modules from Sales to Repair. The Excel block calculator was rebuilt inside sales and purchase order lines, and two-step validation was added on sales and purchase confirmations to catch errors the spreadsheet let through.
The master Excel file is now retired, and every job is traceable from CRM inquiry to delivery challan. Read the Chetan Plastics Odoo manufacturing case study.
The bottom line on Excel to Odoo
Excel to Odoo is a data project first and a software project second: clean sheets, External IDs, the right import order and one careful opening balance make the difference. Choose a period end, test twice, then switch.
Start with the spreadsheet that causes the most errors, move only what you need to trade, and keep the old files as a read-only archive. Most teams find the first month-end in Odoo is the moment the effort pays back.
Ready to plan your move from spreadsheets to Odoo?

Get a sheet-by-sheet migration plan before you commit. Plan your Excel to Odoo migration with our team, call +91-90235-15208, or email business@iventureteam.com.
Frequently Asked Questions
Can I import Excel files directly into Odoo?
+
Yes. Odoo imports .xlsx and .csv files into any business object, including contacts, products, journal entries and orders. Open the list view, choose Import records, map the columns, click Test, then Import.
What is an External ID in an Odoo import?
+
It is a unique key for each row, often your old customer or product code. Odoo uses it to link related records and to update existing records on a second import instead of creating duplicates.
How do I avoid duplicate records when importing into Odoo?
+
Clean duplicates in Excel first, give every row a unique External ID, and keep that column on every re-import. Match products on internal reference rather than name, and always run Test before Import.
In what order should I import data into Odoo?
+
Set up the chart of accounts, taxes and journals first, then contacts, product categories, products, pricelists, open orders, stock and finally opening balances. Related records must exist before records that point to them.
How do I import opening balances into Odoo?
+
Load the trial balance, open invoices and open bills at the cutover date through a clearing account. This stops receivables and payables from being counted twice. Check that the clearing account nets to zero afterwards.
When is the best time to switch from Excel to Odoo?
+
The end of a fiscal year is easiest because it needs the least data. The end of a tax period also works. Avoid switching in the middle of a tax period, as filing then needs data from two systems.
How long does an Excel to Odoo migration take?
+
For a small business, a typical project takes 4 to 8 weeks, including data preparation, test imports and training. Mid-size projects usually take 8 to 14 weeks, depending on modules and history.
Should I migrate all my historical data from Excel?
+
Usually not. Move active master data, open transactions, stock and balances, and keep closed years as a read-only archive. Bringing years of history adds cleaning and testing time with little daily value.
Can I still use spreadsheets after moving to Odoo?
+
Yes, for analysis and planning. Odoo Spreadsheet, part of the Documents app, links pivots and charts to live data. Just keep transactions such as orders, invoices and stock moves inside Odoo.
Ready to put this into action?
Talk to iVentureTeam about Odoo, AI automation, or custom development — get a free, no-obligation consultation.
Free Odoo tools
All tools- Odoo Health CheckVersion, modules, findings and upgrade cost
- Odoo App SelectorWhich apps you need, by industry
- Odoo Project EstimateIndicative cost and timeline in minutes
- Odoo Implementation Cost CalculatorImplementation cost and timeline, in minutes
- Odoo Migration Cost CalculatorVersion jump or legacy ERP, priced in minutes
Continue reading
Odoo Migration vs Reimplementation: How to Decide for Old Versions
Odoo migration vs reimplementation: when to upgrade your old Odoo database, when to start fresh, and how custom code, history and cost decide the path.
Zoho to Odoo Migration Checklist: Books, CRM, Inventory and Cutover
Zoho to Odoo migration checklist: export Zoho Books, CRM and Inventory, map fields, load opening balances with clearing accounts, and plan a safe cutover.
Tally to Odoo Migration: Cost, Timeline, and Data Scope
Tally to Odoo migration for Indian and GCC SMEs: what data moves, export and import steps, GST setup, Odoo India prices, cost ranges and a 6 to 10 week plan.
