The Problem
'Create Invoice' button is missing, grayed out, or clicking it produces a zero-amount invoice.
Cause 1: Invoice Policy = Delivered Quantities (Most Common)
# Product → Invoicing tab → Invoicing Policy:
# - "Ordered quantities" → invoice immediately after confirmation
# - "Delivered quantities" → invoice only after delivery is validated
# If policy is 'Delivered' but nothing delivered yet:
# → No quantity to invoice → button hidden
# Fix: either:
# 1. Validate the delivery order first, then create invoice
# 2. Change product invoicing policy to 'Ordered quantities'
# 3. Set 'Qty Delivered' manually on the SO line (for services)Cause 2: Order Not Confirmed
# Invoices can only be created from confirmed (state='sale') orders
# Quotations (state='draft') don't have the Create Invoice button
# Fix: click 'Confirm' on the quotation firstCause 3: All Lines Already Invoiced
# Every line is fully invoiced — nothing left to invoice
# Check SO lines: Invoiced Qty = Ordered Qty
# The 'Create Invoice' button disappears when invoice_status = 'invoiced'
# Check in database:
SELECT name, invoice_status FROM sale_order WHERE id = ORDER_ID;
# Should be: 'to invoice' for button to appearCause 4: Service Product Without Timesheet
# Service products with 'Based on Timesheets' invoicing:
# Must log timesheets before invoicing
# No timesheets = zero quantity to invoice
# Fix: log timesheets on the project tasks linked to this SO
# Or change product to 'Ordered quantities' invoicingCause 5: Subscription Product
# Subscription products invoice differently:
# Invoices are generated by the subscription cron
# Not via the regular 'Create Invoice' button
# Check: is this a subscription order?
# If yes: Subscriptions → check the recurring invoice scheduleCause 6: Down Payment Already Covers Full Amount
# If a 100% down payment invoice was already created:
# Regular invoice shows $0 to invoice
# Fix: the down payment IS the invoice
# Or: create a 'Regular Invoice' which deducts the down paymentCause 7: Access Rights
# User needs Sales → User (or higher) AND Invoicing → User
# Without invoicing permissions, the button may be hidden
# Fix: add user to the Invoicing / Billing groupForce Recompute Invoice Status
# Sometimes invoice_status gets stuck. Force recompute:
# In Odoo Shell:
orders = env['sale.order'].search([('id', '=', ORDER_ID)])
orders._compute_invoice_status()
env.cr.commit()
# Or for all orders:
orders = env['sale.order'].search([('state', '=', 'sale')])
orders._compute_invoice_status()
env.cr.commit()DeployMonkey
DeployMonkey's AI agent diagnoses invoicing issues — checking invoice policy, delivery status, quantities, and permissions to identify exactly why the invoice button is missing.