Odoo Community
Odoo 19.0
Payroll + Meals
Vietnam
Meal allowance tax exemption applied on every Vietnamese payslip
For accountants and payroll managers of companies in Vietnam that pay a cash meal allowance
Exempt the cash meal allowance from the Vietnamese personal income tax up to the statutory cap.
Is this you?
‣The tax-exempt part of the meal allowance is calculated by hand in a spreadsheet after the payslips are computed.
‣When the law changes the exempt amount, nobody is sure which payslips used the old figure.
‣Employees ask why their personal income tax differs from one month to the next.
‣Each subsidiary may follow its own rule, and payroll keeps a list of exceptions.
What changes
Tax base right the first time
The Personal Tax Base line on the payslip already leaves out the exempt part of the meal allowance.
One place for the amount
The amount in force is a record the Payroll Administrator maintains in Statutory Amounts, not a figure buried in a formula.
Old payslips stay right
A new amount is added with a start date; each payslip uses the amount in force at the end of its period.
Company rules supported
A company can have its own record that takes precedence over the national one.
How it works
1
Keep the amount
The Payroll Administrator keeps the monthly tax-exempt amount in Statutory Amounts. A shipped record is an example value.
2
Compute the payslip
The Payroll Officer computes the payslip as usual.
3
Check the tax base
The meal allowance is exempt up to the amount; the rest is taxed. Meals served in kind and the 13th-month payslip are never exempted.
Key Features
⚖
Exemption up to a monthly amount
The part of the cash meal allowance up to the amount in force is left out of the income subject to personal income tax.
✎
Amount maintained as data
The amount is a record of Statutory Amounts with a validity period, edited by the Payroll Administrator when the law changes.
⚑
Company-specific amount
A record for one company takes precedence over the national record.
☰
All tax policies
Progressive, flat rate and withholding after the end of the labour contract all use the exempt amount.
⚙
Applied to new Vietnamese companies
The exemption is added to the Personal Tax Base rule when the payroll rules of a Vietnamese company are generated.
Who it is for
Payroll Administrator
Keeps the exempt amount up to date and adds a new record when the law changes.
Payroll Officer
Computes payslips and checks the personal tax base without recalculating the meal allowance by hand.
Best for: companies in Vietnam that pay a meal allowance in cash on the payslip.
Keep the tax-exempt meal allowance amount
Meal allowance and personal tax base on the payslip
The exemption in the Personal Tax Base rule
FAQ
Is the exempt amount fixed by the software?
No. It is a record in Statutory Amounts that the Payroll Administrator maintains. The module ships one record as an example; check it against the regulation in force.
What happens when the amount changes?
Close the old record with an end date and add a new one from the new date. Each payslip uses the amount in force at the end of its period.
Are meals served in kind exempted here?
Meals served in kind through meal orders are not paid on the payslip, so they do not enter the taxable income at all.
Does the 13th-month payslip benefit?
No, the 13th-month payslip is not exempted.
Can one employee exceed the amount in a month?
The amount applies to each payslip. With several regular payslips in the same month, the Payroll Administrator adjusts the later ones.
Technical Requirement
- Odoo version: 19.0
- Edition: Community
- Required apps: Vietnam - Payroll Localization (l10n_vn_viin_hr_payroll), HR Meal Order & Payroll Integration (to_hr_payroll_meal)
- License: OPL-1
Vietnam - Payroll Meal Localization
Who this guide is for: the Payroll Administrator who keeps the tax-exempt meal allowance amount up to date,
and the Payroll Officer who computes payslips and checks the personal income tax base. The Odoo
administrator only needs the setup note below.
Note
Extends HR Meal Order & Payroll Integration - see its documentation:
to_hr_payroll_meal.
Overview
In Vietnam, a meal allowance paid in cash is free of personal income tax up to a monthly amount per
employee. This module applies that rule on the payslips of Vietnamese companies: the meal allowance
is left out of the income subject to tax up to the amount in force, and the part above it is taxed.
How it flows
- Amount in force - the Payroll Administrator keeps the monthly tax-exempt amount in
Payroll > Configuration > Payroll Entry > Statutory Amounts. The module ships one record as an
example: 1,200,000 VND per employee per month from 1 July 2026 (Decree 253/2026/ND-CP, Article 8.2.g).
The software does not fix the law: when it changes, the record is edited by the Payroll Administrator.
- Payslip - when the Payroll Officer presses Compute Sheet, the Personal Tax Base line
already leaves out the exempt part of the Meal Allowance line.
What the module does and does not exempt:
- Only the meal allowance paid in cash on the payslip is exempt. Meals served in kind through meal
orders are not paid on the payslip and never enter the taxable income.
- The exemption applies under every tax policy: progressive, flat rate (non-residents, short-term
contracts) and withholding after the end of the labour contract.
- The 13th-month payslip does not benefit from the exemption.
- The amount used is the one in force at the end date of the payslip period. With no record in force,
the meal allowance stays fully taxable.
| Role |
What they do |
Access right to assign |
| Payroll Administrator |
Keeps the tax-exempt meal allowance amount up to date. |
Payroll / Administrator |
| Payroll Officer |
Computes payslips and checks the personal tax base. |
Payroll / Officer |
Setup (for the Administrator)
The module installs itself with Vietnam - Payroll Localization and HR Meal Order & Payroll
Integration. No setting has to be switched on.
For every Vietnamese company, the exemption is added to the Personal Tax Base salary rule when the
company's payroll rules are generated, and once when the module is installed. A change you make later
to that rule is kept.
For a company switched to Vietnam after its payroll rules were generated, add the exemption to the
rule yourself. Open Payroll > Configuration > Payroll Entry > Salary Rules, open the
rule Personal Tax Base of that company and add these lines at the end of its Python code:
if not payslip.thirteen_month_pay:
result = max(result - min(max(categories.MEAL, 0), payslip.get_statutory_amount('VN_MEAL_ALLOWANCE_TAX_CAP')), 0.0)
Assign the access rights in Settings > Users & Companies > Users: Payroll Administrator to the
Payroll Administrator and Payroll Officer to the Payroll Officer.
Payroll Administrator: keep the tax-exempt amount up to date
Open Payroll > Configuration > Payroll Entry > Statutory Amounts.
Open the record with the code VN_MEAL_ALLOWANCE_TAX_CAP. It shows the Amount, the
Currency and the Validity period.
When the law changes, set an end date in Validity on the old record, then press New and
create a record with the same code, the new Amount and the new start date. Payslips use the
amount in force at the end of their period, so old payslips keep their old amount.
To give one company its own amount, for example the amount it set for itself before 1 July 2026,
create a record with the same code and choose the Company. A record of a company wins over the
national one.
Payroll Officer: compute the payslip and check the tax base
Open Payroll > Payslips, open the payslip of the employee and press Compute Sheet.
Open the tab Details By Salary Rule Category.
Check the lines. The Payroll Officer can view the Statutory Amounts but only the Payroll Administrator can change them. In the example, the meal allowance is 1,800,000 VND: 1,200,000 VND are exempt and
600,000 VND are taxed, so the Personal Tax Base is the gross salary, less the personal
deduction, less the exempt 1,200,000 VND.
Limitation
The amount applies to each payslip. When an employee has several regular payslips in the same month (a
change of contract in the middle of the month, a supplementary payslip), each of them exempts up to the
amount. The Payroll Administrator then adjusts the Personal Tax Base line of the later payslips so that the
month does not exempt more than the amount.
FAQ
The meal allowance is fully taxed on my payslip. Check that a record with the code
VN_MEAL_ALLOWANCE_TAX_CAP is in force at the end of the payslip period, that the payslip is not a
13th-month payslip, and that the Personal Tax Base rule of the company carries the exemption (see
Setup).
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.