How to Configure Service Invoicing Policies in Odoo 18 Project: Complete Tutorial
By Braincuber Team
Published on February 27, 2026
You finished the project 3 weeks ago. The invoice still hasn't gone out. Your finance team is wrestling with Excel trying to figure out how many hours were actually billable versus what was quoted. Meanwhile, the client disputes the final amount because nobody tracked milestones properly. We've seen service companies leak $8,700/month on under-billed hours alone. Odoo 18 gives you 4 invoicing policies that tie billing directly to work delivery. Pick the wrong one and you're back to spreadsheet arguments. This complete tutorial shows you how to pick and configure the right one.
What You'll Learn:
- How to enable the Billable feature in Project settings
- How to configure Timesheet-based invoicing with logged hours
- How to set up Milestone-based invoicing for phased billing
- How to use Prepaid/Fixed Pricing for upfront billing
- How to bill using Delivered Quantity (Manual) for progressive services
- How to generate Regular Invoices and Down Payment Invoices
The 4 Invoicing Policies at a Glance
Before you configure anything, understand which policy fits your business model. Using Timesheet billing for a fixed-price project means you'll either over-bill or under-bill. Neither ends well.
| Policy | Bills Based On | Best For |
|---|---|---|
| Based on Timesheets | Actual hours logged by employees | Consulting, hourly services, T&M contracts |
| Based on Milestones | Completed project phases | Large projects with defined deliverables |
| Prepaid/Fixed Price | Full amount upfront or on confirmation | Fixed-fee projects, retainers |
| Delivered Quantity (Manual) | Manually updated delivery progress | Progressive services, custom delivery |
Step 1: Enable the Billable Feature
Nothing works until you flip this switch. Go to your project settings and enable Billable. Without it, the Invoice tab won't appear, and all the invoicing policies are invisible.
Enable Billable in Project Settings
Open the Project module, go to Settings, and activate the Billable option. This unlocks the Invoice tab where you configure billing details like cost per unit, hours worked, and employee assignments.
Step 2: Timesheet-Based Invoicing
This is the most accurate billing method. Your team logs hours against tasks, and the invoice reflects the exact time spent. No guesswork. But if your employees forget to log timesheets *(and they will)*, the invoice shows $0. Train your team or automate reminders.
Configure a Timesheet Service Product
Go to Sales > Products > Products. Create or select a product with Product Type = Service, Invoicing Policy = Based on Timesheets, and Create on Order = Project & Task (or Task only).
Create Sales Order and Log Timesheets
Create a Sales Order with the service product. On confirmation, Odoo creates the linked project and tasks. Open the task, go to the Timesheets tab, click Add a line, and log the date, employee, description, and Time Spent.
Generate Invoice from Logged Hours
Return to the Sales Order. The Delivered column now reflects logged hours. Click Create Invoice > Regular Invoice. The draft shows worked hours with analytic account details. Click Confirm to finalize.
Step 3: Milestone-Based Invoicing
For large projects, billing everything at the end is a cash flow killer. Milestone invoicing lets you bill per phase: design, development, testing, delivery. Each milestone is a separate product in Odoo. When a milestone is reached, you mark it and invoice just that phase.
Create Milestone Products and Sales Order
Create service products with Invoicing Policy = Based on Milestones. Add them to a Sales Quotation. Confirm the quotation to generate the sales order with Milestones and Tasks smart buttons.
Link Tasks to Milestones and Mark as Reached
Open each task, set the Milestone field. When a task is completed, go to the Sales Order, click Milestones, and check the Reached box. The Delivered column updates. Click Create Invoice to bill that milestone.
Prepaid/Fixed Pricing
Bill the entire amount upfront. Set Invoicing Policy = Prepaid/Fixed Price. Confirm the sales order, then Create Invoice as a Regular Invoice or Down Payment (% or fixed amount).
Delivered Quantity (Manual)
Bill based on manually updated delivery progress. Set Invoicing Policy = Based on Delivered Quantity (Manual). Update the Delivered column in the sales order as work completes, then generate the invoice.
Invoice Type Matters
When clicking Create Invoice, Odoo offers Regular Invoice, Down Payment (percentage), or Down Payment (fixed amount). Choose carefully. A down payment on a Timesheet-based order won't match actual hours and will create reconciliation headaches later.
1. Configure Service Product > Set Invoicing Policy
2. Create Sales Order > Confirm
3. Deliver Work (Timesheets / Milestones / Manual)
4. Delivered Column Updates Automatically
5. Create Invoice > Confirm > Mark as Paid
Frequently Asked Questions
Which invoicing policy should I use for consulting services?
Use "Based on Timesheets." It bills clients for the exact hours your consultants log, ensuring accurate time-and-materials invoicing.
Can I mix invoicing policies in the same sales order?
Yes. Each order line can have a different service product with its own invoicing policy. One line can be Timesheet-based while another is Milestone-based.
What happens if I create an invoice before logging timesheets?
The Delivered column will show 0, and the invoice will be generated for $0. Always log timesheets before creating the invoice for Timesheet-based policies.
How do down payment invoices work with fixed pricing?
You can invoice a percentage or fixed amount upfront before work starts. The remaining balance is invoiced on completion via a Regular Invoice.
Where do I enable the Billable feature in Odoo 18?
Go to Project module > Configuration > Settings > enable the Billable checkbox. Without this, the Invoice tab and all invoicing policies are hidden.
Losing Revenue on Under-Billed Projects?
Our Odoo experts configure invoicing policies that match your service delivery model, so every billable hour and milestone gets invoiced accurately.
