End of Service Benefits (Gratuity) for Odoo 19 Community documentation
A guide to the gratuity: the policy, the settlement and its calculation, the reasons and the shares, the additions and deductions, the statement and the limits.
Documents version 1.0.0Updated Oct 23, 2026
Start here
In plain words: When an employee leaves, someone opens a spreadsheet, remembers the tiers, subtracts the unpaid leave, applies the share for a resignation, and hopes the figure is right. End of Service Benefits does it in Odoo Community with a policy you configure: days of wage per year of service by tier, an optional cap, the share payable for each reason of leaving and each length of service, the unpaid leave taken off the service, the leave pay, additions and deductions, and a step by step breakdown to print and sign.
Tip: The three policies delivered with the module are examples to adapt: they do not replace your labour law. Check the rules that apply to your country and your contracts, and configure the policy accordingly.
What you get
| Feature | What it does |
|---|---|
| Policies you configure | Tiers (from, to, days of wage per year), a cap in months of wage, and the days in a month and in a year. |
| Share by reason | The percentage payable for each reason of leaving and each length of service, for example a resignation under two years. |
| Three examples | A flat month per year, a 21/30 days tiered policy with a cap, and a tiered one with reduced shares on resignation. |
| Settlement | The employee, hire date, last day, unpaid leave days, monthly wage, reason and unused leave days. |
| Breakdown | Years of service per tier, the cap, the share, the leave pay, the additions and deductions, and the net. |
| Statement | A PDF statement with the breakdown and the signature boxes (employee, HR, finance). |
| Approval and payment | Draft, approved, paid; an employee cannot have two open settlements. |
| On the employee | An End of service smart button on the employee form. |
| Arabic | Everything is translated and works right to left. |
Requirements
| Item | Details |
|---|---|
| Odoo | 19.0 (Community or Enterprise) |
| Apps needed | Employees (hr) |
| License | OPL-1 (Odoo Proprietary License v1.0) |
Install
- Unzip the package. Inside is
taqnix_end_of_service.zip; unzip it to get the foldertaqnix_end_of_service. - Copy the folder into one of the
addons_pathfolders of your Odoo server and restart Odoo. - Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
- Remove the “Apps” filter, search End of Service Benefits (Gratuity) and press Install.
# or from the command line ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_end_of_service --stop-after-init
Set up the policy
In plain words: Open Employees → End of service → Policies. Adapt one of the examples or create your own.
| Setting | Meaning |
|---|---|
| Days per year of service | Each tier pays a number of days of wage for each year of service that falls inside it (From 0 To 5: 21 days; From 5 To empty: 30 days). |
| Cap (months of wage) | The gratuity cannot exceed this many months of wage. 0 means no cap. |
| Days in a month | The daily wage is the monthly wage divided by this number (30 by default). |
| Days in a year | The years of service are the days of service divided by this number (365 by default). |
| Share payable | The percentage paid for a reason of leaving and a length of service. A line for Any reason applies to the reasons without a line of their own; when no line applies, the full amount is paid. |
Tip: The three policies delivered with the module are examples to adapt: they do not replace your labour law. Check the rules that apply to your country and your contracts, and configure the policy accordingly.
Calculate a settlement
In plain words: Employees → End of service → Settlements → New, or the End of service button on the employee. Choose the employee (the hire date, the last day and the wage are proposed), the policy and the reason of leaving. Enter the unpaid leave days that do not count as service, and the unused leave days to pay.
| Step | How it is calculated |
|---|---|
| Service | Last day minus hire date plus one, minus the unpaid days, divided by the days in a year. |
| Daily wage | Monthly wage divided by the days in a month. |
| Gratuity before the cap | For each tier: the years inside it times its days per year times the daily wage. |
| Cap | The gratuity cannot exceed the cap in months of wage. |
| Share | The result is multiplied by the percentage for the reason and the length of service. |
| Leave pay | Unused leave days times the daily wage. |
| Net to pay | Gratuity plus leave pay plus additions minus deductions. |
Reasons and shares
In plain words: The same service gives a different gratuity depending on why the employee leaves: with the reduced policy, a resignation after four and a half years pays a third of the gratuity, while a termination pays all of it.
Additions and deductions
In plain words: On the Additions and deductions tab add what is paid on top (notice pay, a bonus) and what is taken off (a staff loan, an advance). Amounts are positive: the type tells which way they go.
Approve, pay and print
In plain words: Approve locks the figures (it needs a wage), Mark as paid records the payment date and your reference, and Print the statement gives the PDF with the breakdown and the signature boxes. A settlement that is approved or paid cannot be deleted: cancel it, which lets you calculate it again.
Who can do what
| Who | Can |
|---|---|
| HR officers | Calculate, approve and pay settlements; read the policies. |
| HR administrators | Also configure the policies and delete drafts. |
| Other users | No access. |
Arabic and right to left
Limits
| Limit | Detail |
|---|---|
| No legal advice | The three policies delivered with the module are examples to adapt: they do not replace your labour law. Check the rules that apply to your country and your contracts, and configure the policy accordingly. |
| No accounting entry | The settlement is a statement and a status: the payment is booked as you do for your payroll. |
| One wage | The gratuity is calculated on the monthly wage you enter, not on a history of wages. |
| Leave balance | The unused leave days are entered by hand. |
For developers
In plain words: Skip this chapter if you only use the module.
eos = env['taqnix.eos'].create({'employee_id': employee.id, 'policy_id': policy.id, 'reason': 'resignation',
'date_start': '2018-03-01', 'date_end': '2026-10-31', 'wage': 6500.0, 'leave_days': 12})
eos.service_years, eos.gratuity, eos.net
eos.action_approve()
eos.action_pay()Troubleshooting
| Problem | What to do |
|---|---|
| The gratuity is zero | Check the share lines: a line for the reason and the length of service may give 0%. |
| The wage is empty | Enter the monthly wage: it is proposed from the employee only if it is set there. |
| The employee already has a settlement | Open it, or cancel it to calculate another. |
| The unpaid days are more than the service | Enter fewer unpaid days. |
Updating and removing
Replace the folder with the new version, restart Odoo and run -u taqnix_end_of_service. Your policies and settlements are kept.
Support
Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.