From estimate to budget in Spandrel
A project budget in Spandrel is the live financial backbone of a job. Unlike a static spreadsheet, it updates in real time as subcontracts are signed, change orders are approved, invoices come in, and payments go out.
The fastest way to get a budget live is to start from your estimate.
Step 1: Create the project
From the Projects tab, click New Project. Enter the project name, owner/client, contract value, and start/end dates. At this point the project is in "Pre-budget" status.
Step 2: Add budget lines
Budget lines map to cost codes — the buckets you track spending against. Common cost codes follow CSI divisions (01 – General Requirements, 03 – Concrete, 05 – Metals, etc.) but you can customize them for your shop.
For each budget line you'll set:
- **Cost code** (the category)
- **Budget amount** (your estimated cost)
- **Contract type** (lump sum, T&M, or unit price)
If you import your estimate from a spreadsheet, use the CSV import tool — Spandrel maps columns to cost codes automatically.
Step 3: Connect QuickBooks Online
Go to Settings → Integrations → QuickBooks Online and click Connect. You'll be redirected to Intuit to authorize the connection. Once connected, Spandrel imports your:
- Chart of accounts (mapped to GL accounts)
- Items / Products & Services (mapped to cost codes)
- Existing vendor list
- Any project-coded transactions from the last 90 days
The initial sync typically completes in 2–5 minutes depending on company size.
Step 4: Map your QBO sub-customers to Spandrel projects
For QBO costs to flow into a specific project's budget, QBO expenses need to be coded to the matching sub-customer (project entity) in QuickBooks. Spandrel reads the CustomerRef on each purchase line to determine which project to attribute the cost to.
If you already use sub-customers in QBO for job costing, the mapping is immediate. If not, this is a good time to set that up — it takes about 10 minutes per project.
How costs flow from QBO to Spandrel
Once connected, costs reach Spandrel three ways:
1. Real-time webhooks — QBO notifies Spandrel the moment an expense is entered. Costs typically appear in your budget within 30 seconds.
2. Scheduled pull — Every 5 minutes, Spandrel re-pulls to catch anything webhooks missed (common in QBO sandbox environments).
3. Manual sync — Hit "Sync now" in Settings → Integrations if you want an immediate refresh.
Reading the budget grid
Once costs are flowing, the budget grid shows for each cost code:
- **Budget amount** — your original estimate
- **Committed costs** — signed subcontracts + approved change orders
- **Actual costs** — invoices confirmed and posted
- **Remaining budget** — budget minus actual and committed
- **% complete** — based on actual vs. budget
Over-budget lines are flagged in red. Any QBO cost that hits a cost code with no corresponding budget line surfaces as an "Unbudgeted" row — amber-badged, read-only, and visible so nothing is silently missed.