Ezura
EzuraInvoice Automation

Invoice sync into Odoo: how to automate it (2026)

21 July 2026 · 7 min

More companies run Odoo as the system where sales, stock and projects already live — and they want accounting to live there too. Yet incoming supplier invoices usually still get there by hand: someone opens the PDF, creates a vendor bill, types the lines, picks the taxes and attaches the file. This article explains how to automate that path, and why Odoo is technically a different case from the file-based accounting systems used in the Baltics.

Why a file import is not the answer for Odoo

With most Lithuanian accounting systems, automation means a correctly shaped file: we generate an import file and the accountant loads it. Odoo has no meaningful import format for purchase invoices — but it does have a full API. So the right path here is not a file but a record created directly: the invoice appears in Odoo as a proper vendor bill, not as an import line someone still has to review.

The practical difference is simple: there is no intermediate file for anyone to download, upload and check. Once the invoice is approved in Ezura, it shows up in Odoo within seconds.

What travels into Odoo with the invoice

It is not just a header and a total. The vendor bill that gets created carries:

  • the supplier — matched by company or VAT number, and created if it does not exist yet
  • invoice and due dates plus the document number (which also becomes the payment reference)
  • lines with descriptions, quantities and net prices
  • VAT rates mapped to your own Odoo tax records
  • the general-ledger expense account
  • the original PDF, attached to the same record

That last point matters more than it sounds: during an audit or a check, the original document is found in Odoo next to the bill itself, not in somebody's mailbox.

Technical overview of the integration:

Dimensions in Odoo terms: analytic plans

What other systems call dimensions — project, site, department, cost center — Odoo calls analytic accounting. The structure is the same, only the words differ: an analytic plan is the dimension type ("Projects", "Departments"), and analytic accounts are its values ("Vilnius warehouse", "Project A").

Ezura dimensions are mapped to your analytic plans, so an automatically assigned value ends up in the right analytic distribution on the Odoo line. One invoice can carry several lines with different sites — and that is exactly how they arrive in Odoo, rather than collapsing into a single amount.

How dimensions get assigned automatically:

VAT codes come from your Odoo, not from re-typing

The most common mistake when connecting anything to accounting is trying to redefine the VAT codes. Ezura does not create them: tax records, companies, products and the chart of accounts are pulled straight from your Odoo. Invoices are therefore matched to records that actually exist in your system, and a new tax added on the Odoo side does not need to be described again in Ezura.

The same logic covers the harder cases: when one invoice mixes different rates, or part of the services is outside the scope of VAT altogether, each line gets its own tax instead of the whole document getting one.

When one document carries several VAT rates:

Credit notes and returns

In Odoo a refund or credit note is a separate document type, not a purchase bill with a minus sign. So once a credit document is recognised it is pushed as a refund with positive amounts — Odoo handles the sign itself. Entered by hand as an ordinary bill with a negative total, it makes reports disagree later, and the reason is rarely found straight away.

What to check before connecting

A few things worth verifying up front — they decide whether connecting takes an hour or a week:

  • Odoo version: the direct sync works from Odoo 19 onwards, so older versions need a different approach
  • on Odoo Online the external API is available only on the top "Custom" plan — not on One App Free or Standard; self-hosted and Odoo.sh environments have no such limit
  • an Odoo API key is valid for no more than three months, so the connection has to be renewed — plan for it up front, not when the sync unexpectedly stops
  • use a dedicated user with accounting rights for the connection, rather than somebody's personal account

The three-month key lifetime is an Odoo security rule rather than a limitation on our side — but it is exactly the detail most often forgotten when an integration is built in-house.

What the whole path looks like

The supplier emails the invoice to your Ezura address. The system reads it — supplier, dates, lines and VAT — checks the company details and assigns dimensions according to your rules. The accountant reviews the result and approves it. The approved invoice appears in Odoo as a vendor bill with the PDF attached. The manual entry step simply disappears; the review stays.

How invoices are read and recognised:

If you run Odoo and want to see how this would work on your own suppliers' invoices, a few sample PDFs and access to a test environment are usually enough.

Want to see this on your own invoices?

All articles