Migrating Legacy System AR - Customer Invoice Method

How do we bring legacy system outstanding Accounts Receivable documents into Odoo?  Before beginning an import or doing any manual data entry check out the first blog in this series.  It will give you a list of important considerations and help you develop the best plan for your data migration.

Read this first:   Migrating Legacy System AR Documents Into Odoo  

Migrating Legacy System AR - via Customer Invoice entry

In this step-by-step guide, we will keep it simple and bring-in just the legacy system invoice balance.  This example was created on a standard Odoo v13 database.  The fields that appear on your invoice screen may vary depending on the features you are using and customizations you have in place.

STEP 1:  Go to Accounting | Customers | Invoices and create the invoice(s): 
In the list below, fields you must enter are in red:

  • Customer Name

  • Delivery Address:  not required, but if you’ve delivered to a different address it is nice to enter it.

  • Reference (not required, most companies use this field for the customer PO#.  For legacy invoices you may use this to note the legacy invoice number and customer PO#)

  • Invoice Date:  enter the actual invoice date so the invoice will age properly. 

  • Payment Terms:  if your customers are setup properly the correct payment terms should display by default.  Double check the terms on each invoice to ensure the invoice ages properly.

  • Use the Customer Invoices journal.

Invoice Detail Lines:

  • Product:  Leave blank. 
    If you are entering all the detail lines in this screen (Accounting|Customer|Invoices), entering a product will not create product moves, but it will create journal entries that affect your inventory valuation.  To keep this process clean, be sure to consider this effect when planning your steps.

  • Label:  Enter a label that indicates this invoice is from your legacy system.  In this example we use “BegBal”.

  • Account: this will be the account that is credited.  Use the account you decided upon when reviewing considerations.  In this example we use 400000 – Product Sales

  • Quantity: In this example, we are simply wanting to get the invoice balances into Odoo, so we will use a quantity of 1.

  • Price:  Enter the outstanding invoice amount as the price. 

  • Taxes:  if taxes are collected on invoices the Company may feel it’s necessary to enter the tax amounts when brining legacy invoices into Odoo.   That’s fine and a best practice in many cases. In this example taxes were not collected, but please be aware that the Tax Received account will be affected if you enter tax amounts on the details lines.


Click on the Journal Items tab to ensure the AR Account is correct and see what other accounts will be affected by this entry.  If you are comfortable with the accounts affected, post the invoice.


Repeat STEP 1 for each outstanding legacy invoice.

STEP 2:  Go to Accounting | Reporting and run the Aged Receivable report.  A quick check of the Aged AR should show the manually entered invoice(s.)   Check the due dates.   If you have already entered your Legacy Trial Balance you will also see an entry for “Unknown Partner”.  This is normal


STEP 3:  Next we will collect the information to create a reversing journal entry.  Go to Accounting | Journal Entries and filter the report to display only the Customer Invoices journal.  Select only your legacy invoices (if others have been entered) and create an export to verify all the accounts affected by your entry.  Below are the fields you’ll want to review:


This export will show you the debits and credits created for each invoice you entered.  Consult the accounting team on how they would like the reversing entry created.  Do they want to see all the detail, or can you summarize the net effect on each account?  However you do it, the result should be a reversal of the exported journal entries.   

STEP 4:  Go back to Accounting | Journal Entries and manually create a JE to reverse the exported entries.  Post your balanced reversing entry.

  •  Do not use the “reverse” action; it will create a credit memo/refund for the invoice.

  • Remember the date matters.  In this example the reversal will be posted to June 30th.


STEP 5:  Go to Accounting | Accounting | General Ledger and check the GL.  The GL looks good after posting the entry.

In this example, the legacy system trial balance has already been entered.  The legacy system balance in AR is $1,000.  That matches what remains in Odoo after the reversing entry.  Looks good!

STEP 6:  The value you see in the GL should be supported by your Aged Receivable report.  Go to Accounting | Reporting | Aged Receivable and review the report.  You should see the outstanding invoice(s) under the appropriate customer records.  In addition, you’ll see the Beginning TB entry and the invoice reversal in the Unknown Partner section.  This is normal.

STEP 7:  Next we must reconcile the entries (Trial Balance Entry and Invoice Entry Reversal) under the Unknown Partner to each other.  Click the Reconcile button next to Unknown Partner.  Odoo will open the reconciliation screen.

CAUTION: Odoo is usually very good about matching items for reconciliation.  In this test, Odoo did not match the two miscellaneous journal entries together.  Be careful not to click the “Reconcile” button until you are certain you have selected the correct items. 

In this example, we must remove the entry for Customer 1, and replace it with then Miscellaneous entry from the beginning trial balance.  To do this simply click on Customer 1 (highlighted in the picture above) and Odoo will remove it from the reconciliation and place it back in the matching sections.  Then click on the Miscellaneous line item in the matching section (also highlighted above) to add it to the reconciliation.

Once you have selected the correct items, Click Reconcile.

Go back to Accounting | Reporting | Aged Receivable and you’ll see that the Aged AR shows only the open invoice(s).

When this invoice is paid, Odoo will perform the reconciliation to the invoice as normal.

While this seems like a lot of steps, the process is fairly simple when you’ve worked through all the considerations before doing any data entry.  Taking the time to understand the Company’s needs and adapting your migration plan to meet those needs will always produce the best results.

If you have questions or need help, the whole team at Talus ERP is here to serve you.  You can reach me directly at shelley.schultz@TalusERP.com or contact our main office via the links below.

Helpdesk new ticket notification
Get a notification via email when a new ticket is created.