Before generating, the routine scans the project's existing invoices for any that are paid or partially paid and records their stage id and stage index as settled. Those stages are excluded and returned in a skippedPaid list, which the editor surfaces as plain English rather than silently producing fewer invoices.
Also called: double billing the deposit · customer already paid this · duplicate draw invoice
- 1listInvoices for the project; ignore voided rows.
- 2Any invoice with status paid or paid_amount above zero adds its stage id and '#index' to a settled set.
- 3Stages in that set are skipped during generation.
- 4If nothing generates, the editor says which stages are already paid instead of 'couldn't generate'.
Regenerating a schedule after part of the job had already been billed offered up stages the customer had paid for months earlier, and the only thing standing between that and a second invoice was somebody remembering. A customer who has to write in and say a payment has already been made has stopped trusting the paperwork. Any stage whose invoice has taken money is excluded from regeneration, so double-billing is not on the menu.
- Re-generating a schedule creating a second bill for money already received.
- Silent partial generation with no explanation.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →