Skip to main content
iVentureTeam
Odoo 20

Odoo 20 for Professional Services: Timesheets, Billing and Margins

Odoo for professional services in Odoo 20: timesheets, time and materials billing, employee rates, milestone invoicing and the new project margin reports.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
October 30, 202613 min read0 views
Odoo 20 for Professional Services: Timesheets, Billing and Margins cover

Consulting, legal, accounting, engineering and agency firms sell time, so the system must follow every hour from task to invoice. Our Odoo implementation services set up that chain for firms that bill by the hour, by milestone or by retainer.

This guide is for partners, finance leads and delivery heads who run billable projects. To price an Odoo project itself, read our guide on fixed-fee vs time and materials for Odoo projects instead.

What does Odoo for professional services cover?

Odoo for professional services covers the full chain from won deal to paid invoice: CRM, Sales, Project, Timesheets, Planning, Accounting and Expenses on one database. Each app owns one step, and the links between them carry the hours and the money.

StepOdoo appWhat it does for a services firm
Win the workCRMTrack opportunities; in Odoo 20, create a project straight from an opportunity
Agree the scopeSalesQuote service products with an invoicing policy and rate
Plan the teamPlanningBook people on projects and, in Odoo 20, on specific tasks
DeliverProjectTasks, milestones, client portal and Gantt view
Record timeTimesheetsBillable and non-billable hours per task and employee
Bill and reportAccountingInvoices, analytic accounts and project margins

Odoo project management sits in the middle. A confirmed sales order can create the project and its tasks for you, so time logged later lands on the right order line.

How do Odoo timesheets work in Odoo 20?

Odoo timesheets record who worked how long on which task, and each billable entry links to a sales order item so it can be invoiced. Users must be set up as employees to log time, and each project must have timesheets turned on.

Per the Odoo Timesheets documentation, access has four levels: none, own timesheets, all timesheets (view, edit and validate), and administrator.

Time can be logged in the grid, on tasks, or on Helpdesk tickets.

Odoo 20 adds features that cut missed hours. Our Odoo 20 Timesheets release notes cover all five changes:

  • Timer from anywhere: a top-bar timer lets staff log time from Sales, Helpdesk or Discuss without opening Timesheets.
  • Timesheet assistant: suggestions built from ActivityWatch, a local activity tracker; raw activity stays on the device.
  • Sharing rules: assistant rules can apply to everyone, chosen departments or only their author.
  • Side activities: quick checks of chat or email do not split the task you were working on.
  • Time thresholds: an activity appears as a suggestion only after a set duration.

Odoo also supports billable time targets per employee. Each user sees logged billable time against a monthly target, in red below target and green once it is met, with an optional leaderboard.

How does Odoo time and materials billing work?

Odoo time and materials billing invoices the hours logged against a service product set to "Based on Timesheets", plus any expenses you re-invoice. The delivered quantity on the sales order rises as people log time, and you invoice what was delivered.

Odoo's time and materials guide sets it up in five steps:

  1. Install Project and Accounting, and turn on Analytic Accounting.
  2. Turn on Timesheets in the Project settings.
  3. Create a service product with the invoicing policy "Based on Timesheets".
  4. Set "Create on Order" to Project and Task, so the sales order builds the project.
  5. Confirm the order, log time on the task, then click Create Invoice on the order.

Expenses work the same way. An expense with "Customer to Reinvoice" set to the order flows onto the next invoice, as long as the order holds a service billed on timesheets, milestones or delivered quantities.

Odoo 20 also adds a Services and Materials option in Sales. It lists the re-invoiceable costs on each order (expenses, vendor bill lines and timesheets), and you re-invoice each at a set amount or at cost.

Task rate, project rate or employee rate: which should you use?

Use employee rate when the same service bills at different prices by seniority, project rate for one hourly price on a project, and task rate when tasks map to different services. Odoo works out the pricing type from how you link the project to sales order items.

Pricing typeHow it billsBest for
Task rateEach task links to its own sales order itemDifferent services for different clients
Project rateOne sales order item for all time on the projectOne hourly price, whoever does the work
Employee rateEach employee maps to a sales order itemSenior and junior consultants on the same work

This is the most common gap we see. On the Odoo forum, a consulting firm asked how senior and junior staff can bill different rates on one task, and the thread never mentions employee rate.

Odoo's own field help in the Odoo 20 source says the employee rate "is preferable if your employees deliver the same service at a different rate." Map each consultant to a line on the order, for example senior at $150 an hour and junior at $90 (illustrative rates).

How does Odoo milestone invoicing work?

Odoo milestone invoicing bills a set share of the order when a project milestone is marked as reached. It suits phased work such as a discovery phase, a design phase and a go-live.

Per Odoo's milestone invoicing guide, you create a service product with the policy "Based on Milestones", sell it, then set a Delivered % on each milestone.

Reaching a milestone updates the order; it does not create the invoice by itself.

Project milestones can mark themselves as reached once all linked tasks are done or cancelled. The Gantt view shows each milestone in red if its deadline passes before it is reached.

One catch: project templates can hold milestones, but Odoo's docs say the Quantity (%) must be updated by hand on each new project. Check it at kickoff, or your first invoice will be wrong.

Which Odoo invoicing policy fits each engagement type?

Odoo for professional services: Which invoicing policy fits each engagement?

Match the invoicing policy to how the client buys: timesheets for open scope, milestones for phased scope, and ordered quantities for prepaid packs and retainers. Many firms mix two or three policies on one sales order.

EngagementOdoo setupInvoice trigger
Open-scope advisoryService based on timesheetsHours logged and invoiced each period
Phased projectService based on milestonesMilestone marked as reached
Prepaid hours packService on ordered quantitiesOrder confirmed; overages billed later
Monthly retainerSubscriptions linked to the projectEach billing period
Travel and costsExpenses or Services and MaterialsRe-invoiced at cost or a set amount
Wind-downClose Invoicing on the order (Odoo 20)Nothing more proposed for invoicing

Odoo 20 adds two useful options. "Invoice Overages" bills extra hours on a prepaid service in the same invoice, and "Close Invoicing" marks an order as fully invoiced, per our Odoo 20 Sales release notes.

How you price the engagement is a separate decision. Our fixed-fee vs time and materials guide, linked above, covers that trade-off; this guide covers how Odoo bills each model.

How do you track Odoo project profitability in Odoo 20?

In Odoo 20, project profitability lives in the Margins and Forecast Margins reports under Project reporting, because the profitability panel on the project dashboard was removed. Custom panels built for Odoo 19 will not load after the upgrade.

The numbers come from the project's analytic account. Revenue comes from timesheets, materials, invoices, subscriptions, down payments and re-invoiced expenses. Costs come from timesheets at each employee's cost, purchases, expenses, vendor bills and other costs.

Get three things right, or the margin report will mislead you:

  • Employee cost: set an hourly cost on every employee, or timesheet cost shows as zero.
  • Analytic links: every bill, expense and purchase for a project must carry its analytic account.
  • Non-billable time: log internal and rework hours too, so cost is complete even when revenue is not.

An illustrative example: 100 hours sold at $120 is $12,000 of revenue. At an average cost of $55 an hour, timesheet cost is $5,500 and the margin before other costs is $6,500. See our Odoo 20 Project release notes for the new reports.

What changed in Odoo 20 for services firms?

Odoo 20 brings a faster time capture, better client portals, CRM-to-project handoff and new margin reports. The table lists the changes that matter most to billable teams.

Odoo 20 changeWhy it matters
Timesheet timer in the top barFewer missed hours from busy staff
Projects from opportunitiesStart delivery from the won deal
Collaborators separated from followersShare a project with a client without spamming them
Tasks assignable to portal usersClients or subcontractors own tasks in the portal
Shifts linked to tasks in PlanningPlan the exact task, not just the project
Profitability panel replaced by reportsRebuild any custom margin views

Several of these sit in Community, including projects from opportunities and portal assignment. The timer, the assistant and task-linked shifts are Enterprise only.

Where do Odoo timesheet invoices go wrong?

Most timesheet invoicing errors come from entries with no sales order item, policies changed mid-project, or unapproved hours being billed. Each one has a simple fix.

  • Missing sales order item: on the Odoo forum, a user found that timesheets did not match the sales order; entries on manually created projects had no sales order item.
  • Policy changes: changing a product's invoicing policy after it is on a project does not update past links.
  • Wrong rate: one sales order line has one price, so mixed seniority needs employee rate mapping.
  • Unchecked hours: validate timesheets each week before you invoice, so clients see only reviewed time.
  • Templates: milestone percentages copied from a template need a manual check.

Before go-live, add the Sales Order Item column to the timesheet list and filter for blanks. Running that check weekly catches billable hours that never reach an invoice.

Odoo for professional services by industry

Each services sector bills differently, so the Odoo setup changes with it. The table shows where firms usually start.

IndustryPain or cost driverOdoo approachHow iVentureTeam helps
Management consultingSeniority-based ratesEmployee rate on billable projectsBuild rate cards per client
IT services and softwareRetainers plus change requestsSubscriptions plus timesheet servicesSet up overage billing
Engineering and architecturePhased feesMilestone invoicing with Gantt deadlinesDesign milestone templates
Marketing agenciesMany small client jobsTask rate plus re-invoiced costsConfigure media cost re-billing
Accounting and legalUnbilled time leakageTimer, assistant and weekly validationSet billable targets and reports
Healthcare servicesRates by day typeCustom rules on timesheet linesExtend timesheet billing logic

Software and SaaS firms that mix subscriptions with services can also see our page on Odoo ERP for SaaS and technology companies.

What does Odoo cost for a professional services firm?

Plan for Odoo licences per user plus a one-time implementation, and remember that staff who log billable hours usually need full users. Most services firms run on Standard unless they need Studio, multi-company or custom modules.

On the Odoo pricing page, the US price billed yearly is US$31.10 per user a month for Standard and US$61.00 for Custom. In India it is Rs 725 and Rs 1,350, with first-year discounts for new users.

The Light User at US$8.90 helps less here. Our Odoo 20 Light User guide explains that timesheets are not on the Light list, so only support staff who never log billable time can use it.

Our published Odoo implementation cost ranges are $3k to $9k for small firms (4 to 8 weeks), $9k to $27k for mid-size (8 to 14 weeks) and $27k to $150k+ for large projects (12 to 24 weeks).

Data migration adds $1.2k to $9k depending on the source system and years of history. For a first number, use our Odoo project estimate tool.

How iVentureTeam helps professional services firms on Odoo

Moving to Odoo? Price your project

iVentureTeam sets up Odoo so every billable hour reaches an invoice and every project shows a real margin. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.

  • Billing design: rate cards, invoicing policies and milestone templates mapped to how your clients buy.
  • Timesheet rollout: timer, assistant rules, billable targets and a weekly validation routine.
  • Margin reporting: employee costs, analytic accounts and Odoo 20 margin reports your partners trust.
  • Custom billing rules: day-type rates, client caps or approval steps through our Odoo customization services.
  • Data migration: clients, open projects and timesheet history moved from your current tool.

Odoo timesheet billing case study: Enabl Health

An Australian health-tech firm moved from manual time tracking and rate lookups to invoices built straight from timesheets. The project took 10 weeks of delivery plus ongoing support.

Enabl Health had to bill different rates for weekdays, weekends and holidays. Time was tracked with manual start and stop times, and the doctor and patient portals did not work well on phones.

We cleaned five data sets, then extended Odoo Timesheets, Payroll and Portal. Timesheets are now classified by day type, which drives the billing rate on each entry, and start and stop timers calculate time from timestamps.

Invoices now come from timesheet rates and day types without manual lookups, and portal users edit timesheets and upload documents on mobile. Read the Enabl Health timesheet-to-invoice case study.

The bottom line on Odoo for professional services

Odoo fits professional services firms that want timesheets, billing and margins in one system, as long as rates, policies and costs are set up with care. Odoo 20 makes time capture easier and moves margins into new reports.

Start with how your clients buy, then pick the invoicing policy and pricing type for each. Set employee costs and analytic links before go-live, and check unlinked timesheets every week.

Ready to turn billable hours into on-time invoices?

Plan my billing setup

Get an Odoo setup designed around your rate cards and billing models. Plan your Odoo timesheet and billing setup with us, call +91-90235-15208, or email business@iventureteam.com.

Frequently Asked Questions

Is Odoo good for professional services firms?

+

Yes for most small and mid-size firms. Odoo links CRM, sales, projects, timesheets and accounting in one database, so hours flow to invoices and margins. Very large firms with complex resource planning should test Planning in depth first.

Can Odoo bill different hourly rates per employee?

+

Yes. On a billable project, the employee rate pricing type maps each employee to a sales order item with its own price. Senior and junior consultants can then bill different rates on the same task.

How do I invoice timesheets in Odoo?

+

Sell a service product with the invoicing policy Based on Timesheets. Staff log time on the linked task, the delivered quantity rises on the sales order, and you click Create Invoice on the order.

Does Odoo support milestone billing?

+

Yes. Sell a service product set to Based on Milestones, give each milestone a Delivered %, and mark it as reached. Odoo updates the sales order, and you then create the invoice for that share.

Where is the project profitability report in Odoo 20?

+

Odoo 20 removed the profitability panel from the project dashboard. Use the Margins and Forecast Margins reports under Project reporting instead, and rebuild any custom panels made for Odoo 19.

Can Light Users log timesheets in Odoo 20?

+

No. Timesheets are not on Odoo's Light User list, so staff who log billable hours usually need a full user. Light Users suit staff who only use self-service HR, such as time off and expenses.

Is Odoo Timesheets available in Community?

+

Community can log time on project tasks. The Timesheets app features in the Odoo 20 release notes, such as the top-bar timer and the timesheet assistant, are Enterprise only.

How long does an Odoo setup take for a services firm?

+

Our published ranges are 4 to 8 weeks for small firms, 8 to 14 weeks for mid-size and 12 to 24 weeks for large projects. Custom billing rules and timesheet history migration add time.

Ready to put this into action?

Talk to iVentureTeam about Odoo, AI automation, or custom development — get a free, no-obligation consultation.