Build-to-order Odoo portal where staff update info, request leave, view payslips, clock in/out and file expenses. One-time license from $299.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Build-to-order Odoo portal where staff update info, request leave, view payslips, clock in/out and file expenses.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Self-edit personal and employee info — portal users update address, phone, emergency contact and bank details on their own hr.employee record, gated by record rules so no one sees another person's data
Leave requests from the portal — create hr.leave records against your configured leave types, with an approval activity routed to the manager via mail.thread and server actions
Live leave balance widget — a compute field (@api.depends) surfaces allocated, taken and remaining days per leave type without exposing the payroll backend
Payslip access and PDF download — employees view and download their own hr.payslip via a QWeb report, scoped so each user reaches only their payslips
Contract and document visibility — read-only access to the employee's own contract terms and HR documents attached to their record
Attendance check-in / check-out — clock in and out from the portal or mobile, writing hr.attendance with optional geolocation and kiosk-style UI
The Employee Self-Service Portal is a build-to-order Odoo module that ECOSIRE designs, develops, installs and supports on your Odoo 17, 18 or 19 instance. This is not a pre-packaged apps.odoo.com download you install yourself — our team scopes it to your HR policies, builds it against your database, and hands you a documented, tested module after a typical 2–4 week lead time.
Odoo already stores everything about your people in hr.employee, hr.leave, hr.payslip, hr.attendance, hr.expense and account.analytic.line (timesheets). What most companies lack is a single, safe, mobile-friendly front door that lets each employee interact with their own records — and nobody else's — without an HR user seat or backend access. That is exactly what we build.
We extend the Odoo web portal (portal.mixin, controllers under /my/..., rendered with QWeb and OWL) so every employee gets a clean self-service workspace. Under the hood the security model is the point: we ship a tightly scoped ir.model.access.csv plus record rules (ir.rule with domain_force like [('employee_id.user_id','=',user.id)]) so a portal user can only ever read and write their own data. No employee can browse the org's payroll, see a colleague's contract, or reach the backend.
Where standard behaviour needs to move, we do it the Odoo-native way: compute fields with @api.depends for live leave balances, automated actions and server actions for approval routing, activities and mail.thread for notifications, and QWeb reports for printable payslips. Everything is a proper installable module with a real __manifest__.py, upgrade-safe migrations, and no core patching — so your instance stays clean and Odoo upgrades stay boring.
Off-the-shelf portal apps assume a generic HR policy. Yours isn't generic — your leave accrual rules, approval chains, payslip visibility, expense categories and attendance geofencing are specific. We build the portal around your configuration, wire it to your leave types and expense products, match your brand, and translate it into your languages. You get source code you own, documentation, admin training, and a support window — not a black-box you can't change.
Works with both Odoo Community and Enterprise. If you're on Enterprise we integrate cleanly with the mobile app and the modern payroll/attendance modules; on Community we build equivalent front-end flows so you get the same self-service outcomes without the Enterprise apps.
Drowning in routine requests — address changes, leave forms, payslip re-sends, expense chasing. Wants employees to self-serve their own data so the HR team moves from data entry to approval and strategy, without handing anyone backend access.
Owns the Odoo instance and won't tolerate core patches or a fragile app that breaks on the next upgrade. Wants a clean, documented module with real security rules and source code they can read, maintain and hand to auditors.
Manages field, retail or factory staff who have no backend Odoo seat. Needs mobile check-in/out, expense capture with receipts and leave requests from a phone, all flowing into the same Odoo records the office team already uses.
Buy the license on ecosire.com and download the Employee Self-Service Portal module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for Employee Self-Service Portal, and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Fits your exact leave / expense / approval policy | ||||
| Employee-only data isolation via record rules (ir.rule) | ||||
| Self-service without a paid backend user seat | ||||
| Payslip, attendance, expense and timesheet flows in one portal | ||||
| Delivered as clean, upgrade-safe, non-core-patching code you own | ||||
| Brand + multi-language customization of the portal | ||||
| Documentation, admin training and a support window included | ||||
| Predictable delivery cost and 2–4 week timeline |
This is a build-to-order module, not an instant apps.odoo.com download. After you order, ECOSIRE scopes your HR policies, builds the module against your Odoo 17/18/19 database, tests it on staging, and deploys it. Typical lead time is 2–4 weeks depending on how many flows (leave, payslips, attendance, expenses, timesheets) you enable and the complexity of your approval chains. You'll get a timeline confirmation at kickoff.
Every build includes a defined post-launch support window for bug fixes and adjustments, plus written docs and an admin training session. Because the module is delivered as clean, non-core-patching code, it's upgrade-safe — we can quote a compatibility pass when you move between Odoo 17, 18 and 19. Extended support and enhancement retainers are available if you want us on call long-term.
Both. On Enterprise we integrate with the mobile app and the modern payroll and attendance modules. On Community we build equivalent portal flows so you get the same self-service outcomes (leave, payslips, attendance, expenses, timesheets) without needing Enterprise-only apps. Tell us your edition and version at kickoff and we build to match.
No — that's the core of the design. We enforce access with ir.model.access.csv and record rules (ir.rule) using domains like [('employee_id.user_id','=',user.id)], so a portal user can only ever read and write their own HR records. Portal users have no backend access and cannot browse org-wide payroll, attendance or contracts.
That's exactly why it's build-to-order. We wire the portal to your existing leave types, expense categories and approval chains rather than imposing generic ones. Because we extend Odoo natively (portal controllers, compute fields, automated actions) without patching core, your existing customizations and future upgrades stay intact.
Yes. The module stores everything in standard Odoo models, which are reachable through Odoo's XML-RPC / JSON-RPC API. That means a future kiosk, badge reader or mobile app can read and write the same attendance, leave and expense records. We can scope that integration as a follow-on phase.
Build-to-order Odoo portal where staff update info, request leave, view payslips, clock in/out and file expenses.