Skip to main content

5 Steps to an Internal Financial Audit for a Roofing Company's Annual Review

Michael Torres, Storm Damage Specialist··30 min readRoofing Financial Operations
On this page

An internal financial audit for a roofing company is a structured management review of your own books, run by you and your office team, to catch weak records, reconcile job costs against the bank, find cash leaks, check payroll and vendor controls, and decide what needs a CPA, a tax preparer, or a lawyer before year end. It is not a certified audit, and it does not pretend to be one. It is the cleanup you do before the professionals get involved, so they spend their time on judgment calls instead of fixing your data entry.

Here is the short version, the way a seasoned roofer would say it across a tailgate: reconcile every bank, card, and loan account through a fixed cutoff date; tie every dollar of revenue to a real job file; sample a handful of jobs and trace them end to end; pull payroll and vendor records and look for the things that get small contractors in trouble; then turn what you found into a few plain-language controls so you are not doing this same firefight next December. Five steps, in that order. The order matters more than most people think, because each step depends on the one before it being clean.

The distinction worth burning into your head up front: if a bank, a bonding company, an investor, a public agency, or a buyer is requiring audited financial statements, that is a CPA engagement and nothing on this page substitutes for it. The word "audit" carries a specific professional meaning there. What this page describes is an internal review, sometimes called a management review or a financial health check. It improves your records and your controls. It does not produce assurance, it does not give you tax advice, and it does not replace your accountant's judgment.

Why bother if it is not the "real" audit? Because the data quality that comes out of your own review is what determines whether your CPA's work is cheap and fast or expensive and slow, whether your surety underwriter trusts your work-in-progress schedule, and whether you actually know which jobs made money. The IRS recordkeeping guidance frames it simply: good records help a business monitor progress, prepare financial statements, identify sources of income, track deductible expenses, prepare tax returns, and support what those returns report. Every one of those purposes lives or dies on the connection between a source document and the ledger. A roofing internal audit is the act of testing that connection, job by job and account by account.

What an internal financial audit is, and what it is not

The fastest way to waste a week is to confuse the four different things people mean when they say "audit." They are not interchangeable, and your bank, your insurer, and your CPA each mean something different by the word.

Type of review Who performs it What it produces When a roofer needs it
Internal financial review (this page) Owner, office manager, in-house bookkeeper Cleaner records, a corrective-action list, better questions for advisors Annually at minimum; monthly for cash and receivables
Compilation A CPA Financial statements with no assurance When a lender or bonding company asks for CPA-prepared numbers but not assurance
Review engagement A CPA Limited assurance, analytical procedures Mid-size bonding programs, some lenders
Audit (assurance) A CPA An opinion on whether statements are fairly stated Large bonding programs, investors, acquisitions, public agencies

An internal review is the only one on that list you can run yourself, and it is the only one that makes the other three cheaper and less painful. Think of it as the work that turns a shoebox into a clean trial balance.

Be honest with yourself about the limits, because pretending otherwise is how owners get burned. An internal review does not give you an opinion you can hand to a bank. It does not settle a tax question; it surfaces tax questions. It does not certify your worker classifications are correct; it flags the ones that look risky. And it does not protect you from a finding you chose to ignore. The value is in the finding and the follow-through, not in a certificate.

A note on tooling, because roofers ask. Your accounting system is your system of record for money. Your CRM and production software is your system of record for jobs. A platform like RoofPredict sits on the property and outreach side, helping you keep job notes, inspection photos, estimates, production dates, and homeowner communications organized and tied to an address so that when your review asks "where is the documentation for this job," there is an answer. That is genuinely useful at audit time, because the single most common reason a job-cost test stalls is missing paperwork. But it is not accounting software, it is not a bank control, and it is not your CPA. Keep those lanes separate and the review goes faster.

Why roofing makes this harder than other trades

General small-business audit advice assumes a tidy world where a sale happens, an invoice goes out, and cash comes in, all in the same month. Roofing breaks that assumption constantly, and the breakage is exactly where your records go wrong.

A contract gets signed in November after a hailstorm. Materials get delivered and charged to your supplier account in December. The crew tears off and installs in January, weather permitting. The homeowner's insurance releases the first check in December and the recoverable depreciation months later, after you submit the completion paperwork. Your salesperson's commission is supposed to be calculated on final margin, but the job is not closed out yet. Permit and disposal fees trickle in. A supplement gets approved in February for the decking nobody could see until tear-off. One roof, and its money is smeared across two tax years and half a dozen accounts.

Multiply that by a few hundred roofs and you can see why a roofing company's books drift out of reality faster than a flooring or HVAC shop's. The internal audit exists to pull those threads back together. Four roofing-specific traits drive almost every problem you will find:

  • Jobs cross periods. Revenue, cost, and cash for a single roof rarely land in the same month, so cutoff and work-in-progress get messy.
  • Deposits and insurance proceeds come in before work is done. Money in the bank is not yet earned revenue, and treating it as such inflates your numbers and your tax bill.
  • Cost shows up after the invoice. Supplements, disposal tickets, warranty callbacks, and late supplier bills hit after a job looks "done," quietly eating margins you already reported.
  • Cash, cards, and crews are decentralized. Multiple cards, fuel accounts, and supplier counters mean spending happens in a dozen places before any paper reaches the office.

Keep those four in mind as you work the five steps. Almost everything that follows is a way of catching one of them before it distorts your financials.

Step 1: Define the scope and lock the cutoff date

The review starts with two decisions: what you are looking at, and where you draw the line in time. Get these wrong and everything downstream is mush.

Pick your scope by risk, not by completeness

You cannot review everything at the same intensity, and you should not try. A useful roofing scope, ranked roughly by how often it hides problems, looks like this: cash and debt; revenue and accounts receivable; customer deposits and insurance proceeds; job costing and work-in-progress; payroll, commissions, and worker classification; vendor and subcontractor payments; sales and use tax where it applies; owner transactions; and fixed assets and inventory. Decide which of these get a deep look this year and which get a light pass. A shop that just survived a payroll-tax notice should weight payroll heavily. A shop that grew fast on storm work should weight deposits, insurance proceeds, and receivables.

Write the scope down in one page. "This year's review covers the calendar year, all operating and payroll bank accounts, all company credit cards, the equipment and truck loans, a sample of fifteen jobs, full payroll register review, full vendor and 1099 review, and owner-transaction review. It does not re-examine the prior-year fixed-asset detail, which the CPA reviewed last year." That single page keeps you honest and keeps the project from sprawling.

Lock the cutoff and respect it

For a calendar-year review, December 31 is your cutoff. The discipline is deciding which invoices, bills, deposits, card charges, and payroll runs belong before that line and which belong after it. Because roofing jobs cross periods, this is where most of your timing problems live. A material delivery dated December 28 but entered January 4 is a cutoff issue. A customer payment received December 30 but deposited January 2 is a cutoff issue. An insurance check received in December for a job that installs in March is both a cutoff issue and a deposit issue.

You are not trying to fix the accounting treatment of these items yourself; that is often your CPA's call. You are trying to find and list them so the right person decides. IRS Publication 583 describes the recordkeeping pieces a small business keeps, including business checkbooks, receipt and disbursement summaries, and employee-compensation records. The point of cutoff work is to make sure each of those ties out at the line you drew, not three days fuzzy on either side.

Assign owners and check segregation of duties

Give each area one named owner: bank reconciliation, receivables, payables, payroll, job costing, and overall management review. Then ask a harder question. Does one person currently open the mail, enter the deposit, set up new vendors, approve invoices, and reconcile the bank? If so, you have just identified your single biggest control weakness, and you found it in the first ten minutes.

This is not paranoia. The Association of Certified Fraud Examiners consistently reports that the smallest organizations suffer the highest median fraud losses precisely because they lack basic separation of duties, and that billing schemes and check tampering are among the most common schemes hitting businesses with fewer than a hundred employees. A roofing office of four people is exactly that profile. You do not need to suspect anyone. You need a second set of eyes on the steps where money leaves the building.

SCOPE & CUTOFF WORKSHEET (one page, fill before you start)

Review period:        Jan 1 ____ to Dec 31 ____
Cutoff date:          Dec 31 ____
Bank/card accounts:   ____ operating  ____ payroll  ____ cards  ____ LOC
Loans in scope:       ____ trucks  ____ equipment  ____ SBA/term
Job sample size:      ____ jobs (mix of types, see Step 3)
Deep-dive areas:      ____________________________________
Light-pass areas:     ____________________________________
Out of scope:         ____________________________________

Owners:
  Bank/card recon ......... ____________
  Receivables ............. ____________
  Payables/vendors ........ ____________
  Payroll ................. ____________
  Job costing/WIP ......... ____________
  Management review ....... ____________

Segregation flag (Y/N): Does one person handle cash receipts,
  vendor setup, invoice approval, AND bank reconciliation? ___
  If Y, this is finding #1.

Step 2: Reconcile cash, debt, and credit cards first

Everything else in the review is built on cash being right. If your bank accounts are not reconciled through the cutoff, your revenue is unreliable, your margins are fiction, and your job-cost reports are guesses. Reconcile first, always.

Reconcile every account, not only the main one

Reconcile every business checking account, every savings account, every credit card, the line of credit, each term loan, and every payment processor (the merchant account, the financing portal, the card-on-file system) through December 31. Roofers forget the processors constantly, and that is where deposits get lost. A homeowner pays $14,200 by card; the processor holds a fee and a reserve and deposits $13,760 two days later; if you only reconcile the bank, you never see the $440 and the timing gap, and your revenue is off.

The IRS guidance on records is blunt that your books must show gross income, deductions, and credits, and that supporting documents include deposit slips, canceled checks, invoices, and receipts. The bank feed alone does not satisfy that. Every deposit should connect to a customer, a contract, a financing draw, an insurance payment, or an owner contribution. Every withdrawal should connect to a vendor bill, a payroll item, a tax payment, a loan payment, a card payment, or an owner distribution. If a deposit or a withdrawal has no story, that is a finding.

Work the reconciliation exceptions

A clean reconciliation is not the goal; the exceptions are the goal. Pull the list and work each one:

  • Stale uncleared checks (anything outstanding more than 90 days, especially to subs or suppliers).
  • Uncleared deposits sitting on the books with no matching bank activity.
  • Duplicate payments to the same vendor for the same invoice.
  • Negative cash balances that nobody can explain.
  • Owner-paid business expenses that never made it into the books.
  • Anything parked in "uncategorized," "ask my accountant," or a suspense account.

That uncategorized account is where mistakes go to hide. Empty it. Every line in it is either a coding error, a missing receipt, or a transaction nobody understood, and all three are findings.

Match card charges to jobs and people

Roofing crews run on cards: fuel, the supplier counter, equipment rental, the hardware store at 6 a.m. Match charges to receipts and, where you can, to job numbers. Then look at the control around the cards. Who holds each one? What is the limit? Are receipts required before a charge gets coded, or does it sail through uncoded? Card abuse and accidental personal spending are among the easiest leaks to find and the easiest to stop, and they show up here.

Tie out the debt

Compare every loan balance in your accounting system to the lender's year-end statement. Split principal, interest, fees, and any escrow. The classic roofing mess is a truck loan or equipment loan where the whole monthly payment got coded to an expense account, so the balance sheet shows the wrong liability and your expenses are overstated. Clean that before your CPA touches the file, because untangling it on their clock is expensive.

Step 3: Test revenue, receivables, deposits, and job costing together

This is the heart of a roofing internal audit, and it is where generic advice fails roofers worst. Most reviews check revenue in one pass and job costs in another and never reconcile the two. In roofing, revenue and cost are the same story told from two sides, and you have to test them together.

Sample real jobs and trace them end to end

Do not test in the abstract. Pull a sample of actual jobs that represents your year, and trace each one from contract to cash. A good sample for a roofer covers the shapes that hide different problems:

  • A straightforward retail replacement.
  • An insurance-funded storm job with recoverable depreciation.
  • A commercial or multi-unit project.
  • A job that had one or more approved supplements.
  • A job with a refund, a chargeback, or a warranty credit.
  • A job still open at year end.
  • A job that went sideways on margin (your worst, on purpose).

For each, lay the documents side by side: signed contract, change orders and supplements, the invoice, customer payments and deposits, the material bills, subcontractor bills, the labor allocation or crew hours, permit fees, financing fees, disposal tickets, and any warranty credits. Then ask the only question that matters: does the money in the books match the paper in the file? IRS Publication 334, the small-business tax guide, reinforces that your records must support gross income and deductions with sales slips, paid bills, invoices, receipts, and canceled checks. Organize that support by job as well as by account, because the job is how a roofer actually thinks and where the errors live.

Build a real work-in-progress (WIP) view for open jobs

Here is the single most valuable thing in this whole review, and most small roofers skip it: a work-in-progress schedule for jobs that straddle the cutoff. WIP is standard practice in construction accounting, and it answers the question your tax bill depends on, which is how much of this contract have I actually earned?

The mechanics are simpler than they sound. For each open job: percent complete equals costs incurred to date divided by total estimated costs. Earned revenue equals the contract value times that percent. Then you compare earned revenue to what you have actually billed. Per construction accounting WIP guidance, the two ways that comparison can go are the two numbers you most need to know:

Term What it means Why it matters to a roofer
Overbilling (billings in excess of costs) You have billed more than you have earned Flatters short-term cash, but you still owe the work; it is a liability, not profit
Underbilling (costs in excess of billings) You have earned more than you have billed Drains cash from other jobs and can inflate reported revenue, so you pay tax on money you have not collected

Underbilling is the quiet killer for storm roofers, because supplements and recoverable depreciation routinely lag the work. You did the job, the cost is on your books, but the billing and the cash trail behind. If you treat that job as fully earned without a WIP view, your financials look richer than your bank account, and you can end up paying tax on revenue you have not received. A simple WIP schedule, even in a spreadsheet, surfaces it.

MINI WIP SCHEDULE (one row per open job at cutoff)

Job | Contract | Est. total cost | Cost to date | % complete
    | Earned rev (contract x %) | Billed to date
    | Over/(under) billed (billed - earned)

Flags to chase:
  - % complete > 100% .......... cost overrun or bad estimate
  - Large underbilling ......... unbilled supplements? missing invoice?
  - Large overbilling .......... deposit booked as revenue?
  - Job 'done' in production but open here ... cutoff/closeout gap

Age your receivables and separate the categories

Run an A/R aging and look hard at anything older than your normal collection cycle. The mistake roofers make is treating one aging bucket as one kind of problem. It is not. Old roofing receivables are a mix, and each piece needs a different action:

  • True unpaid invoices the homeowner or GC simply has not paid (collection action).
  • Retainage held by contract on commercial work (not a problem, just timing).
  • Unbilled or pending supplements waiting on insurer approval (not yet collectible).
  • Recoverable depreciation the insurer releases only after completion paperwork (process, not collection).
  • Disputed scope where the customer contests the work (resolution, not dunning).
  • Data-entry errors where a payment was applied to the wrong job (cleanup).

A receivable that cannot be tied to a current, specific collection or completion action is not healthy working capital, and you should stop counting it as such. Assign every aged line one of those categories and a next step.

Separate deposits and insurance proceeds from earned revenue

Money collected before the work is done is a liability, not income, until you earn it. Storm deposits, financing draws, and insurance checks received before materials are even ordered all belong in this bucket. Confirm with your accountant how these should be presented, then make sure your books reflect open obligations on those jobs. The honest framing here matters: a roofer or any tool a roofer uses documents conditions, age, photos, and measurements that support the homeowner's own insurance claim. The insurer decides coverage. Nobody on your side approves, settles, negotiates, or guarantees a claim, and you never offer to waive or absorb a homeowner's deductible, because in many states that crosses into fraud and unauthorized public adjusting. The deductible is the homeowner's to pay, full stop. Your job at audit time is just to make sure the money already in your bank is labeled correctly.

Read the job-cost patterns, not the people

When you look across the job sample, you are hunting for patterns that point to a broken record or a missing control, not for someone to blame. Watch for jobs with missing material invoices, labor coded to the wrong project, dump fees that look two or three times normal, duplicate subcontractor invoices, margin that swings wildly by salesperson, and costs that posted weeks after the job was "closed." Each pattern is a record to correct and a workflow to tighten, and most of them trace back to the four roofing traits from earlier: cost showing up late, deposits booked as revenue, or decentralized spending that never got coded to the right address.

Step 4: Review payroll, vendors, taxes, and record retention

Payroll and vendor records carry the highest compliance risk in a roofing company because they touch wage law, tax, insurance, and worker classification all at once. This is the section where a sloppy book becomes an actual liability, so slow down here.

Reconcile payroll to the bank and the tax deposits

Tie your payroll registers to the actual bank withdrawals and to the tax deposits. The Small Business Administration's tax guidance lays out that a small employer's obligations can include income tax withholding, Social Security and Medicare, federal unemployment, and a stack of state-level duties: state withholding, state unemployment insurance, workers' compensation, and disability insurance in some states. For each payroll run, the cash out the door, the net pay, and the tax deposits should all reconcile. A payroll run that does not match a bank withdrawal, or a missing tax deposit, is a drop-everything escalation, not a routine cleanup item.

Then look at the roofing-specific pay structures, because they are where mistakes hide: sales commissions, draw-against-commission programs, piece-rate labor, production bonuses, expense reimbursements, and owner pay. Your internal review's job is to flag questions about how these are treated, not to invent a legal conclusion. Whether a draw is wages, whether a reimbursement was accountable, whether a bonus was taxed correctly: those go to your payroll provider and tax advisor.

Take worker classification seriously

Nothing on this list will hurt a roofing company faster than misclassifying employees as 1099 subcontractors. The IRS common-law test weighs three categories of evidence: behavioral control (do you direct how the work is done), financial control (who controls the business side, supplies the tools, bears the profit or loss), and the type of relationship (permanency, written contracts, benefits). A contract that calls someone an independent contractor does not make them one; the facts of the relationship decide, and the label loses. Misclassification can mean liability for back employment taxes plus penalties, and state rules are often stricter than the federal test.

For a roofer, the danger zone is the crew you treat as subs but direct like employees, who use your materials, work only for you, follow your schedule, and have no real business of their own. You are not going to settle this in your internal review, and you should not try. List the relationships that look risky and put them in front of your CPA or an employment attorney before year-end forms go out. Getting a 1099 wrong is far cheaper to fix in December than after a state audit.

Clean up vendors and subcontractor records

Vendor files are where billing fraud and simple sloppiness both live, and the ACFE's research is clear that billing schemes are one of the most common ways small businesses lose money. You do not need to assume wrongdoing to clean this up; you just need to look. Pull the vendor list and flag:

  • Missing W-9s on anyone you paid for services.
  • Duplicate vendors (the same supplier entered three slightly different ways).
  • Inactive vendors that should be archived.
  • "Personal" vendors that look like an owner's or employee's name.
  • Unusual or changed remittance addresses (a classic redirect scheme).
  • Payments with no matching invoice.
  • Subcontractors with no certificate of insurance or signed agreement on file where your policy requires one.

Then reconcile subcontractor payments to the job files and to the year-end 1099s. If one sub is being paid under several names or accounts, that goes to your accountant before 1099s are filed, not after.

Adopt a written retention schedule

Know how long to keep what, and write it down so staff store records consistently instead of guessing. A few anchors:

Record type Keep for Source
Payroll records At least 3 years DOL Fact Sheet #21
Wage-computation records (time cards, schedules, rate tables) At least 2 years DOL Fact Sheet #21
General tax records Often 3 years, longer in some situations IRS recordkeeping
Employment tax records Separate, longer retention expectations IRS guidance

The Department of Labor's recordkeeping rule requires preserving payroll records for at least three years and the records used to compute wages, including time cards, schedules, wage-rate tables, and records of additions to or deductions from wages, for at least two. That two-year bucket is directly load-bearing for a roofer, because your job costing leans on those same crew-hour and labor-allocation records. Lose them and you lose the ability to prove your labor cost on a job. Set retention rules after your CPA and counsel weigh in, then train the office to follow them.

Step 5: Turn findings into controls before the next year starts

A review that produces a list and nothing else was a waste of a week. The payoff is converting findings into a handful of operating controls that prevent the same problems from recurring. This is where you stop auditing and start managing.

Borrow the internal-control framework, skip the bureaucracy

The GAO Green Book and the COSO internal control framework describe internal control as five connected components: the control environment, risk assessment, control activities, information and communication, and monitoring. Those were written for governments and large companies, but the bones translate to a roofing office of six people without any of the bureaucracy. You do not need a binder. You need a few activities someone owns and reviews.

Translated into roofing, that means a small set of rules like these:

  • Every job has a contract, an approved estimate, change-order and supplement records, a deposit record, material invoices, a labor allocation, subcontractor invoices, a closeout date, and a collection status before it is considered complete.
  • Bank and card accounts are reconciled by a fixed date each month.
  • The owner reviews aged receivables every month and assigns each a next step.
  • New vendor setup and any payment over a set dollar threshold require a second person's approval.
  • Card receipts are attached before month-end close, or the charge is not coded.
  • Sales commissions are finalized only after job closeout and final cost review.

Write each control so it cannot be argued with

Vague controls fail. "Review job costs" is not a control; it is a wish. A real control names who, what, when, who checks, and what happens on failure. Compare:

Weak: "We review job costs."

Strong: "The operations manager reviews every job closed in the prior month by the tenth business day, signs off on revenue, material, labor, subcontractor, and warranty adjustments, and any job that cannot be closed is flagged to the owner with a reason."

The second one survives turnover, vacations, and a bad week, because anyone can pick it up and know exactly what to do.

Prioritize ruthlessly

You may end up with twenty-five findings. Five of them matter this week, and burying those five under twenty housekeeping items guarantees nothing gets fixed. The usual roofing top-five: unreconciled bank accounts, aged receivables with no collection plan, missing or incomplete payroll records, duplicate or unsupported vendor payments, and jobs closed without a final cost review. Put each one in a corrective-action log with an owner, a due date, the evidence that proves it is fixed, and a follow-up date. Everything else goes on the same log, ranked below those.

CORRECTIVE-ACTION LOG

No | Finding                              | Severity | Owner | Due | Evidence to close | Follow-up
1  | 2 bank accts unreconciled (Nov-Dec) | HIGH     | ____  | ___ | recon report       | ___
2  | $38k A/R > 120 days, no notes       | HIGH     | ____  | ___ | aging w/ next steps| ___
3  | 3 subs missing W-9 before 1099s     | HIGH     | ____  | ___ | signed W-9s        | ___
4  | Dup payment to supplier (inv #4821) | HIGH     | ____  | ___ | credit/refund      | ___
5  | 6 jobs closed, no final cost review | HIGH     | ____  | ___ | signed job recaps  | ___
...| (housekeeping items below)          | MED/LOW  |       |     |                    |

Build the management reports you will actually use

The SBA's manage-your-finances guidance points small businesses at the core disciplines: cash flow, bookkeeping, credit, financing, and insurance. Use the review to stand up a monthly reporting pack you will genuinely read: a profit and loss, a balance sheet, a cash-flow view, A/R and A/P aging, a work-in-progress list, a job-margin report, and an open-supplement/change-order report. A report nobody uses should be retired. A report that drives pricing, hiring, purchasing, or cash decisions gets an owner and a review date. This is also where a property-and-outreach tool earns its keep between audits: when RoofPredict keeps the job documentation, photos, dates, and follow-up tasks tied to each address year-round, next year's review starts with the paper already organized instead of a scramble, and your CRM re-engagement work runs off the same clean records.

A realistic timeline: run this in December, not April

Timing changes everything. A review you run in December gives you weeks to collect missing documents, fix coding errors, chase old receivables, sort out 1099s, and ask your CPA sharper questions before anything is filed. The same review in February is cleanup after the fact, when half the decisions have already hardened. Here is a workable cadence for a small roofing company.

When Focus Output
Late November Step 1: scope, cutoff, owners, segregation check One-page scope, owner assignments
First half of December Step 2: reconcile all cash, cards, loans, processors Clean reconciliations, exception list
Mid-December Step 3: job sample, WIP schedule, A/R aging, deposits Traced jobs, WIP view, categorized aging
Late December Step 4: payroll, classification, vendors, 1099 prep, retention Flagged questions, clean vendor list
Late December / early January Step 5: controls, corrective-action log, advisor questions Control list, prioritized log, CPA question sheet
January Hand a clean file and a question list to the CPA Faster, cheaper professional engagement

The whole thing is a few focused days spread across five or six weeks for a typical small contractor, not a full-time month. The companies that dread it are the ones doing it cold in April with no monthly habits underneath. The ones that breeze through it reconcile monthly and review receivables monthly, so the annual pass is mostly confirmation.

Red flags that should not wait for the cleanup meeting

Some findings get escalated to ownership, the CPA, the payroll provider, or counsel immediately, not parked on a list. Treat these as alarms:

  • Bank accounts that will not reconcile, or unexplained negative cash.
  • A missing payroll tax deposit, or a payroll run that does not match the bank.
  • Aged receivables with no collection notes and no completion story.
  • Customer deposits or insurance proceeds that do not match any open job.
  • Duplicate vendor payments, or payments to a vendor nobody recognizes.
  • A changed vendor remittance address that nobody authorized.
  • Large credit-card balances coded to a vague "miscellaneous" account.
  • Subcontractors paid under multiple names or accounts.

Watch the roofing-specific contradictions hardest, because they reveal whether you can trust your margins at all. A job marked complete in production should not still be open in accounting with no reason. A job marked unpaid in A/R should not show fully collected in the CRM. A final-invoiced job should have its major material, labor, subcontractor, permit, and disposal costs posted or specifically accrued. When production status and accounting status tell two different stories about the same roof, your margin report is fiction, and you are pricing the next job off a number you cannot trust.

Owner transactions need their own careful pass. Owner loans, capital contributions, distributions, personal reimbursements, truck and fuel charges, meals, home-office items, and company-card personal use should be separated and put in front of the accountant. Your review does not decide the tax treatment; it makes sure none of it is invisible when tax prep starts. Equipment and inventory hide errors too: compare trucks, trailers, ladders, safety gear, big tools, and stocked materials against your fixed-asset list or inventory records. Assets disposed of but still on the books, missing equipment, and large material balances with no physical count all become follow-up items.

The most dangerous red flag of all is silence. If no one owns an account, no one reads a report, or staff cannot explain how a number is produced, that area needs a control. A plain monthly owner review beats an elaborate spreadsheet nobody trusts every time.

Questions to bring to your advisors

A good internal review produces better questions, not the pretense that management has every answer. Walk into your year-end meetings with a written list.

For the CPA or tax preparer: Which records are still missing? Are deposits, insurance proceeds, and open jobs presented correctly? Does the accounting method (cash, accrual, or a construction method like completed-contract or percentage-of-completion) still fit the business as it has grown? Are owner transactions coded properly? Do any depreciation items, expense categories, or tax elections need attention? Is our WIP treatment defensible?

For the payroll provider: Are employee records, wage records, commissions, draws, reimbursements, deductions, and year-end forms complete and reconciled? Are there worker-classification relationships we should review before filing 1099s?

For the insurance agent and bonding contact: Which financial reports do you rely on at renewal or underwriting? Do our receivables, debt schedule, equipment list, or job-backlog and WIP reports need cleanup before you see them? Surety underwriters in particular read WIP schedules closely, so a clean one is worth real money in your bonding capacity.

For your internal managers: Which reports do you actually use to make decisions? Anything nobody uses should be fixed, replaced, or retired. Anything that drives pricing, hiring, purchasing, or cash gets an owner and a review schedule.

Common mistakes that sink a roofing internal audit

A few patterns show up again and again in contractors who run this and still come out with bad numbers:

  • Skipping the reconciliation and jumping to margins. If cash is not tied out, every margin number is a guess dressed up as a fact.
  • Reviewing revenue and job cost separately. In roofing they are one story; tested apart, the contradictions hide.
  • Treating deposits and insurance checks as earned revenue. This inflates income, your tax bill, and your sense of how the year went.
  • Ignoring WIP on open jobs. Without it, storm roofers routinely overstate profit and pay tax on money they have not collected.
  • Lumping all aged receivables together. Retainage, pending supplements, recoverable depreciation, and genuine deadbeats need four different actions.
  • Doing it in April. Prevention becomes cleanup, and you have lost the window to fix anything before filing.
  • Producing a list and no controls. The same findings come back next year, larger.
  • Letting one person control the whole money cycle. The cheapest control you will ever add is a second set of eyes, and it is the one small shops skip.

Avoid those eight and your review will be worth far more than the time it costs. None of this requires a finance degree. It requires the same discipline a good roofer already brings to a tear-off: look under the surface before you commit, document what you find, and fix the deck before you cover it.

Sources checked: June 18, 2026.

FAQ

Is an internal financial audit the same as a CPA audit for a roofing company?

No. An internal financial audit is a management review you run yourself to reconcile cash, test job costs, check payroll and vendors, and clean up records. A CPA audit is a separate professional engagement that produces an opinion or assurance on your financial statements, which a bank, bonding company, or investor may require. The internal review improves your records and makes any CPA engagement faster and cheaper, but it does not replace it or carry the same professional standing.

What should a roofing company review first during an annual financial audit?

Reconcile cash and debt first: every bank account, credit card, line of credit, term loan, and payment processor through your cutoff date. Cash reconciliation is the foundation everything else rests on. If your accounts are not reconciled, your revenue, margins, and job-cost reports are unreliable, so reviewing them before cash is tied out wastes effort. Once cash is clean, move to revenue and receivables, then job costing and work-in-progress, then payroll and vendors.

Why does work-in-progress (WIP) matter for a roofing company's books?

Roofing jobs cross months, so a contract can be partly earned at year end while the billing and cash lag behind. A WIP schedule calculates percent complete from costs to date over total estimated cost, then compares earned revenue to what you have billed. That reveals underbilling (you earned more than you billed, which drains cash and can inflate taxable revenue) and overbilling (you billed ahead of the work, which is a liability, not profit). Storm roofers especially need it because supplements and recoverable depreciation lag the work.

How long should a roofing company keep payroll and tax records?

The U.S. Department of Labor requires keeping payroll records for at least three years and the records used to compute wages, such as time cards, schedules, and wage-rate tables, for at least two years under FLSA Fact Sheet #21. IRS tax records generally run about three years, and employment tax records have their own, often longer, retention expectations. Set a written retention schedule with your CPA and counsel, then train your office to store records consistently so your labor and job-cost trail stays intact.

How do I handle aged receivables in a roofing financial review?

Do not treat one aging bucket as one problem. Roofing receivables are a mix: true unpaid invoices needing collection, contractual retainage that is just timing, pending supplements waiting on insurer approval, recoverable depreciation the insurer releases after completion paperwork, disputed scope, and plain data-entry errors. Sort every aged balance into the right category and assign a specific next step. Any receivable you cannot tie to a current collection or completion action should not be counted as healthy working capital.

What worker classification risks should a roofing company watch for?

The biggest is treating crew members as 1099 subcontractors when the facts make them employees. The IRS weighs behavioral control, financial control, and the type of relationship, and a contract calling someone an independent contractor does not override those facts. The danger zone is a crew that works only for you, follows your schedule, and uses your materials yet gets a 1099. Misclassification can mean back employment taxes and penalties, and state rules are often stricter, so flag risky relationships for your CPA or an employment attorney before filing year-end forms.

When should a roofing company run its internal financial audit?

Run the full review in December, before year end. That gives you weeks to collect missing documents, fix coding errors, chase old receivables, sort out 1099s, and ask your CPA sharper questions before anything is filed. A February review becomes cleanup after key decisions have already hardened. Beyond the annual pass, reconcile cash and review receivables, payables, payroll, and job margins monthly or quarterly so the year-end review is mostly confirmation rather than a firefight.

Does a roofing company owe sales tax on materials or labor?

It depends entirely on your state, and the rules vary widely. Many states treat contractors as the end consumer, so you pay sales tax when you buy materials and do not charge the homeowner tax on a real-property improvement. Other states tax installation labor or treat itemized contracts differently from lump-sum ones, hinging on whether the work is a real-property improvement or a sale of tangible personal property. Confirm your specific obligations with your state revenue department and your CPA; do not assume another state's rule applies to you.

Can RoofPredict replace accounting software or a CPA for a roofing audit?

No. RoofPredict helps keep job records, inspection photos, estimates, production dates, and homeowner communications organized and tied to a property address, which makes audit time easier because the documentation is already in order. It does not reconcile bank accounts, post journal entries, calculate WIP, file taxes, review payroll, or provide the assurance a CPA does. Use it for the property and outreach side of your records, and keep your accounting system, bank controls, and CPA in their own lanes.

The Roofline by RoofPredict

Stay Ahead of Roofing Market Changes

Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.

By signing up, you agree to receive The Roofline by RoofPredict. Unsubscribe anytime.

Related Articles