Guides & articles

Migrating from MYOB to Odoo: what moves and what doesn't

Most MYOB-to-Odoo migrations go wrong for the same reason: someone tries to bring fifteen years of transaction history across. You don't need it, and it won't come cleanly. What you actually need is a clean opening position on a sensible date, your master data, and your MYOB file kept somewhere you can open it. Here's how that works in practice.

Pick the cut-over date before you touch anything

Use the first day of a BAS quarter — 1 July, 1 October, 1 January or 1 April. Lodging a quarter half in MYOB and half in Odoo is a common cause of a messy first BAS. If you report monthly, use the first of a month.

Everything dated before that line stays in MYOB. Everything after it is Odoo. Keep the MYOB file (and your subscription, or an exported archive) available afterwards — your accountant will tell you how long to retain it and in what form. Either way, don't cancel MYOB the week you go live.

What exports cleanly from MYOB

In MYOB AccountRight, it's File → Export Data, which gives you tab-delimited text files you can open in Excel and save as CSV. In MYOB Business (the browser version), you export from the Contacts and Items lists and from Reporting → Reports as CSV or Excel.

Contacts (Cards)

Customer and supplier cards map well onto Odoo's single Contacts model. Export name, ABN, addresses, phone, email, payment terms and credit limit. In Odoo the ABN goes in the Tax ID field on the contact form. Normalise the ABNs in the spreadsheet first — strip spaces, drop any that are short a digit, and check them against the ABN Lookup register if you're unsure. Fixing 300 records in Excel takes ten minutes; fixing them one contact form at a time takes an afternoon.

Items

Item number, description, selling price, cost, income account, GST code and whether the item is inventoried. In Odoo these become Products: item number → Internal Reference, selling price → Sales Price, cost → Cost. Set the Product Type to Storable for anything you count, Service for labour and fees.

Chart of accounts

MYOB's 1-1100 / 4-1000 numbering doesn't match Odoo's Australian chart. You have two options: install the Australian localisation (l10n_au) and use Odoo's standard Australian chart — recommended, because the GST tax codes come pre-wired — or import your MYOB accounts and rebuild the tax links by hand. Unless your accountant insists on the exact MYOB codes, take the standard chart and map your reporting to it.

Open invoices and bills

Run Receivables Reconciliation [Summary] and Payables Reconciliation [Summary] as at the day before cut-over. Each unpaid invoice gets re-entered in Odoo as a single-line invoice against a dedicated "Opening AR" account, dated with the original invoice date so your aged receivables report is honest from day one. Same for bills.

Stock on hand

Export your Items List Summary with quantities and average cost. In Odoo, go to Inventory → Operations → Physical Inventory, import the counted quantities against each product, and hit Apply. Odoo posts the valuation journal entry for you — which means you must exclude the inventory asset balance from your opening trial balance entry, or you'll count it twice.

What doesn't move

Mapping MYOB tax codes

After installing the Australian localisation, check Accounting → Configuration → Taxes and map as follows: GST → GST 10% (Sales or Purchases, depending on direction); FRE → GST Free; N-T → no tax at all (bank transfers, wages journals); INP → Input Taxed; EXP → Export. MYOB's CAP code for capital acquisitions has no direct equivalent — duplicate the GST Purchases tax, rename it "GST on Capital Purchases", and use it for asset buys so you can separate G10 from G11 at BAS time.

The actual import clicks

Open the list view of the model you're importing — Contacts, Products, Chart of Accounts — then Favorites → Import records. Download Odoo's template first and paste your MYOB data into it; the column headers match the fields exactly, so you avoid hand-mapping every column. Include an External ID column (something like myob_cust_00142) on every row. That makes the import re-runnable: fix the spreadsheet, load the same file again, and Odoo updates the existing records instead of creating duplicates.

Import in this order: chart of accounts, taxes, contacts, products, then open invoices and bills, then stock counts, then the opening trial balance journal. Test the whole sequence on a throwaway database before you do it for real — a live demo instance can be built from the homepage chat, so you can rehearse the imports, break something, and start again. Our hosting runs Odoo Community on AWS Sydney, so your data stays in Australia, with nightly backups kept seven days and SSL included. Pricing is flat AUD +GST — $29 or $79 per month, never per user — so a migration that adds three people to the system doesn't change the bill.

Opening balances

Create a journal entry dated the day before go-live in a journal called "Opening Balance". Enter every balance sheet account from your MYOB trial balance except AR, AP and inventory (those come from the invoices and the stock count). Balance it to a temporary Opening Balance equity account, which should end at zero once everything's in. If it doesn't, something's missing — find it before you invoice a customer.

Set your invoice numbering while you're here. Edit the sequence on your Customer Invoices journal so Odoo continues from your last MYOB number rather than restarting at 1.

Running both for a month

Enter the first month's sales in both systems if you can bear it. It's tedious, and it's a reliable way to catch a mis-mapped GST code before it reaches a BAS. After one clean month, stop entering in MYOB and keep it read-only for reference.

If your MYOB setup leans on custom reports, item pricing rules or integrations with no obvious Odoo equivalent, scope that separately rather than discovering it at go-live. We quote custom work fixed-price with the scope agreed in writing first — tell us what you need and we'll tell you whether a standard Community module already does it. More walkthroughs are in Learn.

See your Odoo running in five minutes. No card, no sales call — a chat, a verified email, and a live instance.

Start the demo →