All posts
Functional4 min read

Creating Invoices from Project Tasks and Milestones in Odoo

Link Odoo project tasks and milestones directly to customer invoices - triggering billing when milestones are reached and generating invoices that include task completion details.

Project Task and Milestone Billing in Odoo#

For professional services with deliverable-based billing, Odoo allows invoicing directly from project milestones - ensuring you bill when agreed deliverables are completed, not on an arbitrary schedule.

Setting Up Milestone Billing#

On the sale order:

Sales → [Sale Order] → Order Lines:

  • Product: Implementation Project (service type)
  • Billing: Milestones
  • Quantity: 1
  • Price: $20,000

Milestones tab (on the order line):

  • Milestone 1: Requirements Document → $5,000
  • Milestone 2: Development Complete → $10,000
  • Milestone 3: Go-Live → $5,000

Linking Milestones to Project Tasks#

Sales → [Sale Order] → Project button → opens the auto-created project:

Project → Settings → Milestones → link each milestone to a task:

  • "Requirements Document" milestone → linked to "Deliver Requirements Specification" task
  • "Development Complete" → linked to "Development Sprint Complete" task
  • "Go-Live" → linked to "Production Deployment" task

Billing When a Milestone Is Reached#

When the task is completed and the milestone is ready to bill:

Project → [Task] → Mark Done → milestone status updates to "Reached"

Sales → [Sale Order] → Create Invoice → Milestone:

  • Select: Milestone 1 (Requirements Document - $5,000)
  • Invoice is created for $5,000

Customer receives the invoice immediately after the deliverable is completed - no lag between work done and billing.

Milestone Approval Before Billing#

For formal client sign-off:

Project → Milestones → [Milestone] → Request Approval:

  • Client signs off on the milestone completion (via Odoo portal or email)
  • On approval: invoice is triggered automatically

Progress Billing (Percentage Complete)#

For ongoing work billed by completion percentage:

Sale Order → Billing Method: Percentage of Completion

Update percentage on the project:

Project → [Task] → Progress: 50%

Invoice:

Sales → Create Invoice → Based on Progress → invoices 50% of the project total → $10,000

Subsequent invoices bill incremental progress: 50% → 75% → invoices $5,000 more.

Reporting#

Project → Reporting → Profitability:

  • Billed vs. total project value
  • Outstanding milestones (not yet billed)
  • Revenue recognized vs. deferred (for proper revenue recognition)

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free