Bill To pulled from the signed intake form

The legally-required billing block — legal name, mailing address, cosigner, lender, loan number, source of funds — fills itself in from the intake form the customer already signed.

What it is

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

See it
Bill To pulled from the signed intake form
CustomerBuildingAmountStatus
Ivy Brubaker40×64 Shop$10,510Approved
Gideon Alt30×40 Garage$1,770Open
Ivy Brubaker40×64 Shop$4,810Draft
Marlin HooverEquipment Storage$2,530Draft
Sutter Kline30×40 Garage$3,670Sent
The Bill To panel expanded, showing legal name, mailing address, cosigner and lender fields with the italic 'Pulled from the customer's signed intake form.' note and the Clear / Refresh from intake buttons. src/components/invoices/InvoiceEditor.tsx. Sample data — no customer information appears here.
How it works
  1. 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.
  2. 2hasIntakePayload() rejects an empty {} blob so a link that exists but was never filled in is not treated as a hit.
  3. 3billToFromFormData() shapes identity / contact_info / mailing_address / cosigner / lender_info / source_of_funds into the invoice block.
  4. 4Compacted on save — empty strings are dropped so the viewer's 'is this populated?' check works.
Why we built it

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.

The problem
  • 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.
Sound familiar?
What you get
A legally complete Bill To block with no typing.
One click to re-pull if the customer's details changed.
Manual override when the payer is an LLC, a lender, or anyone other than the person who filled the form.

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 →