Running an HVAC business with Odoo

How do I close an Odoo job and prepare it for invoicing?

Workflow overview: How do I close an Odoo job and prepare it for invoicing?
Workflow overview. Instructional screenshots show the actual demo interface.

Review an Odoo job’s time and materials exceptions, save its task Done, and preserve a clear handoff without automatically creating an invoice.

Alex needs a clear decision about what is finished and what the office can invoice. We review the existing hourly training task, keep the separate materials exception visible, then save its operational status Done and record the invoicing handoff. Closing the task is a separate action from creating an invoice.

Alex Rivera and Demo Air HVAC are fictional training examples. Prices, dates, quantities and business situations in this guide are illustrative.

Before you begin

Tested in stock Odoo 20.0-20260926 Community as the demo owner administrator, with official modules and standard configuration. Use saved instructions and the labelled training image for the saved instructions and labelled image, recorded technician time for the exact 1.5-hour entry and the separate materials reconciliation for the materials reconciliation. The closeout target is S00008 - Demo Time-Billed Labor H41 / task 6, customer Demo Property H08, with one time-based service line. The separate S00007 / Demo Service Job H40 has an open parts backorder and billing hold; do not close that job in this procedure. The owner performs review and closure; the assigned technician’s session verifies the saved result. All work and evidence here are fictional rehearsal material. The AI-labelled image is not proof of actual service completion or that the proposed later appointment occurred.

Step-by-step workflow

Review the recorded time, save the hourly task Done and record the invoicing handoff. The separate materials job stays open, and no invoice is created in this fictional closeout.

Step 1. Review the correct task’s scope and evidence

Open S00008 - Demo Time-Billed Labor H41. Check customer, project, assigned technician and Sales Order Item. Read the saved site instructions and H43 internal handoff. The attached before/after image is explicitly AI-generated upload-test material. This lesson closes the synthetic training task only. In your business, review actual work records and genuine completion evidence before deciding the job is finished. Keep outstanding decisions visible.

Action 1: Review the existing S00008 hourly task. The actual target is highlighted in gold.
Review the existing S00008 hourly task.
Action 2: Match Demo Service Jobs H40. The actual target is highlighted in gold.
Match Demo Service Jobs H40.
Action 3: Match Demo Property H08. The actual target is highlighted in gold.
Match Demo Property H08.
Action 4: Check the assigned Demo Technician H42. The actual target is highlighted in gold.
Check the assigned Demo Technician H42.
Action 5: Keep the S00008 sales order item. The actual target is highlighted in gold.
Keep the S00008 sales order item.
Action 6: Keep the October 16 deadline separate from actual work. The actual target is highlighted in gold.
Keep the October 16 deadline separate from actual work.
Action 7: Read the retained site instructions and training limits. The actual target is highlighted in gold.
Read the retained site instructions and training limits.
Action 8: Read the internal H43 training handoff. The actual target is highlighted in gold.
Read the internal H43 training handoff.
Action 9: Open the existing labelled training image. The actual target is highlighted in gold.
Open the existing labelled training image.
Action 10: This AI-generated image does not certify real work. The actual target is highlighted in gold.
This AI-generated image does not certify real work.
Action 11: Close the image viewer before reviewing time. The actual target is highlighted in gold.
Close the image viewer before reviewing time.

Step 2. Check the single technician time entry

Open Timesheets. Verify the October 14 date, Demo Technician H42, work description and one 1h 30m entry on this task. It remains linked to the intended S00008 sales line. The 2h allocation was an estimate; 0h 30m remaining does not mean another half-hour should be entered or billed. Reconcile duplicates and missing work from facts, rather than changing time to match the estimate.

Action 12: Review the saved Timesheets. The actual target is highlighted in gold.
Review the saved Timesheets.
Action 13: The original entry is dated October 14. The actual target is highlighted in gold.
The original entry is dated October 14.
Action 14: The entry belongs to Demo Technician H42. The actual target is highlighted in gold.
The entry belongs to Demo Technician H42.
Action 15: Read the saved rehearsal description. The actual target is highlighted in gold.
Read the saved rehearsal description.
Action 16: Use the exact 1h 30m detailed duration. The actual target is highlighted in gold.
Use the exact 1h 30m detailed duration.
Action 17: Allocated Time remains a separate 2h estimate. The actual target is highlighted in gold.
Allocated Time remains a separate 2h estimate.
Action 18: Do not add time to fill the 0h 30m remainder. The actual target is highlighted in gold.
Do not add time to fill the 0h 30m remainder.

Step 3. Keep materials and billing exceptions with their own order

Review H45’s matching parts job and S00007 references. One filter went out and the same unused filter came back, leaving zero net delivered. Its two-filter backorder remains open, while Ordered quantities still exposes three invoiceable units. Leave that task Office Review / In Progress and retain its billing hold. S00008 has only its hourly service line; closing it does not resolve the other order’s stock, scope or billing.

Action 19: Review the separate Demo Service Job H40. The actual target is highlighted in gold.
Review the separate Demo Service Job H40.
Action 20: Its stage remains Office Review. The actual target is highlighted in gold.
Its stage remains Office Review.
Action 21: Its operational status remains In Progress. The actual target is highlighted in gold.
Its operational status remains In Progress.
Action 22: Keep the saved materials return and billing hold visible. The actual target is highlighted in gold.
Keep the saved materials return and billing hold visible.
Action 23: Review the separate S00007 parts order. The actual target is highlighted in gold.
Review the separate S00007 parts order.
Action 24: Ordered quantities still show three units. The actual target is highlighted in gold.
Ordered quantities still show three units.
Action 25: The unused return leaves net Delivered zero. The actual target is highlighted in gold.
The unused return leaves net Delivered zero.
Action 26: No units have been invoiced. The actual target is highlighted in gold.
No units have been invoiced.
Action 27: Review the existing deliveries and unused return. The actual target is highlighted in gold.
Review the existing deliveries and unused return.
Action 28: Open only the existing two-filter backorder. The actual target is highlighted in gold.
Open only the existing two-filter backorder.
Action 29: The backorder remains Ready and uncompleted. The actual target is highlighted in gold.
The backorder remains Ready and uncompleted.
Action 30: Its demand and reserved quantity remain two. The actual target is highlighted in gold.
Its demand and reserved quantity remain two.

Step 4. Save the task’s Office Review stage

On the hourly task, choose Office Review in the stage bar. Click Save manually and wait for pending changes to clear. The saved stage becomes Office Review, but the separate status remains In Progress and the task is not yet closed. Choosing a stage and seeing its label is insufficient proof of a saved result. This is an office process label, not a required approval gate.

Action 31: Return to the hourly S00008 task only. The actual target is highlighted in gold.
Return to the hourly S00008 task only.
Action 32: Choose Office Review in this task stage bar. The actual target is highlighted in gold.
Choose Office Review in this task stage bar.
Action 33: Save this stage once and wait for it to persist. The actual target is highlighted in gold.
Save this stage once and wait for it to persist.
Action 34: The reopened stage is Office Review. The actual target is highlighted in gold.
The reopened stage is Office Review.
Action 35: The separate status is still In Progress. The actual target is highlighted in gold.
The separate status is still In Progress.

Step 5. Log the office’s reviewed decision

Click Log note and record the task/order/customer/site, reviewed evidence, exact employee time and remaining exceptions. The training note explicitly states that this is a rehearsal, no real service is certified and the parts order remains separate. Click Log once. Our note is internal Notes and generated no recipient notification. It does not establish customer sign-off, a warranty certificate or a commercial change agreement.

Action 36: Choose Log note for the office decision. The actual target is highlighted in gold.
Choose Log note for the office decision.
Action 37: Record the reviewed decision and fictional limits. The actual target is highlighted in gold.
Record the reviewed decision and fictional limits.
Action 38: Log this one internal review note. The actual target is highlighted in gold.
Log this one internal review note.
Action 39: The saved review keeps the other order separate. The actual target is highlighted in gold.
The saved review keeps the other order separate.

Step 6. Choose Done and save the operational status

Open the In Progress status button and select Done from its menu. Click Save manually again and wait for saving to finish. The saved status is now Done, and the task’s closed flag is true. Its stage remains Office Review. The same 1.5-hour entry, original description, assignee and deadline remain. No invoice, payment, stock transfer or separate job was created or completed by this action.

Action 40: Open the separate In Progress status menu. The actual target is highlighted in gold.
Open the separate In Progress status menu.
Action 41: Choose Done for this reviewed training task. The actual target is highlighted in gold.
Choose Done for this reviewed training task.
Action 42: Save Done once and wait for the closed result. The actual target is highlighted in gold.
Save Done once and wait for the closed result.
Action 43: The saved task status is Done. The actual target is highlighted in gold.
The saved task status is Done.
Action 44: Office Review remains the separate stage. The actual target is highlighted in gold.
Office Review remains the separate stage.

Step 7. Add a precise invoicing handoff

Use Log note to name S00008, the reviewed 1.5-hour entry, correct time-based sales line and the separate parts hold. Record Delivered/to invoice: 1.50 and Invoiced: 0.00 for that service. Its order still shows the original two-hour estimate and $169.60 total; that total is not a posted invoice for actual time. In a real business, the office must review the agreement before generating the financial document.

Action 45: Add a separate office invoicing handoff. The actual target is highlighted in gold.
Add a separate office invoicing handoff.
Action 46: Record exact 1.50 Hours and the separate parts hold. The actual target is highlighted in gold.
Record exact 1.50 Hours and the separate parts hold.
Action 47: Log this one internal billing handoff. The actual target is highlighted in gold.
Log this one internal billing handoff.
Action 48: The saved handoff does not create an invoice. The actual target is highlighted in gold.
The saved handoff does not create an invoice.

Step 8. Reopen the task and check the financial boundary

Reload the same task in owner and technician sessions. Both show Done and the same review/handoff notes. As the owner, click Sales Order. S00008 remains a Sales Order with Create Invoice available and no invoice yet. Return through the task link and reload to confirm the same closed task and one time entry. We did not click Create Invoice in this lesson. The parts task and its backorder stay open for their own resolution.

Action 49: Owner reopen: the same task remains Done. The actual target is highlighted in gold.
Owner reopen: the same task remains Done.
Action 50: The invoicing handoff remains saved. The actual target is highlighted in gold.
The invoicing handoff remains saved.
Action 51: The reviewed training decision remains saved. The actual target is highlighted in gold.
The reviewed training decision remains saved.
Action 52: Follow this task native Sales Order link. The actual target is highlighted in gold.
Follow this task native Sales Order link.
Action 53: S00008 remains the same Sales Order. The actual target is highlighted in gold.
S00008 remains the same Sales Order.
Action 54: The order still estimates two Hours. The actual target is highlighted in gold.
The order still estimates two Hours.
Action 55: Actual recorded time leaves Delivered 1.50. The actual target is highlighted in gold.
Actual recorded time leaves Delivered 1.50.
Action 56: Invoiced remains 0.00. The actual target is highlighted in gold.
Invoiced remains 0.00.
Action 57: USD 169.60 is the original estimate, not a posted invoice. The actual target is highlighted in gold.
USD 169.60 is the original estimate, not a posted invoice.
Action 58: Create Invoice remains a separate unexecuted action. The actual target is highlighted in gold.
Create Invoice remains a separate unexecuted action.
Action 59: Return through the existing hourly task breadcrumb. The actual target is highlighted in gold.
Return through the existing hourly task breadcrumb.
Action 60: Reload the same closed task. The actual target is highlighted in gold.
Reload the same closed task.
Action 61: Check its original single time entry again. The actual target is highlighted in gold.
Check its original single time entry again.
Action 62: One 1h 30m entry remains after closure. The actual target is highlighted in gold.
One 1h 30m entry remains after closure.
Action 63: Technician: reopen the same closed hourly job. The actual target is highlighted in gold.
Technician: reopen the same closed hourly job.
Action 64: The technician sees the saved Done status. The actual target is highlighted in gold.
The technician sees the saved Done status.
Action 65: Office Review remains the saved stage. The actual target is highlighted in gold.
Office Review remains the saved stage.
Action 66: The technician can read the same reviewed decision. The actual target is highlighted in gold.
The technician can read the same reviewed decision.
Action 67: The exact billing handoff remains visible. The actual target is highlighted in gold.
The exact billing handoff remains visible.
Action 68: Reopen this task original Timesheets. The actual target is highlighted in gold.
Reopen this task original Timesheets.
Action 69: One original October 14 entry remains 1h 30m. The actual target is highlighted in gold.
One original October 14 entry remains 1h 30m.
Action 70: The original October 16 deadline remains. The actual target is highlighted in gold.
The original October 16 deadline remains.
Action 71: Reopen the same closed task once more. The actual target is highlighted in gold.
Reopen the same closed task once more.
Action 72: Done remains saved; invoice review is separate. The actual target is highlighted in gold.
Done remains saved; invoice review is separate.

Check the result

Task 6 is saved Done with its closed flag true while Office Review remains its stage. Two internal notes retain the reviewed training decision and invoicing handoff, visible after owner/technician reload. The original description, labelled image, employee assignment, deadline and sole 1.5-hour entry are preserved. S00008 still has 1.5 hours invoiceable, zero invoiced and no invoice/payment. The separate materials task stays In Progress with its backorder and billing hold; stock and accounting balances are unchanged.

If your screen differs

Office Review is a stage, while Done is the independent operational status. Both changes needed Save manually in this runtime; pending labels did not establish persisted changes. Done did not create an invoice, change the already invoiceable 1.5 hours, complete the other job, fill the unused allocation or certify actual work. The stored Ending Date stayed empty, so this test does not promise an automatic completion timestamp. We tested owner closure and technician readback, not a technician approval authority or enforced review/locking rule. No real completion, customer acceptance, invoice posting or payment is asserted.

Frequently asked questions

How do I close an Odoo service job?

Review the correct task’s scope, actual evidence, time and outstanding materials decisions. In this tested workflow the owner saved the Office Review stage, logged the decision, selected Done in the separate status menu and saved again. Reopening showed Done and a closed task. The synthetic example did not certify real service work.

Does marking an Odoo task done create an invoice?

No invoice was created in this test. The time-based sales line was already invoiceable from its saved 1.5-hour timesheet before closeout. After Done, it still showed 1.50 to invoice and zero invoiced. The owner’s Sales Order screen retained Create Invoice as a separate action.

What should I check before invoicing an Odoo job? Check the right customer/order, agreed scope, genuine work evidence, exact employee time and sales link, duplicates, delivery/return records, backorders and invoicing policy. Here the hourly task was reviewed separately from a parts order with zero net delivered, three ordered units still invoiceable and an open backorder. Closure did not resolve that commercial exception.

Continue building the business

Continue with How do I invoice job time and materials in Odoo?. Resolve the relevant order’s scope and billing exceptions before invoicing; closed-task status alone does not decide the financial quantity.

Talk to an Odoo partner

Bring your current process and the result you need to Onward to plan your Odoo workflow. Talk to an Odoo partner.