- APPS
- Vietnamese E-Invoice Integration 18.0
| Lines of Code | 3297 |
| Technical name | l10n_vn_viin_edi |
| License | OPL-1 |
| Website | https://viindoo.com/apps/modules/18.0/l10n_vn_viin_edi |
| Read description for | v 13.0 v 14.0 v 15.0 v 16.0 v 17.0 v 19.0 |
| Required Apps | Invoicing (account) Discuss (mail) |
| Included Dependencies | Partner Identity Information Partner Budget Code Viindoo Base Accounting Foundation Legal Invoice Number API Request Logger |
| Extensions | E-Invoice - Viettel S-Invoice Integrator E-Invoice - Misa meInvoice Integrator Show EInvoice Information on POS Receipt E-Invoice - VNIs VN-Invoice Integrator Vietnam E-invoice - Sale Vietnam Electronic Invoice Line Grouping |
Vietnamese E-Invoice Integration
Seamless integration with Vietnamese e-invoice providers (Viettel S-Invoice, VNInvoice, MISA E-Invoice, etc), ensuring compliance and efficiency in invoicing workflows
At a Glance
The facts of Vietnamese E-Invoice Integration, version 1.1.7, in one place. Published by Viindoo.
Key Features
Built natively on Odoo/Viindoo to streamline real business operations:
Provider Integration
Preconfigured for popular Vietnamese e-invoice providers like Viettel S-Invoice, VNInvoice, and MISA E-Invoice, with tools to extend compatibility to new providers.
Easy VietNam E-invoice configuration
config E-invoice serial, type and template with ease.
Enhanced Accounting Fields for E-Invoicing
- In Customer Invoice:
- E-Invoice Issuance Date: Tracks the issuance date of the electronic invoice.
- E-invoice Transaction ID: Tracks the E-invoice Transaction ID of the electronic invoice.
- E-Invoice Issue User: Tracks the E-Invoice Issue User of the electronic invoice.
- E-Invoice Representation File: Stores the representation file generated for the invoice.
- E-Invoice Converted File: Stores the printable version of the e-invoice in PDF format.
- In Account Journal:
- E-Invoice Provider: Specifies the e-invoice provider (e.g., MISA, VNIs, Viettel).
- Default E-Invoice Type: Sets the default type of e-invoice (e.g., VAT Invoice, Sale Invoice).
- Default Template: Assigns the default e-invoice template for all invoices under this journal.
- Default E-Invoice Serial: Links to the e-invoice serial for compliance and traceability.
Real-Time Status Tracking
Monitor issuance in real time and filter every invoice by one normalized E-Invoice Status - to issue, issued, adjusted, replaced, cancelled or error - across all providers.
Benefits
The module ensures businesses fully comply with Vietnam's e-invoice regulations, avoiding legal violations and risks.
Eliminate manual processes such as printing, storing, and delivering paper invoices, helping businesses save operational time and costs.
Easily issue, adjust, and cancel e-invoices directly within the system, ensuring quick and accurate processing.
Real-time tracking of invoice status minimizes errors and enhances financial transparency.
Flexibly expand to integrate with additional e-invoice providers or customize workflows to meet specific business needs.
Vietnam E-Invoicing settings
Unified E-Invoice menu
Merged E-Invoice tab
See Vietnamese E-Invoice Integration in Action
See how this module solves real business problems in a working Viindoo environment.
Need help with Vietnamese E-Invoice Integration?
For questions, implementation support, or consulting services, contact Viindoo.
Pre-Sales & Partnership
sales@viindoo.comWhen contacting us, please include:
- Odoo/Viindoo version (CE/EE).
- Number of users and business scope.
- Other modules currently in use.
Technical Support
apps.support@viindoo.comFor faster troubleshooting, please provide:
- Order number or app reference.
- Odoo/Viindoo version & edition.
- Steps to reproduce the issue.
- Screenshots/logs if available.
Technical Requirement
Changes log
We continuously improve this module. Recent updates from the official Viindoo repository:
- 2026-07-05 Improved Upgraded to Odoo 18.0: unified E-Invoice menu, one merged notebook tab, a single E-Invoice status filter, a consolidated Vietnam E-Invoicing settings and partner section, and the e-invoice cancel-guard.
- 2026-02-24 Fixed TypeError: object of type 'bool' has no len() while downloading invoice on portal.
- 2026-01-30 Improved E-Invoice validation flow: check on issuance instead of journal posting.
- 2026-01-07 Performance Speed up the pre_init_hook method by ignoring null values.
- 2026-01-05 Fixed Update journal dashboard view to be compatible with v17.0.
- 2025-11-21 Improved Performance by replacing binary attachment domain with filename check.
- 2025-09-11 Added Identification, passport, budget code for Vietnam edi.
Works Great With These Modules
Extend Vietnamese E-Invoice Integration with complementary Viindoo apps:
Vietnam Electronic Invoice Line Grouping
Provide options to issue an e-invoice on a detailed or line-grouped form
Module l10n_vn_edi_line_groupingE-Invoice - Viettel S-Invoice Integrator
Issue Vietnamese e-invoices through Viettel S-Invoice on top of Odoo core, fully integrated with the unified E-Invoice interface
Module l10n_vn_viin_accounting_sinvoiceShow EInvoice Information on POS Receipt
General Information of EInvoice on POS Receipt
Module l10n_vn_viin_edi_posVietnam E-invoice - Sale
Automatically add Vietnamese descriptions when creating invoices from sales orders for compliance and efficiency.
Module l10n_vn_viin_einvoice_saleWho Should Use This Module?
Built for teams that need this capability fully integrated into their Odoo/Viindoo stack.
Executives & Business Owners
Need clear visibility into operations and a stack that scales without bespoke development.
Operations / Department Leaders
Want to streamline daily workflows, remove manual handoffs, and keep data consistent across teams.
Implementers & Odoo Partners
Looking for production-ready Viindoo modules to deliver projects faster and at lower risk.
Installation
- Navigate to Apps.
- Search with keyword l10n_vn_viin_edi.
- Press Install.
Instruction
Instruction video: E-Invoice common
This module provides the provider-agnostic backbone for Vietnamese e-invoicing. Once a provider module is installed alongside it - Viettel S-Invoice, VNInvoice (VNIs) or MISA meInvoice - every provider is configured, issued, tracked, adjusted, replaced and cancelled from the same unified E-Invoice interface described below, instead of one separate screen per provider.
1. Configure the Vietnam E-Invoicing settings.
- Go to Accounting > Configuration > Settings and open the Vietnam E-Invoicing section.
- Select the e-invoice Provider for the company. The provider-specific connection fields appear underneath once a provider is chosen, so you only see the settings that apply to you.
2. Use the unified E-Invoice menu.
- A single E-Invoice menu now groups every e-invoice configuration and operation - serials, templates, types and the list of issued e-invoices - replacing the former per-provider menus.
3. Fill in e-invoice information on the customer invoice.
- Open a customer invoice. The E-Invoice notebook tab gathers, in one place, the status and identifiers, the correction information, the provider sub-group and the generated documents - no matter which provider issued the invoice.
- Signing the e-invoice and sending it to the tax authority no later than the next working day after the invoice date is the accountant's responsibility: the software does not check it (item 7 of the Appendix, Decree 254/2026/ND-CP).
4. Track e-invoice status across every provider.
- On the customer invoice list, use the E-Invoice Status filter and group-by to see, in one normalized view, which invoices are still to issue, issued, adjusted, replaced, cancelled or in error - regardless of the underlying provider.
5. Adjust or replace instead of cancelling an issued e-invoice.
- An already-issued e-invoice can no longer be simply cancelled, regardless of when it was issued. The system blocks the cancel action and guides you to issue an adjustment or a replacement e-invoice, keeping your books compliant.
- The day this rule starts to apply is the Cancellation Blocked From setting in the Vietnam E-Invoicing section of Accounting > Configuration > Settings. Its shipped value is 1 July 2026; change it only when the regulation sets a different date.
6. Issue a forgotten invoice with its own date.
- Enter the forgotten invoice with the date of the sale, never with today's date: the e-invoice shows that date, and the books and the VAT period follow it.
- When e-invoices with a later date are already issued in the serial, the provider refuses an
earlier-dated e-invoice in that serial. Issue the forgotten invoice in a second serial registered
with the provider, chosen while the invoice is a draft; an invoice already confirmed is reset to
draft first. Then confirm the invoice and send it. Once the e-invoice is issued, its serial can
no longer be changed.
- VN-Invoice: create the serial in Accounting > Configuration > E-Invoice > E-Invoice Serial; an accounting administrator then chooses it as E-Invoice Serial in the E-Invoice tab of the invoice.
- S-Invoice: Viettel numbers the e-invoices of each invoice symbol. Create the second symbol in Accounting > Configuration > E-Invoice > Viettel S-Invoice > Symbols, then choose it as Invoice Symbol in the E-Invoice tab of the invoice; the E-Invoice Serial stays as it is.
- MISA meInvoice: ask MISA whether its date-order check covers one serial or the whole account before you rely on a second serial.
7. Give each sending channel its own serial.
- Invoices sent without anyone watching - after an online payment, by the scheduled batch Send, at the point of sale - stop with a note in the invoice chatter when their e-invoice cannot be issued. With Issue Earlier Invoice First on, an e-invoice waits while an earlier invoice of the same serial is not issued yet; invoices of another serial never hold it back.
- So give each channel its own serial: one for online sales, one for the point of sale, one for the invoices you enter by hand. Set each serial on the sales journal of its channel - the Invoice Journal of the point of sale, the Invoicing Journal of online orders (the first sales journal when the order names none) - and leave the Default Serial of the settings empty so that the journal decides. A late invoice entered by hand then never holds back an automatic channel. A serial set on a customer comes first in every channel: the invoices of that customer use it online, at the point of sale and by hand alike.
- A stopped send is not retried by itself, and within one channel an unissued invoice holds back the later-dated invoices of its serial. Open them with E-Invoices to Issue on the sales journal of the Accounting dashboard and send them again with Send - one by one, or several selected in the list.
8. Adjust an issued e-invoice upward.
- An adjustment that lowers the amounts of an issued e-invoice is issued from Odoo with every provider: create the Credit Note of the invoice and send it.
- An adjustment that raises them is issued from Odoo for S-Invoice, as the guide of the S-Invoice
module explains. For MISA meInvoice and VN-Invoice:
- With the Debit Notes module installed, open the issued invoice, choose Debit Note in its gear menu, check the lines of the debit note and confirm it. The debit note records the increase in the books and has no E-Invoice Serial, so sending it issues no e-invoice.
- On the provider's portal, issue the increase adjustment of the original e-invoice.
- When the debit note is in fact a new sale, an accounting administrator chooses its E-Invoice Serial in the E-Invoice tab while it is a draft: it is then issued as a new e-invoice, like any invoice.
Legal basis
Vietnamese e-invoicing runs under two instruments in force from 1 July 2026:
- Decree 254/2026/ND-CP (Nghị định 254/2026/NĐ-CP), which repeals Decree 123/2020/ND-CP in full, Article 1 of Decree 41/2022/ND-CP, and Decree 70/2025/ND-CP in full.
- Circular 91/2026/TT-BTC (Thông tư 91/2026/TT-BTC), which ends Circular 32/2025/TT-BTC.
Three of their provisions shape how this module behaves.
A written agreement comes before an adjustment or a replacement. Where the buyer is an economic organisation, another organisation, a business household or an individual trader, the seller and the buyer draw up a written agreement identifying the error before the corrected e-invoice is issued; a private individual buyer receives a notice instead. Note that an individual trader counts as a business buyer here, not as a private individual. This requirement applies only to a point-b) correction; a point-a) error is notify-only and never produces a corrected e-invoice. No written agreement is required when the seller transfers e-invoice data through the E-Invoice Data Summary Table, when it transfers transaction-detail data through the Transaction Detail Information Table, or for goods sold on an e-commerce platform or another digital platform. Two settings tell the module which of those applies to you. Set E-Invoice Data Transfer Method in the Vietnam E-Invoicing settings to record how your company reports to the tax authority - it is your standing registration, so it applies to every invoice until you change it. Tick Sold on an E-Commerce or Digital Platform on the invoice itself for a sale made through a platform, because the same seller trades on and off a platform on the same day. When one of them applies the wizard proceeds without an agreement name; otherwise it asks for one and will not continue until you supply it. (Point b.2, Clause 1, Article 10, Circular 91/2026/TT-BTC, whose closing paragraph refers to Points a.1 and a.2, Clause 3, Article 16, Decree 254/2026/ND-CP.)
An issued e-invoice is corrected, never cancelled. Correction is by adjustment or by replacement, whenever the invoice was originally issued - an invoice first issued under Decree 51/2010/ND-CP, Decree 04/2014/ND-CP, Decree 123/2020/ND-CP, Decree 70/2025/ND-CP or Circular 32/2025/TT-BTC is corrected the same way (Clause 2, Article 24, Circular 91/2026/TT-BTC). This is why, from 1 July 2026, the cancel action is blocked once an e-invoice has been issued. An e-invoice that the provider has created but not signed yet is not an issued e-invoice, so it can still be deleted. Clause 1, Article 10 enumerates every route open to a seller who finds an issued e-invoice wrong - notify the buyer, issue an adjustment, or issue a replacement - and cancellation is not among them (Clause 1, Article 10, Circular 91/2026/TT-BTC).
A replacement e-invoice carries the prescribed notation. The replacement states Thay thế cho hóa đơn Mẫu số... ký hiệu... số... ngày... tháng... năm, with the date written day, then month, then year. The module fills this in for you from the invoice being replaced. (Point b.2, Clause 1, Article 10, Circular 91/2026/TT-BTC.)
Keep the written agreement available: the tax authority, or another competent state agency, may ask the seller to produce it.
The form of a correction is yours to choose. On an adjustment e-invoice, an increase is written with positive amounts and a decrease with negative amounts (Point c, Clause 6, Article 10, Circular 91/2026/TT-BTC). The module lets you adjust or replace any issued e-invoice and blocks neither form. Once an e-invoice has been corrected by an adjustment or by a replacement, every later correction of it takes the same form as the first one: an e-invoice already adjusted is corrected again by an adjustment, not replaced (Point a, Clause 6, Article 10, Circular 91/2026/TT-BTC). A wrong e-invoice generated from a cash register is corrected by a replacement e-invoice (Point c, Clause 1, Article 10, Circular 91/2026/TT-BTC), while goods the buyer returns are recorded by an adjustment (Point c.1, Clause 5, Article 10, Circular 91/2026/TT-BTC).
This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file).
You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one).
It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software.
The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.