Running an HVAC business with Odoo

How do I invoice a deposit and deduct it from the final invoice in Odoo?

Workflow overview: How do I invoice a deposit and deduct it from the final invoice in Odoo?
Workflow overview. Instructional screenshots show the actual demo interface.

Create a 20% Odoo deposit invoice and verify its automatic deduction in a final draft, keeping unpaid requests, posted invoices and receipts separate.

Alex wants a deposit request that stays linked to the accepted HVAC quotation. This native example posts a 20% request for $55.12, then checks its deduction in a $220.48 final draft. The deposit is still unpaid. The final draft stays on hold: creating it demonstrates billing arithmetic, not completed service or permission to send a final bill.

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. Reuse S00001, the $275.60 confirmed fixed-price order from the accepted fixed-price quotation, with the invoicing setup from the invoicing setup and existing the existing payment term. Its original service-call line is $100 and quoted labor is 2 Hours at $80; demo tax is 6%, with $260 untaxed and $275.60 total. These H11 products invoice ordered quantities, not actual timesheets. The scenario explicitly assumes a separately agreed 20% deposit for training; the original signature does not establish that additional agreement. No real agreement, work or receipt is asserted. Confirm actual commercial terms and the appropriate tax/account treatment for your business before using them.

Step-by-step workflow

Create one percentage deposit request, check its unpaid balance and verify the automatic deduction in a held final draft. The request and draft total the original order; no receipt or final posting occurs in this lesson.

Step 1. Review the same order and record the deposit decision

Open S00001 and check Sales Order, customer Demo Property H08, billing/service contacts, the original two service lines and $275.60 total. At the starting checkpoint it has no invoice. Use Log note, enter the clearly labelled training assumption of a separately agreed 20% deposit, and click Log. Preserve the original signed quotation and scope; an internal training note does not create actual customer approval.

Action 1: Continue with the signed S00001 fixed-price order. The actual target is highlighted in gold.
Continue with the signed S00001 fixed-price order.
Action 2: The order remains Sales Order, not new customer approval. The actual target is highlighted in gold.
The order remains Sales Order, not new customer approval.
Action 3: Check the same Demo Property H08 customer. The actual target is highlighted in gold.
Check the same Demo Property H08 customer.
Action 4: Keep the original service call and two-hour quoted allowance. The actual target is highlighted in gold.
Keep the original service call and two-hour quoted allowance.
Action 5: Verify the original USD 275.60 order total. The actual target is highlighted in gold.
Verify the original USD 275.60 order total.
Action 6: Retain the existing Demo Net 30 H06 payment term. The actual target is highlighted in gold.
Retain the existing Demo Net 30 H06 payment term.
Action 7: Preserve the original signature history as history. The actual target is highlighted in gold.
Preserve the original signature history as history.
Action 8: Open Log note for the explicit training assumption. The actual target is highlighted in gold.
Open Log note for the explicit training assumption.
Action 9: Label the 20% assumption without claiming real approval. The actual target is highlighted in gold.
Label the 20% assumption without claiming real approval.
Action 10: Log this one internal training assumption. The actual target is highlighted in gold.
Log this one internal training assumption.
Action 11: The saved note explicitly says fictional training assumption. The actual target is highlighted in gold.
The saved note explicitly says fictional training assumption.

Step 2. Choose the native percentage option

Click Create Invoice. In Create invoice(s), select Down payment (percentage). The other visible choices are Regular invoice and Down payment (fixed amount); this test uses only percentage. Enter 20 in Down Payment and click Create Draft once. Wait for the generated draft invoice.

Action 12: Open Create Invoice on this same accepted order. The actual target is highlighted in gold.
Open Create Invoice on this same accepted order.
Action 13: Review the native Regular and two Down payment choices. The actual target is highlighted in gold.
Review the native Regular and two Down payment choices.
Action 14: Choose Down payment percentage for this example. The actual target is highlighted in gold.
Choose Down payment percentage for this example.
Action 15: Enter the fictional agreed percentage: 20. The actual target is highlighted in gold.
Enter the fictional agreed percentage: 20.
Action 16: Commit the percentage on the Create invoice heading. The actual target is highlighted in gold.
Commit the percentage on the Create invoice heading.
Action 17: Verify 20 percent before creating the request. The actual target is highlighted in gold.
Verify 20 percent before creating the request.

Step 3. Check the deposit line, customer and calculation

The draft is addressed to Demo Property H08, Billing Office H08 and retains 1 Sale Orders linked to S00001. Its line reads Down payment of 20.00%, Quantity 1.00, Price 52.00, Tax 6%. Totals are $52 untaxed + $3.12 demo tax = $55.12. The saved line has no selected product and uses the existing Product Sales account in this demo; this flow did not require creating a Down Payment product. Review the actual account/tax defaults rather than treating this synthetic configuration as an accounting recommendation.

Action 18: Create this one deposit draft once. The actual target is highlighted in gold.
Create this one deposit draft once.
Action 19: Review the newly generated deposit draft. The actual target is highlighted in gold.
Review the newly generated deposit draft.
Action 20: Check Billing Office H08 on the deposit request. The actual target is highlighted in gold.
Check Billing Office H08 on the deposit request.
Action 21: Check one down-payment line at USD 52 plus 6% demo tax. The actual target is highlighted in gold.
Check one down-payment line at USD 52 plus 6% demo tax.
Action 22: Verify USD 52 plus USD 3.12 equals USD 55.12. The actual target is highlighted in gold.
Verify USD 52 plus USD 3.12 equals USD 55.12.

Step 4. Date and label the request before posting

Enter 10/14/2026 in Invoice Date, commit the field by clicking the heading and check the inherited Demo Net 30 H06 term. Preserve the copied scope and append a short deposit-request note stating the order, amount and fictional nature of the example. Click Save manually if changes remain pending, wait for them to clear, then use Confirm. The request becomes Posted, number INV/2026/00002, with $55.12 due and a November 13, 2026 due date.

Action 23: Enter October 14, 2026 and press Enter for this request. The actual target is highlighted in gold.
Enter October 14, 2026 and press Enter for this request.
Action 24: Commit the invoice date by clicking the Draft heading. The actual target is highlighted in gold.
Commit the invoice date by clicking the Draft heading.
Action 25: Retain the inherited Demo Net 30 H06 term. The actual target is highlighted in gold.
Retain the inherited Demo Net 30 H06 term.
Action 26: Preserve the copied original quotation scope. The actual target is highlighted in gold.
Preserve the copied original quotation scope.
Action 27: Append the labelled deposit-request context. The actual target is highlighted in gold.
Append the labelled deposit-request context.
Action 28: Commit the added context on the invoice heading. The actual target is highlighted in gold.
Commit the added context on the invoice heading.
Action 29: Save pending deposit date and context changes. The actual target is highlighted in gold.
Save pending deposit date and context changes.
Action 30: Verify the saved request note without replacing its history. The actual target is highlighted in gold.
Verify the saved request note without replacing its history.
Action 31: Recheck the October 14 invoice date. The actual target is highlighted in gold.
Recheck the October 14 invoice date.
Action 32: Review USD 55.12 before posting the request. The actual target is highlighted in gold.
Review USD 55.12 before posting the request.
Action 33: Confirm this one deposit request once. The actual target is highlighted in gold.
Confirm this one deposit request once.
Action 34: The request is Posted, which does not record a receipt. The actual target is highlighted in gold.
The request is Posted, which does not record a receipt.
Action 35: Match INV/2026/00002 to this deposit request. The actual target is highlighted in gold.
Match INV/2026/00002 to this deposit request.

Step 5. Keep the request separate from payment

Reopen the posted deposit. It remains unpaid with the full $55.12 Amount Due and no linked receipt from this lesson. On S00001, the Down Payments section references the invoice. For an actual received deposit, use the separate the customer-payment procedure after independently confirming receipt. Do not mark it received merely because the request is posted.

Action 36: The full USD 55.12 remains unpaid. The actual target is highlighted in gold.
The full USD 55.12 remains unpaid.
Action 37: Reopening keeps the same USD 55.12 Amount Due. The actual target is highlighted in gold.
Reopening keeps the same USD 55.12 Amount Due.
Action 38: Return to S00001 through its native source link. The actual target is highlighted in gold.
Return to S00001 through its native source link.
Action 39: Review original services and the native Down Payments section. The actual target is highlighted in gold.
Review original services and the native Down Payments section.
Action 40: The original order total stays USD 275.60. The actual target is highlighted in gold.
The original order total stays USD 275.60.
Action 41: The order links to one invoice at this checkpoint. The actual target is highlighted in gold.
The order links to one invoice at this checkpoint.
Action 42: Keep the explicit fictional 20% decision note. The actual target is highlighted in gold.
Keep the explicit fictional 20% decision note.

Step 6. Prepare a final draft only after checking the billing basis

Return to S00001 using its breadcrumb. The original fixed-price lines are already invoiceable under their ordered-quantity policy; that eligibility does not prove service completion. This training step prepares a held review draft. Click Create Invoice again. Regular invoice is selected and Already invoiced: $55.12 appears. No separate Deduct Down Payments checkbox appeared in this tested dialog. Click Create Draft once.

Action 43: Open Create Invoice again only for a held final review draft. The actual target is highlighted in gold.
Open Create Invoice again only for a held final review draft.
Action 44: Regular invoice is selected natively. The actual target is highlighted in gold.
Regular invoice is selected natively.
Action 45: Already invoiced is USD 55.12, although still unpaid. The actual target is highlighted in gold.
Already invoiced is USD 55.12, although still unpaid.
Action 46: No separate Deduct Down Payments checkbox appears here. The actual target is highlighted in gold.
No separate Deduct Down Payments checkbox appears here.
Action 47: Create this one held final draft once. The actual target is highlighted in gold.
Create this one held final draft once.

Step 7. Compare the automatic deduction with the original deposit

The final draft contains the $100 service call and $160 labor line, followed by Down Payments and Down Payment (ref: INV/2026/00002 on 10/14/2026). That deduction has Quantity -1.00, Price 52.00, 6% demo tax and an untaxed amount of -$52. Totals are $208 untaxed + $12.48 tax = $220.48. The deposit $55.12 plus this draft $220.48 equals the original $275.60 order. Both the positive deposit and negative deduction link to the same down-payment sales line. Do not add another manual deduction.

Action 48: Review the new final Draft without confirming it. The actual target is highlighted in gold.
Review the new final Draft without confirming it.
Action 49: Check the same Billing Office H08 customer. The actual target is highlighted in gold.
Check the same Billing Office H08 customer.
Action 50: The original service call remains USD 100. The actual target is highlighted in gold.
The original service call remains USD 100.
Action 51: Quoted labor remains two Hours at USD 80. The actual target is highlighted in gold.
Quoted labor remains two Hours at USD 80.
Action 52: Review the native Down Payments section. The actual target is highlighted in gold.
Review the native Down Payments section.
Action 53: The deduction references the same October 14 deposit request. The actual target is highlighted in gold.
The deduction references the same October 14 deposit request.
Action 54: Verify the automatic negative quantity of one. The actual target is highlighted in gold.
Verify the automatic negative quantity of one.
Action 55: Verify USD 52 is deducted before demo tax. The actual target is highlighted in gold.
Verify USD 52 is deducted before demo tax.
Action 56: The same 6% demo tax applies to the deduction. The actual target is highlighted in gold.
The same 6% demo tax applies to the deduction.
Action 57: USD 208 plus USD 12.48 leaves USD 220.48 in Draft. The actual target is highlighted in gold.
USD 208 plus USD 12.48 leaves USD 220.48 in Draft.

Step 8. Save the hold and reopen both linked invoices

Append a clear FINAL DRAFT REVIEW ONLY / HOLD note to the draft: the deposit request remains unpaid and real final posting requires work/commercial review. Save pending changes and wait before reloading. Use 1 Sale Orders, then 2 Invoices, to inspect the same two records: the $55.12 deposit Posted and $220.48 final Draft. The order now has zero source quantities left to invoice and its saved invoice status is Fully Invoiced even though this final invoice is still draft. Its Create Invoice button is hidden in this state. Check the actual invoice status, not only the order indicator. Leave this draft unposted and unsent for review.

Action 58: Preserve the copied original scope before adding the hold. The actual target is highlighted in gold.
Preserve the copied original scope before adding the hold.
Action 59: Append the explicit final-draft review hold. The actual target is highlighted in gold.
Append the explicit final-draft review hold.
Action 60: Commit the hold on the Draft heading. The actual target is highlighted in gold.
Commit the hold on the Draft heading.
Action 61: Save pending final-draft hold changes. The actual target is highlighted in gold.
Save pending final-draft hold changes.
Action 62: Verify FINAL DRAFT REVIEW ONLY and HOLD are saved. The actual target is highlighted in gold.
Verify FINAL DRAFT REVIEW ONLY and HOLD are saved.
Action 63: The final invoice remains Draft after reload. The actual target is highlighted in gold.
The final invoice remains Draft after reload.
Action 64: Choose an actual final invoice date only when reviewing billing. The actual target is highlighted in gold.
Choose an actual final invoice date only when reviewing billing.
Action 65: Open this draft’s one source Sales Order. The actual target is highlighted in gold.
Open this draft’s one source Sales Order.
Action 66: Original service scope and down-payment lines remain together. The actual target is highlighted in gold.
Original service scope and down-payment lines remain together.
Action 67: The original order still totals USD 275.60. The actual target is highlighted in gold.
The original order still totals USD 275.60.
Action 68: Open exactly two linked invoices. The actual target is highlighted in gold.
Open exactly two linked invoices.
Action 69: Compare USD 55.12 Posted with USD 220.48 Draft. The actual target is highlighted in gold.
Compare USD 55.12 Posted with USD 220.48 Draft.
Action 70: Reopen only the posted deposit request. The actual target is highlighted in gold.
Reopen only the posted deposit request.
Action 71: The deposit request is still Posted. The actual target is highlighted in gold.
The deposit request is still Posted.
Action 72: The full USD 55.12 is still due with no receipt. The actual target is highlighted in gold.
The full USD 55.12 is still due with no receipt.
Action 73: Return to the same original order again. The actual target is highlighted in gold.
Return to the same original order again.
Action 74: Reopen the same two-invoice list. The actual target is highlighted in gold.
Reopen the same two-invoice list.
Action 75: Reopen the existing USD 220.48 final Draft. The actual target is highlighted in gold.
Reopen the existing USD 220.48 final Draft.
Action 76: This same final invoice is still Draft. The actual target is highlighted in gold.
This same final invoice is still Draft.
Action 77: The saved review hold remains attached to this draft. The actual target is highlighted in gold.
The saved review hold remains attached to this draft.
Action 78: USD 55.12 requested plus USD 220.48 Draft equals USD 275.60. The actual target is highlighted in gold.
USD 55.12 requested plus USD 220.48 Draft equals USD 275.60.
Action 79: Leave this final draft unposted and unsent for real review. The actual target is highlighted in gold.
Leave this final draft unposted and unsent for real review.

Check the result

S00001 retains its original $275.60 total, signed history and service lines, with native Down Payments section/line added. One posted unpaid deposit invoice, INV/2026/00002, requests $55.12. One saved final draft automatically deducts $55.12 including demo tax, leaving $220.48; both link to the same order and deposit sales line. The native two-invoice list shows Posted versus Draft. Reopening retained those two documents and the hold note. No payment was created, the final draft was not posted/sent, and earlier customer/supplier payments remain unchanged.

If your screen differs

The final deduction occurred while the deposit request was still unpaid. It accounts for an already invoiced request, not cash received. The source order counts its draft final quantities as invoiced, so Fully Invoiced and a hidden Create Invoice button do not prove every invoice is posted or paid. This test used one percentage, one currency and one 6% demo tax; fixed amounts, multiple deposits, mixed tax rates, cancellations and an oversize deposit were not exercised. The generated deposit line has no product in this version, and the regular-invoice dialog showed no deduction checkbox. Older screenshots can differ. The final draft remains held because service completion and real billing approval are outside this demonstration. Its displayed due date does not replace choosing an actual invoice date when reviewed.

Frequently asked questions

How do I create a down-payment invoice in Odoo?

On the reviewed confirmed order, use Create Invoice → Down payment (percentage), enter the agreed percentage and click Create Draft. Check customer, line, tax/account defaults and total before Confirm. Here 20% produced $52 plus $3.12 demo tax, a $55.12 posted unpaid request. The native line had no product selected.

How do I deduct an Odoo deposit from the final invoice?

After reviewing the real final-billing basis, return to the same order and use Create Invoice → Regular invoice → Create Draft. This runtime automatically included a negative line referencing the posted deposit, without a separate deduction checkbox. The $55.12 request plus $220.48 final draft equals $275.60. Review the original deposit and avoid adding a second manual deduction.

Does a down-payment invoice mean the deposit was paid? No. The posted request in this test remained unpaid at $55.12 while Odoo already deducted it from the final draft. Invoice creation and deduction do not establish receipt. Confirm actual funds independently and inspect the linked payment and invoice residual in the appropriate payment workflow.

Continue building the business

Continue with How do I buy special-order equipment for a customer job in Odoo?. The separate online-payment sandbox will use this unpaid deposit request; it will not reopen or duplicate H54’s already paid invoice. Collecting or recording a receipt stays separate from preparing either invoice.

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.