โ† Back to guides

How to Migrate from MYOB to Odoo

Moving from MYOB to Odoo is one of the most common migrations we handle for Australian businesses. MYOB is excellent for basic accounting and payroll, but when your business needs inventory, CRM, manufacturing, or project management in one system, Odoo becomes the logical next step.

This guide walks you through every step of a MYOB-to-Odoo migration โ€” from planning through to go-live โ€” so you know exactly what's involved.

Before you start: what to prepare

A successful migration starts with good preparation. Before you touch Odoo, get these things in order:

  • Export your MYOB data โ€” Chart of accounts, contacts (customers and suppliers), invoices, bills, payments, journal entries, and inventory items. MYOB lets you export most of these as CSV or Excel files from File โ†’ Export Data.
  • Run a BAS reconciliation โ€” Make sure your BAS is lodged and reconciled up to the cutover date. You don't want to be chasing GST discrepancies across two systems.
  • Pick a cutover date โ€” Choose the start of a BAS period (1 July, 1 October, 1 January, or 1 April) to keep things clean. End-of-financial-year (1 July) is ideal if you can wait.
  • Notify your accountant/BAS agent โ€” They'll need to know you're switching systems. If they use MYOB's accountant portal, they'll need access to Odoo instead.
  • Decide what history to migrate โ€” Most businesses only need open invoices/bills, opening balances, and the current-year transactions. Migrating 10 years of history is rarely worth it.

Step 1: Set up your Odoo chart of accounts

Install the Australian โ€” Accounting module in Odoo. This gives you a default chart of accounts based on Australian standards, GST tax codes, and a BAS-ready configuration.

Compare the default Odoo chart of accounts with your MYOB accounts. You'll likely need to:

  • Add accounts that exist in MYOB but not in Odoo's default template
  • Rename accounts to match your existing naming conventions (optional but helpful for your team)
  • Map MYOB account numbers to Odoo account codes โ€” document this mapping in a spreadsheet
  • Set up any tracking categories as Odoo analytic accounts
๐Ÿ’ก

Keep MYOB's account numbers in a "legacy code" field or notes so your accountant can cross-reference during the first BAS period.

Step 2: Migrate contacts

Export your customers and suppliers from MYOB as CSV. For each contact, you'll want: name, ABN, email, phone, billing address, and payment terms.

In Odoo, import contacts via Contacts โ†’ Import. Map the CSV columns to Odoo fields. Key things to check:

  • Set the contact type (Customer, Vendor, or both)
  • Map ABN to the Tax ID field in Odoo
  • Set default payment terms if they differ from the Odoo default (30 days)
  • Import both active and inactive contacts โ€” you can archive inactive ones later

Step 3: Migrate open invoices and bills

You have two options for outstanding invoices and bills:

  • Option A: Import as opening balances โ€” Create a single journal entry per customer/supplier with their outstanding balance. Simpler, but you lose individual invoice detail.
  • Option B: Import individual invoices โ€” Import each unpaid invoice and bill into Odoo with the correct due date and amount. More work, but your aged receivables/payables reports will be accurate from day one.

We recommend Option B for most businesses. It takes an extra hour or two but saves confusion later when customers pay old invoices.

Step 4: Set opening balances

Create an opening balance journal entry in Odoo dated the day before your go-live date. This entry should include:

  • Bank account balances (reconcile to your bank statements)
  • Accounts receivable (should match your imported open invoices)
  • Accounts payable (should match your imported open bills)
  • Inventory value (if applicable)
  • Fixed assets and accumulated depreciation
  • Loan balances
  • Equity accounts (retained earnings as the balancing figure)
  • GST collected and GST paid accounts (check these match your latest BAS)
โš ๏ธ

Triple-check the opening balance entry. If it doesn't balance, something is wrong. Don't fudge the difference into retained earnings โ€” find the discrepancy first.

Step 5: Set up bank feeds

Odoo supports bank feeds in Australia through Basiq, Yodlee, and SaltEdge. Which one works for you depends on your bank:

  • Basiq โ€” Uses Australia's Consumer Data Right (CDR). Best for major banks (CBA, NAB, ANZ, Westpac). You may need to enable CDR sharing with your bank first.
  • Yodlee โ€” Broad bank support, long established. Good fallback if Basiq doesn't support your bank.
  • SaltEdge โ€” Another option with wide coverage. Check compatibility with your specific bank.

Set up the bank feed connection and verify it pulls recent transactions correctly before go-live.

Step 6: Configure GST and BAS

The Australian accounting module configures GST automatically, but verify:

  • GST (10%) mapped to the correct accounts for collected and paid
  • GST-free and input-taxed codes are set up for relevant transactions
  • BAS report maps correctly to your GST labels (1A, 1B, etc.)
  • PAYG withholding is configured if you're lodging BAS with PAYG

Step 7: Migrate payroll (if applicable)

If you're using MYOB payroll, this is the most complex part of the migration. You need to set up:

  • Employee records with YTD earnings, tax withheld, and super contributions
  • Pay items (ordinary hours, overtime, allowances, deductions)
  • Leave balances (annual leave, personal/carer's leave, long service leave)
  • Superannuation fund details and contribution rates
  • STP registration with the ATO under the new Odoo software ID
โ„น๏ธ

Switching payroll mid-financial-year requires YTD figures to be exact. If you can, switch payroll at the start of a new financial year (1 July) and keep MYOB running for payroll until then.

Step 8: Test everything

Before go-live, run through these checks:

  • Create a test invoice and verify GST is calculated correctly
  • Process a test payment and check it records against the right accounts
  • Run a BAS report and verify the numbers look reasonable
  • Check aged receivables and payables match your MYOB reports
  • Run a trial balance and compare to MYOB
  • Process a test pay run (if using Odoo payroll) and verify net pay, tax, and super

Step 9: Go live

On your cutover date:

  • Lock MYOB so no new transactions are entered after the cutover date
  • Verify opening balances in Odoo match MYOB's closing balances exactly
  • Start entering all new transactions in Odoo
  • Keep MYOB installed (read-only) for at least 12 months for reference
  • Lodge your first BAS from Odoo and reconcile it carefully

Common mistakes to avoid

  • Migrating too much history โ€” You don't need 10 years of transactions in Odoo. Open items and current-year data is usually enough.
  • Not reconciling before cutover โ€” If MYOB isn't reconciled, your opening balances in Odoo will be wrong from day one.
  • Switching payroll mid-month โ€” Always switch payroll at the start of a pay period, ideally at the start of a financial year.
  • Forgetting to update bank details โ€” Make sure your payment remittance emails and invoices now come from Odoo, not MYOB.
  • Not training staff โ€” Odoo looks and works differently from MYOB. Budget time for training before go-live.

Timeline: how long does this take?

For a typical Australian SME (under 50 employees, standard accounting):

  • Simple migration (accounting only, no payroll) โ€” 1โ€“2 weeks
  • Standard migration (accounting + inventory + contacts) โ€” 2โ€“4 weeks
  • Full migration (accounting + payroll + inventory + CRM) โ€” 4โ€“8 weeks

The biggest variable is data quality. If your MYOB data is clean and well-organised, the migration will go faster.

Need help migrating from MYOB?

We migrate businesses from MYOB to Odoo every month. Let's talk about your migration plan.

Get in touch โ†’