Skip to content
Back to blog

Small Contractor Bookkeeping Spreadsheet: Your Bank Balance Is Not Your Money

15 min read·October 8, 2026
Ink and watercolor illustration of five glass jars filled with coins to different levels on a sawhorse workbench in an open garage at dusk, beside a leather tool belt, an orange extension cord and a yellow hard hat, with the framing of an unfinished addition behind

A two-crew remodeler opens the business checking account on October 8 and sees $71,400. Four jobs are running, the trucks are paid off, and a $30,000 owner draw looks safe. It is not. Customers have paid $24,225 for work nobody has done yet, $10,480 of supplier, sub and overhead bills are open, $3,860 of withheld payroll tax has not been deposited, and $8,117 of federal tax on this year's profit has no money set aside for it. After a $9,000 operating floor, the amount this owner can actually take out is $15,718. A small contractor bookkeeping spreadsheet that lists income and expenses by month cannot show that number, because none of those four claims on the cash is an expense yet. The version below is built to produce it.

Every figure in this article comes from one model: a sole proprietor filing Schedule C on the cash method, four jobs in progress, $412,000 collected and $318,500 of deductible expenses paid since January 1, and a federal tax picture taken from last year's return. State income tax is left out; add a row with the same structure for your state.

The Number Your Books Should Produce Is Spendable Cash

Most contractor bookkeeping starts and ends with profit. Profit matters at tax time. During the year, the decision you actually make every week is whether you can spend money: take a draw, put a deposit on a truck, hire a third carpenter. For that decision the bank balance is the wrong number, and the profit figure is wrong too, because a cash-basis profit counts every customer deposit as income the day it lands.

The Cash tab of the workbook shows the remodeler's position on October 8.

Cash tab lineSourceAmount
Bank balance (business checking)Statement, reconciled$71,400
Less: deposits for work not yet doneJobs tab$24,225
Less: open bills (subs, suppliers, overhead)Bills tab$10,480
Less: payroll tax withheld, not yet depositedPayroll register$3,860
Less: federal tax reserve on profit to dateTax tab$8,117
Less: operating floorYour choice$9,000
Spendable cash$15,718

Spendable cash sits in Cash!B9, and its formula is deliberately boring: =B3-SUM(B4:B8). The work happens in the tabs that feed B4 through B7; B7, for instance, is simply =Tax!B9. The four claims add up to $46,682, which is 65 percent of what the bank shows. That ratio is normal for a remodeler who collects deposits, and it is why owners who manage by bank balance feel rich in spring and broke in November.

Four Tabs and a Short Category List

The workbook has a Ledger tab where every transaction lands once, a Jobs tab, a Bills tab and a Tax tab, plus the Cash tab above. The Ledger is the only place you type money. Every other tab reads it with SUMIFS, so a payment entered once updates the job, the tax reserve and the 1099 list at the same time.

Ledger columns: A date, B account, C payee, D job code (A, B, C, D, or OH for overhead, OWNER for draws and contributions, TAX for estimated payments), E category, F Schedule C line, G money in, H money out, I W-9 on file (Y or blank).

Keep the category list short and tie every category to the line it ends up on in Schedule C (2025 form). A 60-account chart copied from accounting software creates coding decisions nobody makes consistently, and inconsistent coding is worse than coarse coding.

Category (column E)Schedule C line (column F)Counts as an expense?
Customer paymentLine 1, gross receiptsNo, income
MaterialsPart III, line 38Yes
SubcontractorLine 11 or Part III, line 39 (pick one with your preparer and keep it)Yes
Crew wagesLine 26, or Part III, line 37Yes
Equipment rentalLine 20aYes
Truck and fuelLine 9Yes
InsuranceLine 15Yes
Permits and licensesLine 23Yes
Small tools and shop suppliesLine 22Yes
Owner draw, estimated tax payment, equipment purchase, loan principalBlankNo

The last row is where most homemade books go wrong. A draw is not an expense for a sole proprietor, an estimated tax payment is not an expense, and a truck is depreciated over several years unless your preparer elects section 179 or bonus depreciation. Leaving column F blank for those rows is what keeps them out of the profit figure: the Tax tab only sums rows that carry a Schedule C line. If you buy equipment, track it separately; the equipment depreciation tracker covers MACRS schedules and the real hourly cost of a machine.

Materials bought tax-free on a resale certificate and installed on a job can create use tax you owe later. That is its own log, covered in the material sales tax and use tax tracker; flag those purchases in the Ledger with a note so they are easy to pull.

Customer Deposits Are a Liability Until the Work Is Done

The biggest line on the Cash tab is money customers paid for work that has not happened. The Jobs tab measures it per job with a cost-to-cost percent complete: cost incurred so far divided by the estimated total cost.

JobContractEst. costCost incurred% completeEarnedCollectedUnearnedUnderbilled
A, kitchen remodel$48,000$34,000$28,90085%$40,800$38,400$0$2,400
B, primary bath$22,500$16,000$4,00025%$5,625$11,250$5,625$0
C, garage addition$96,000$72,000$18,00025%$24,000$38,400$14,400$0
D, rear deck$14,000$9,800$00%$0$4,200$4,200$0
Total$180,500$50,900$70,425$92,250$24,225$2,400

Row 5 holds job A, with the job code in A5:

  • D5 paid to date: =SUMIFS(Ledger!$H:$H,Ledger!$D:$D,$A5)
  • E5 open bills on the job: =SUMIFS(Bills!$D:$D,Bills!$B:$B,$A5,Bills!$E:$E,"Open")
  • F5 cost incurred: =D5+E5. Unpaid bills count, because the lumber is on site whether or not you paid for it.
  • G5 percent complete: =IF(C5=0,0,MIN(1,F5/C5))
  • H5 earned: =B5*G5
  • I5 collected: =SUMIFS(Ledger!$G:$G,Ledger!$D:$D,$A5)
  • J5 unearned: =MAX(0,I5-H5)
  • K5 underbilled: =MAX(0,H5-I5)

Job C is where the money sits. The customer paid a 40 percent deposit on a $96,000 addition, the framing is a quarter done, and $14,400 of that deposit is still owed back to the customer as work. Job A runs the other way: the kitchen is 85 percent done and the customer has paid $2,400 less than the work is worth. That $2,400 is your next invoice, not cash. It never offsets the deposits on B, C and D, which is why the Cash tab reads column J and ignores column K.

Cost-to-cost only works if the estimated cost is current. If job C is running over budget, cost incurred climbs faster than the work, percent complete overstates progress and the unearned figure shrinks on paper. Re-forecast C5:C8 monthly from your job costing spreadsheet. Larger contractors report the same calculation to their bank and surety as a WIP schedule; the construction WIP report shows that version.

Some states put the deposit rules in statute

California caps the deposit itself. Business and Professions Code section 7159(d)(8) requires home improvement contracts to state that the downpayment "MAY NOT EXCEED $1,000 OR 10 PERCENT OF THE CONTRACT PRICE, WHICHEVER IS LESS," and section 7159(d)(9) requires the warning that "IT IS AGAINST THE LAW FOR A CONTRACTOR TO COLLECT PAYMENT FOR WORK NOT YET COMPLETED, OR FOR MATERIALS NOT YET DELIVERED." A California remodeler should never see a $14,400 unearned balance on a home improvement job; if column J shows one, the payment schedule is the problem.

Texas goes after what you do with the money. Property Code section 162.001 makes construction payments to a contractor under a contract for specific Texas real property trust funds, and section 162.031 says a trustee who intentionally or knowingly uses or diverts trust funds "without first fully paying all current or past due obligations" to the beneficiaries has misapplied them. Under section 162.032, misapplying $500 or more is a Class A misdemeanor, and a third-degree felony with intent to defraud. In the model, the $2,600 lumber bill on job C is open. Knowingly paying job A's cabinet installer with job C's deposit while that lumber bill stays open is the pattern the statute describes. A Jobs tab that shows collected and paid by job is the record that proves you did not do it.

Open Bills and Payroll Tax: Money You Have Already Spent

The Bills tab is a five-column list: A vendor, B job code, C due date, D amount, E status. On October 8 it holds $7,000 of job bills (the $2,800 cabinet install sub on A, $1,600 of tile for B, $2,600 of lumber for C) and $3,480 of overhead: a $1,150 insurance installment and a $2,330 card balance. The Cash tab reads it with =SUMIFS(Bills!$D:$D,Bills!$E:$E,"Open"). When you pay a bill, enter the payment in the Ledger and change the status to Paid in the same sitting, or the bill is counted twice, once as cash gone and once as cash owed.

The payroll line is smaller and more dangerous. The $3,860 is income tax and the employees' share of Social Security and Medicare withheld from paychecks, plus your matching share, waiting for the next deposit. The withheld part is trust fund tax: under 26 U.S.C. section 6672, a person required to pay over withheld tax who willfully fails to do so is liable for a penalty "equal to the total amount of the tax evaded, or not collected, or not accounted for and paid over." It is assessed against the responsible person, so the LLC or the corporation does not stand between that bill and you. If your payroll service debits the deposit automatically, this line is still worth keeping until the debit clears, because the money sits in your checking account in the meantime.

The Tax Reserve: The IRS Taxes Deposits You Cannot Spend

On the cash method, IRS Publication 538 says you include in gross income "all items of income you actually or constructively received during the tax year." A deposit is income the day it lands, even though the Jobs tab says it belongs to the customer. That is the tension this tab resolves: the tax reserve is computed on cash profit, and the unearned deposits sit inside that profit.

Tax tab lineFormulaValue
B3 Receipts year to date=SUMIFS(Ledger!$G:$G,Ledger!$E:$E,"Customer payment")$412,000
B4 Deductible expenses paid=SUMIFS(Ledger!$H:$H,Ledger!$F:$F,"<>")$318,500
B5 Net profit to date=B3-B4$93,500
B6 Self-employment tax=B5*0.9235*0.153$13,211
B7 Federal income tax=B5*B12$10,506
B8 Estimated payments made=SUMIFS(Ledger!$H:$H,Ledger!$D:$D,"TAX")$15,600
B9 Reserve still needed=MAX(0,B6+B7-B8)$8,117

The self-employment line uses the statutory rates: 12.4 percent for Social Security and 2.9 percent for Medicare, 15.3 percent in total, applied to 92.35 percent of net earnings. That is 14.13 percent of profit, before a single dollar of income tax. It ignores the Social Security wage base, which only matters above that year's cap.

B12 is the rate that turns profit into federal income tax, and the most honest source for it is your own last return. The remodeler's 2025 return shows $82,000 of Schedule C profit and $20,800 of total federal tax, of which $11,586 was self-employment tax and $9,214 was income tax. B12 is =9214/82000, or 11.24 percent. Because the brackets are progressive, a ratio taken from a lower-profit year understates this year's tax, so treat B9 as a floor and ask your preparer for the marginal rate once profit passes last year's.

Safe harbor protects you from the penalty, not from the bill

Under section 6654(d)(1)(B), you avoid the underpayment penalty if your four installments cover the lesser of 90 percent of this year's tax or 100 percent of last year's, and section 6654(d)(1)(C) raises the second figure to 110 percent when last year's adjusted gross income exceeded $150,000. The installments are due April 15, June 15, September 15 and January 15 of the following year. The remodeler's adjusted gross income was under $150,000, so each installment is =IF(B14>150000,1.1,1)*B15/4, or $5,200, and three were paid on time.

That keeps the penalty away. It does nothing about the size of the April check. Tax on profit so far is already $23,717 against $15,600 paid, and every profitable week adds to the gap. Owners who pay the safe harbor and spend the rest discover the difference on April 15, usually in the slowest month of the year.

The December deposit problem

Of the $93,500 profit, $24,225 is unearned deposits. At the model's rates, $6,145 of this year's federal tax ($3,423 of self-employment tax and $2,722 of income tax) is tax on money that still belongs to customers B, C and D as work. It is a timing difference, since next year's profit will be lower by the same amount when the work is done, but the cash leaves this year. A $20,000 deposit received December 20 for a January start adds $2,826 of self-employment tax and $2,247 of income tax to this year's bill. If the customer is solid and the start date is firm, invoicing that deposit on January 2 moves the tax a full year. If you need the deposit to order materials, take it in December and put $5,073 of it in the reserve the same day.

What a $30,000 Draw Does to Each Number

The table reads the same October 8 balance two ways: a draw sized on the bank balance and a draw sized on spendable cash.

LineDraw sized on bank balanceDraw sized on spendable cash
Bank balance before draw$71,400$71,400
Owner draw$30,000$15,718
Bank balance after draw$41,400$55,682
Claims on that cash (deposits, bills, payroll tax, tax reserve)$46,682$46,682
Cash left after every claim-$5,282$9,000
Operating floor intact?No, $14,282 below itYes

After the $30,000 draw, the remodeler can no longer pay every open bill, finish the work customers have paid for and cover the tax already earned. The account still shows $41,400, so nothing feels wrong. The shortfall surfaces in six or eight weeks when job C needs its roof trusses, and the usual fix is the next customer's deposit. That is the deposit chase: each new job funds the end of the previous one, which works until sales slow down. In Texas, it is also the pattern section 162.031 describes.

Sizing the draw on spendable cash leaves exactly the $9,000 floor after every claim. The owner takes $14,282 less today, and none of it has to be borrowed back from a customer in December.

Two Checks That Keep the Books Honest

Monthly bank reconciliation

Every number above depends on the Ledger matching the bank. Put the opening balance in Setup!B2, then on the Cash tab compute the ledger balance with =Setup!B2+SUM(Ledger!$G:$G)-SUM(Ledger!$H:$H) and compare it with the statement balance in B3: =IF(ABS(B3-B11)<0.01,"RECONCILED","OFF BY "&TEXT(B3-B11,"$#,##0.00")). A difference is almost always a check that has not cleared, a card fee you never entered, or a deposit you entered twice. Find it before you trust Cash!B9, the spendable line; a spendable figure built on an unreconciled ledger is a guess.

The 1099-NEC and W-9 list

For payments made after December 31, 2025, the IRS instructions for Forms 1099-MISC and 1099-NEC require a Form 1099-NEC for each person you paid at least $2,000 in the course of your business, filed by January 31. The old $600 figure still appears in the 2025 Schedule C instructions because it applied to 2025 payments. A Vendors tab lists each sub in column A, computes the year's payments in B5 with =SUMIFS(Ledger!$H:$H,Ledger!$C:$C,$A5,Ledger!$E:$E,"Subcontractor"), keeps the W-9 status in C5, and flags the gap in D5 with =IF(AND(B5>=2000,C5<>"Y"),"GET W-9",""). Collect the W-9 before the first check; by January the sub may have moved on to another state. The landlord version of this list, with the backup withholding rules, is in the 1099-NEC vendor tracking article, and the same Vendors tab is the right place for the insurance expiration dates described in the certificate of insurance tracker.

What to Set Up This Week

  1. Open a separate business checking account if you do not have one. Every formula above assumes the bank balance in B3 is business money only.
  2. Enter year-to-date transactions in the Ledger with a job code and a category on every row. Leave column F blank for draws, tax payments and equipment purchases.
  3. Build the Jobs tab with current estimated costs, and check column J against your contracts. If you work in California and any home improvement job shows a large unearned balance, fix the payment schedule on the next contract.
  4. Pull last year's return and fill B12, B14 and B15 on the Tax tab. Move the Tax!B9 reserve to a separate savings account today.
  5. Reconcile to the bank statement, then read Cash!B9 before every draw, equipment purchase or hire.

For the remodeler, those five steps turn a $71,400 balance into a $15,718 decision, and a $30,000 draw that would have left the business $5,282 short of its obligations into one that leaves the $9,000 floor intact.

The Jobs tab is only as good as the cost data behind each job. The Construction Budget Tracker keeps that data per project: budget by CSI division or your own categories, actual cost against each line with the variance, change orders, percent complete against percent spent, and a payment log showing which sub and supplier invoices are paid, pending or due this week. It does not keep your company books or compute the tax reserve. Use one tracker per job, read its paid and pending totals into columns D and E of the Jobs tab, and the unearned deposit figure on your Cash tab will rest on the same numbers you use to run the job.

Related template

Construction Budget Tracker

Track every line item, change order, and payment across your entire project. Spot a $23K billing discrepancy before it hits your bottom line — not after.

Get the Template — $49