Account Invoice Import

This module has been started by lazy accounting users who hate enter
they vendor bills manually in Odoo. Almost all companies have several
vendor bills to enter regularly in the system from the same vendors:
phone bill, electricity bill, Internet access, train tickets, etc. Most
of these invoices are available as PDF. If we are able to automatically
extract from the PDF the required information to enter the invoice as
vendor bill in Odoo, then this module will create it automatically. To
know the full story behind the development of this module, read this
blog
post.
In order to reliably extract the required information from the invoice,
two international standards exists to describe an Invoice in XML:
- CII
(Cross-Industry Invoice) developped by
UN/CEFACT (United Nations Centre for
Trade Facilitation and Electronic Business),
- UBL (Universal Business Language) which is
an ISO standard (ISO/IEC
19845)
developped by OASIS (Organization
for the Advancement of Structured Information Standards).
Some e-invoice standards such as
Factur-X propose to embed the XML
description of the invoice inside the PDF invoice. Other people think
that the futur is pure-XML invoices: a European initiative called
PEPPOL aims at setting up an open network to
exchange e-invoices as UBL XML. We don’t know yet which standard and
which practice will prevail on electronic invoicing in the future, but
we hope that lazy accountants won’t have to manually encode their vendor
bills in the near future. This module is here to help achieve this goal!
This module doesn’t do anything useful by itself ; it requires other
modules to work: each modules adds a specific invoice format.
Here is how the module works:
- the user starts a wizard and uploads the PDF or XML invoice,
- if it is an XML file, Odoo will parse it to create the invoice
(requires additional modules for specific XML formats, such as the
module account_invoice_import_ubl for the UBL format),
- if it is a PDF file with an embedded XML file in Factur-X/CII format,
Odoo will extract the embedded XML file and parse it to create the
invoice (requires the module account_invoice_import_facturx),
- otherwise, Odoo will use the invoice2data Python library to try to
interpret the text of the PDF (requires the module
account_invoice_import_invoice2data),
- if there is already some draft supplier invoice for this supplier,
Odoo will propose to select one to update or create a new draft
invoice,
- otherwise, Odoo will directly create a new draft supplier invoice and
attach the PDF to it.
This module also works with supplier refunds.
Table of contents
Go to the form view of the suppliers and configure it with the following
parameters:
- Individual/Company: Company
- the VAT Number (this field is used by default when searching the
supplier in the Odoo partner database)
- in the Accounting tab, create one or several Invoice Import
Configurations.
You can configure a mail gateway to import invoices from an email:
- Go to the menu Settings > Technical > Email > Incoming Mail Servers
and setup the access (POP or IMAP) to the mailbox that will be used to
receive the invoices,
- In the section Actions to perform on incoming mails, set the field
Create a new record to Wizard to import supplier invoices/refunds
(model account.invoice.import).
- If you are in a multi-company setup, you also have to go to the menu
Invoicing > Configuration > Settings: in the section Invoice
Import, enter the email of the mailbox used to import invoices in the
field Mail Gateway: Destination E-mail (it will be used to import
the invoice in the proper company).
Go to the menu Invoicing > Vendors > Import Vendor Bill and follow the
instructions of the wizard. You can also start the wizard from the
Accounting Dashboard: on the purchase journal, click on the Upload
button.
This module also supports the scenario where you have a draft vendor
bill (generated from a purchase order for instance) and you have to
update it to comply with the real invoice sent by the vendor: on the
form view of the draft vendor bill, click on the button Import Invoice
File and follow the instructions of the wizard.
If you have a large volume of invoices to import, you may be interested
by the script mass_invoice_import.py which is available in the
scripts subdirectory of this module. If you run:
./mass_invoice_import.py --help
you will have detailed instructions on how to use the script.
A particular use case of this script is to have a directory where all
the invoices saved are automatically uploaded in Odoo. For that, have a
look at the sample script inotify-sample.sh available in the same
subdirectory. Edit this sample script to adapt it to your needs.
- Remove dependency on base_iban and develop a separate glue module
between this module and base_iban
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
feedback.
Do not contact contributors directly about support or help with technical issues.
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
Current maintainer:

This module is part of the OCA/edi project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.