Effective project management doesn't end with task execution, it extends into how services are billed and payments are tracked. In service-oriented businesses, especially those handling client projects, a clear and adaptable invoicing system is crucial to ensure timely payments, financial transparency, and client satisfaction. Odoo 18, with its robust and integrated Project module, offers a suite of flexible invoicing policies that align seamlessly with different business models and service delivery methods.
Whether your organization bills clients based on actual work hours, fixed service costs, milestone achievements, or delivered quantities, Odoo 18 provides comprehensive tools to configure, track, and automate these processes. From configuring service products and linking them to projects and tasks, to generating accurate and timely invoices, each step is designed to enhance efficiency and precision in billing. This blog delves deep into the various Service Invoicing Policies available in the Odoo 18 Project Module, including Timesheet-based invoicing, Milestone billing, Prepaid/Fixed pricing, and Delivered Quantity (Manual) methods.
In Odoo 18, the process of invoicing a project has been designed to be highly structured and efficient, offering users a streamlined experience for managing billable tasks. The journey toward project invoicing begins within the project management section, where users must first create or select the project they wish to invoice. Before initiating any billing operations, it is crucial to activate the Billable feature from the settings menu within the project management module. This activation is essential, as it enables the necessary billing functionalities that allow the system to support different invoicing methods tailored to the nature of the services offered.

Once the Billable option is turned on, users can navigate to the Invoice tab available within the project settings.

Users can input key billing details such as the cost per service unit, the total number of hours worked, and the names of employees contributing to the task.
Odoo 18 offers four primary invoicing methods under the project management module, each tailored to specific business models: Timesheet-Based Invoicing, Fixed or Prepaid Pricing, Invoicing Based on Delivered Quantities (Manual), and Milestone-Based Invoicing. Each of these policies caters to different operational workflows. The Timesheet method is ideal for organizations that charge clients based on the actual hours worked. In this method, users must create a sales order and configure its invoicing policy to align with timesheet data.

When dealing with service-type projects, choosing the appropriate invoicing policy is essential. Available options include:
- Prepaid/Fixed Pricing, which allows businesses to invoice clients for the entire service quantity upfront or upon order confirmation.
- Based on Timesheets, which ensures clients are invoiced strictly based on recorded work hours.
- Based on Milestones, which supports staged payments according to progress milestones within the project timeline.
- Based on Delivered Quantity (Manual), which enables billing based on manually updated progress of service delivery.
For projects configured for milestone invoicing, users can break down the billing process into discrete stages such as design, development, testing, and delivery. Each phase can be invoiced separately, offering greater flexibility and financial clarity for both service providers and clients.

After confirming the relevant sales order, invoicing can be initiated directly from the sales order interface. A smart panel link within the project view provides access to sales orders and includes a Create Invoice button.

Clicking this button opens a pop-up window where users can specify the invoice type, either a Regular Invoice or a Down Payment Invoice. Before confirming, users should verify that the quantities being invoiced match those that have been delivered or completed. After reviewing the draft, users can finalize the invoice by clicking Confirm, thus completing the billing cycle.
Invoicing Based on Timesheets
One of the most accurate and transparent billing methods in Odoo 18 is Timesheet-Based Invoicing. This process allows businesses to charge clients according to the precise time their team members spend on specific tasks. To enable this method, a service product must be appropriately configured. Within the Sales module, users can go to Products > Products, select or create a service product, and set its Product Type to Service. Then, they must adjust the Invoicing Policy to Based on Timesheets and define the Create on Order field to either Project & Task or Task, depending on whether a new project or a task should be generated for each order.

Once the sales order is created using this configured service product, Odoo automatically creates the linked project and tasks in the Project module.

Users can easily access the related project or task using the Projects or Tasks smart buttons visible on the sales order page. These entries can also be accessed directly from the Project module.
To begin recording time against the task, users should click on the Tasks smart button, which opens the associated task form.

Within this form, the Timesheets tab allows for employee assignment and time logging. Time entries can be added manually by clicking Add a line, selecting the date and employee, and optionally adding a short description of the task completed. The number of hours worked is then recorded in the Time Spent field.

As entries are added, the system automatically updates the Allocated Time percentage and displays cumulative hours under Time Spent and Time Remaining fields.
Once time is logged, the user can return to the sales order to generate an invoice.

The Delivered column in the Order Lines tab will reflect the logged time. By clicking Create Invoice and selecting Regular Invoice, a draft invoice is generated showing the worked hours under the Invoice Lines tab, complete with analytic account details.

Upon review and confirmation, the invoice is finalized, allowing for precise billing based on actual time spent.
Invoicing Based on Project Milestones
For large-scale or high-budget projects, Milestone-Based Invoicing offers a practical and phased approach. Each milestone denotes a key phase of the project, such as design, implementation, or testing, and enables clients to pay in manageable intervals. In Odoo 18, each milestone is treated as a distinct product. To configure this, users must navigate to Sales > Products > Products, and either select an existing product or create a new one. The Invoicing Policy should be set to Based on Milestones, and the Create on Order field adjusted as needed to define whether a project, task, or both will be created upon order confirmation.

After setting up milestone products, users can begin the process by creating a Sales Quotation and adding the milestone-based products in the Order Lines section.

Once the quotation is confirmed, it becomes a sales order, and smart buttons appear based on the product’s Create on Order configuration, one of which is the Milestones button. This button opens a dedicated interface for milestone management.

Tasks can be created for each milestone either manually or based on product settings. From the Tasks smart button, each task form includes a Milestone field, which users must fill to link the task with a specific milestone.

To ensure proper configuration, repeat the same process for each task that corresponds to a project milestone. Once all tasks are correctly linked to their respective milestones, employees can begin updating their progress directly within each task. When a task is fully completed, it indicates that the milestone it is linked to has been achieved.
At this point, you can move forward with invoicing that milestone. To do this, go back to the sales order.

On the sales order form, click the Milestones smart button to view the list of milestones associated with that order. Find the milestone linked to the completed task and check the box in the Reached column to mark it as achieved.

This step confirms that the milestone is complete and ready for billing. Next, return to the main sales order page by clicking View Sales Order or using the breadcrumb links. You will now see that the milestone’s line item shows an update in the Delivered column, indicating that it has been marked as delivered.

To create an invoice for this milestone, click the Create Invoice button at the top-left corner of the sales order page.

Once the invoice is created and the customer makes the payment, the Invoiced column on the sales order will update accordingly.

You will also notice a new Invoices smart button at the top of the page, which gives quick access to all invoices linked to that particular order. Follow this process for each milestone as it is completed. Keep generating invoices and recording payments until all project milestones are completed, billed, and the full order has been paid.
Invoicing Based on Prepaid/Fixed Pricing
For service providers who prefer upfront or fixed-fee billing, Prepaid or Fixed Pricing offers a straightforward solution. The service product should be configured with the Product Type set to Service and the Invoicing Policy as Prepaid/Fixed Price.

After setting up the product, users can create a sales order and confirm it. The system expects full payment for the ordered services, either at the beginning or upon project delivery.

Once the sales order is confirmed, the related project can be accessed from the smart button. The Create Invoice button here enables users to choose from various invoice types, Regular Invoice, Down Payment (percentage), or Down Payment (fixed amount). After selecting the desired invoice option, the system generates the invoice, which can be confirmed from the Invoices tab in the sales order view.

This ensures proper tracking and linking of fixed-price services with their respective invoices.
Invoicing Based on Delivered Quantity (Manual)
The Delivered Quantity (Manual) method offers flexible billing based on services that are completed and delivered, rather than predefined metrics. This is particularly useful when service delivery is progressive and not strictly tied to milestones or hourly tracking.

To configure this option, the product must be set with the Invoicing Policy as Based on Delivered Quantity (Manual) and the Create on Order field as Project and Task.

When a sales order is created using this service product, Odoo automatically generates the associated project and task entries. However, the Delivered Quantity will initially show as zero. As work progresses, users can manually update the Delivered Quantity in the sales order line to reflect the actual services completed.

Once updated, the Create Invoice button can be used to generate a draft invoice.

After review and validation, the invoice can be confirmed and accessed via the Invoices smart button.

This approach ensures that clients are billed only for the services actually rendered, offering transparency and control over the billing cycle.
This comprehensive invoicing system in Odoo 18 provides businesses with the flexibility to match their service delivery models, whether they rely on tracked hours, fixed pricing, staged milestones, or progressive delivery. By carefully selecting and configuring the appropriate invoicing policy, businesses can ensure accurate, transparent, and efficient project billing across a wide range of service engagements.
To read more about How to Invoice Time & Material for Odoo 17 Project, refer to our blog How to Invoice Time & Material for Odoo 17 Project.