Field notes

How to budget a house flip: scopes, cost codes, and the signing table

By Daniel Petrik, builder & founder of Firmabuilt · August 23, 2026 · 7 min read

Most flip budgets die the same death: a spreadsheet made at underwriting, touched twice in month one, abandoned by month two. Not because the flipper is lazy — because the spreadsheet answers the wrong question. It tracks what you've spent, which is history. A working budget answers what this job will have cost when it's done, which is the number that decides whether you make money.

Two readings of the same dollars

The core move is realizing a budget wants to be read two ways, and neither replaces the other:

  • By scope — the kitchen, the roof, the master bath. This is how you price a job, because it's how the work actually happens: a scope crosses trades (the kitchen has framing, plumbing, electrical, tile, paint) and gets one number.
  • By cost code — framing lumber, plumbing labor, fixtures. This is how your books and your taxes want the money classified, and it's comparable across jobs: your framing cost per square foot means something from flip to flip. A scope named "Master Bathroom Remodel" doesn't.

Price by scope, classify by code. Keeping both readings live against the same spend is tedious by hand — which is why the spreadsheet dies — but it's exactly the kind of bookkeeping software should do while you work.

Estimated, committed, actual — the three columns that matter

"Budget vs actual" is a two-column story, and the missing middle column is where flips lose money:

  • Estimated — what you priced the scope at when the deal was underwritten.
  • Committed — what you've signed for. The moment a contract is inked, that money is spent in every way that matters. It just hasn't moved yet.
  • Actual — what has actually left the account.

Here's the uncomfortable truth: most overruns are locked in at the signing table, months before they show up as actuals. If you estimated a scope at $40,000 and signed contracts totaling $60,000, the $20,000 overrun happened the day you signed — while your "budget vs actual" spreadsheet still showed you comfortably under budget, because the invoices hadn't landed yet. By the time actuals catch up, the money was spent long ago and every decision you made in between was based on a fiction.

Track committed against estimated per scope, at signing time, and overruns become something you decide about instead of something you discover.

Contingency is a budget line, not a mood

Ten to fifteen percent of the rehab budget, held as an explicit line — and drawn down visibly. The failure mode isn't skipping contingency; it's treating it as fog. When contingency is a real number that shrinks in daylight every time an overrun or an unscoped surprise eats some, you can see the moment the job starts running out of slack — while there's still time to make cuts elsewhere.

Labor is a cost, not a rounding error

If you run a W-2 crew, their hours are project cost just as surely as lumber — at their loaded rate, not their wage. A crew day that goes to the wrong job, or to no job in particular, is invisible in a spreadsheet and painfully visible in the margin. Timecards that land on the job automatically (clock in on the task, hours flow to the scope as labor cost) close the biggest hole in most flippers' actuals.

And the budget's twin: the clock

A flip budget that ignores time is half a budget. Every day of hold has a dollar cost, which means the schedule is a financial document — and a slip on the critical path is an overrun exactly as real as a busted tile bid. The flippers who consistently make money treat the two as one system: money and time, each priced in the other's terms.

Firmabuilt does this arithmetic for you

Budget vs actual by scope, a schedule that prices delay in your holding costs, receipts scanned to cost codes. Built by a builder, run on real flips.

No spam, no card. Just a note when access opens.