A structured bill_to blob on the invoice row, seeded at creation from the customer's completed intake form and always editable. It starts collapsed; the builder expands only to verify. Clear wipes it for a different billing party (an LLC or a lender), and Refresh from intake re-pulls if the customer updated their details.
Also called: billing details · legal name on invoice · lender info · cosigner · who am I billing
- 1On mount, fetchBillToFromIntake() looks for estimate_links tied to this project, then re-queries every link for the same SmartBuild job, then falls back to the frozen contracts.form_data.
- 2hasIntakePayload() rejects an empty {} blob so a link that exists but was never filled in is not treated as a hit.
- 3billToFromFormData() shapes identity / contact_info / mailing_address / cosigner / lender_info / source_of_funds into the invoice block.
- 4Compacted on save — empty strings are dropped so the viewer's 'is this populated?' check works.
A job that had been quoted more than once carried several intake records behind it, and the autofill grabbed whichever one matched the project first — often a resend with nothing filled in. The Bill To block spun and then came back blank, on a customer who had in fact completed the form. Autofill now picks the record that actually holds the customer's details, and a saved Bill To with no real name or address is treated as empty rather than displayed as filled, so the editor and the finished document agree.
- Re-keying legal billing details that the customer already supplied at intake.
- Invoices missing lender/cosigner details a construction loan draw requires.
- The autofill silently returning an empty intake record.
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 →