Migrating Legacy System AR - Journal Entry 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 INTO ODOO

migrating legacy system accounts receivable documents via journal entry

When moving into production with a new ERP system one important task is migrating outstanding Accounts Payable and Accounts Receivable documents.  A quick method for bringing-in outstanding AP (bills) and AR (invoices) is to make them part of your Opening Balances journal entry.  This method of loading outstanding AP & AR allows for a faster implementation but does create more work and potential frustration for new Odoo users, post-implementation. 

While this method can be used for Accounts Payable documents this article will focus on Accounts Receivable.  Before we get to the step-by-step, let’s look at the considerations: 

  • Each AR record entered will receive the date of the journal entry. 

  • Each AR entry will show on the aging reports separately, but Odoo assigns the journal entry dates as the invoice due date.  Since this date won’t usually be the actual invoice due date, the Aging report functionality will be reduced until all of those items are paid.

  • This consideration could be eliminated by doing a series of separate journal entries - one for each invoice date.  However, this could quickly become a lot of extra work.

  • The Aged Receivables reports, by default, will not display the invoice number entered into the Label field on the journal entry.

  • Since these entries do not actually create Invoices, they are not available to be paid via the invoice screen.  Users must register a payment and then match it to the Journal Entry transaction manually.

  • Invoices entered via journal entry will not contain any detail and will not facilitate easy product returns.  Returns for these invoices will have to be managed manually.

For most clients, these considerations will be a deal-breaker, but clients who want to implement quickly may be fine with these limitations.

Let's do it!

Legacy system outstanding AR invoices may be entered along with the GL Opening Balances.  When the GL Trial Balance from the legacy system is entered into Odoo, you simply break out all outstanding AR invoices and enter each one as a separate line item.  These entries replace the single line item AR entry from the trial balance, so the sum of all the entries must equal the amount for the AR account on the legacy trial balance.

Let's look at an example of this method for Accounts Receivable:

  1. Enter the legacy system trial balance as a journal entry. [In this example, the AR Balance is $1,000.]

  2. Replace the total Accounts Receivable balance with one line for each outstanding invoice.  Remember the sum of all invoices entered must match the total AR value on the trial balance. [In this example, there are two invoices: one for $100, and another for $900.  They total $1,000.]

For each AR document, enter the following fields:

  • Account Number:  this is the AR Account

  • Partner Name: select it from the list

  • Label: enter the Invoice Number from the legacy system

  • Debit/Credit: Enter a debit for the outstanding balance of an Invoice.  Enter a credit for the outstanding balance of a Credit Memo.  [If your legacy system aging has unapplied payments on it, you could enter those as credits too.]


Let’s take a look at the results of entering legacy system outstanding AR this way:

  • The individual entries will show on the aged AR under the customer name.

  • The due date will be the date of the journal entry.

  • Note that, by default, the invoice number entered into the JE Label field is not displayed.

You will see the amount due on the customer account.


HOWEVER – since the Journal Entry doesn’t create an invoice, these open balances will not show on the invoice screen.


When a payment is received for a legacy system invoice, the payment application will be fairly manual.

  • You will go to Accounting | Customers | Payments and create a new payment


  • Confirm the payment and then reconcile it.  Click Payment Matching.


  • Select the matching entries from the Beginning Trial Balance Entry and the Payment.  Then click the reconcile button.


This method is fast but will not be acceptable for most clients.  Companies with hundreds of outstanding AR invoices, companies that need to quickly see details on legacy invoices, or companies that process a fair volume of returns will likely find managing legacy documents this way to be quite cumbersome.  Fortunately, as with everything in Odoo, there is always more than one way to accomplish the same task and this method could work well for some clients.  Just be sure the whole team understands the limitations of this method and how to manage those limitations in production.

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 us via the links below.

Odoo Address Format
Where's the comma?