A note on Accounting in Odoo 13

With Odoo 13, a lot has changed in the Invoicing and Finance modules. The most significant change probably is that Invoicing no longer exists as a single object. Until last October, with the release of version 13, the analog world acted as a template for the technical invoicing process. You generated an invoice, used „the next number“ on the list, put it on the document, sent it off, and forwarded it to the accounting department. The latter put a date of receipt stamp on it, allocated it to an account, added it to a batch, and finally posted it.

In Odoo, the process used to be almost similar. There was a table or an object called account.invoice, where data records without invoice numbers or dates were created, listing all relevant data: recipient, payment terms, line texts, amounts, taxes, subtotals, grand totals, etc.

Most importantly, revenue and expense accounts as well as accounts receivable, and, if applicable, tax accounts were pre-allocated. This process represented, as it were, the initial account assignment of the past. With the validation, a posting record was generated, which received a sequential number that, in turn, was passed back to the invoice.

In other words, the digital and analog procedure was almost identical.

Now, things are quite different. The invoice itself does no longer exist, and you only have posting records. The journal or book to which a posting record has been assigned helps you to recognize what you are dealing with. Alternatively, you can identify the type of posting record by whether or not it has documents attached to it. Odoo has justified this change by claiming that to have the data on both the invoice and the posting record is redundant.

I do agree with that, and I even think that these changes are an improvement. (The real estate industry, in particular, should love this new approach since contracts will no longer trigger the creation of invoices, but of booking records.)

Unfortunately, there is a catch. Why Odoo has chosen to do this or what the cause for this change was, we cannot even guess. What we can tell you, however, is that at first glance, it looks much worse than it actually is. Still, one likes to be told how to limit the damage.

As we have reported several times already, Odoo 13 contains a module called „invoice_cancel.“ After having overcome another small hurdle, it allows every user to cancel posted invoices, to change and confirm them, and to re-create them under the same invoice number – without an off-setting entry or a balancing post. Although this procedure will be recorded, and the changes made will be version-controlled, this line of action contradicts the underlying accounting principle that posted invoices may not be changed under any circumstances.

The good news is – this module does no longer exist.
The bad news – this module has now been integrated into the Odoo core!

Simply put, all posted invoices may now be canceled, edited, and re-posted under the same transaction number.

Let us have a look at the proof below:

An invoice has been created in draft form:

Now we post it:

Now, only the reference may be edited, everything else is locked, as usual.

But as you can see already, there is one more, rather suspicious button „Reset to Draft.” If you click on this button, the invoice will retain its number, and its status will immediately jump back to “Draft.” What is more, we are now even in edit mode:

And now, we may create not only one, but two „DESK0004“,

and even re-post them directly. Odoo will record the individual steps:

Still, the editability of invoices remains a sensitive topic, and the tolerance for interpretation is low.

Even if it is only the icing on the cake, editing also means the removal of lines. And since Odoo inhibits the prevention of already confirmed postings, all you have left is an empty invoice header:

The solution to this issue only appears if the Accounting module has been installed. By clicking on a Journal, you can select the option “Lock Posted Entries” under “Advanced Settings:”

Now, if an invoice or a posting record is confirmed, the option to cancel or reset it to the draft status has disappeared.

Let’s take a look at the last, equally bewildering issue:

As soon as you review a bank statement, either by opening a general ledger account via the chart of accounts or via an invoice to display the posting lines, ALL postings appear, including those still in draft status.

Example and Postings:

In this case, the description of the marked line clearly shows that this invoice is still in draft status. Unfortunately, there is no colored or another conspicuous indicator (e.g., a status display) to highlight this fact.

You can correct this immediately by adding a filter for posted lines only, but you have to know AND remember that in the first place (see screenshot).


At first, I was very astonished, even shocked to see these possibilities. But these problems may be solved, you just have to remember how.

To make both issues a little more user friendly,

  1. a) existing journals should be deactivated for the editing of posting records;
  2. b) a default value should be set for the checkbox, to disable this functionality and to ensure that each new journal will be configured correctly from the start.
  3. c) a small extension should be added to the list view for the display of posting lines so that the „booked“ filter is set as soon as a user accesses this list. If required, this setting should be removable, so that any items not yet posted may be reviewed as well.
6 July, 2020
share article
Sign in to leave a comment
What you need to know about the Import / Export features in Odoo