Sign up to our newsletter

Made for finance teams.

Quick Links

How CPA Firms Get Clients to Approve Spend Before the Invoice Arrives

  • Last Updated at : October 14,2026
  • Published at : October 08,2026
  • 22 min read

In June 2026 we spoke with a fractional controller who works with founder-led construction and roofing companies, most of them between $2 million and $20 million in revenue and running on QuickBooks. His clients’ biggest blind spot: they couldn’t see whether a job was over budget until after it was finished. Sales reps, many of them 1099 contractors, managed their own projects and ordered their own materials, and the paperwork behind those orders was thin. The invoices still arrived. They just arrived with no approval behind them and no clear link to a job.

What he wanted for those clients was simple to say and hard to do: standard approvals, purchases tracked against a job budget, and invoices matched to the PO. And he was clear about one condition. It only works if the owner mandates it.

Partway through the call he asked us a practical question. Walk me through one residential roofing job with three to five suppliers. What actually happens, from the order to the bill in QuickBooks?

This guide is our answer, written for the CAS firm that has to set it up. We follow one job, Job 2417, a residential re-roof, through all six steps. Job 2417 is an illustrative example built on the clients he described, not a real client. The steps are the same for any client that buys from vendors.

The idea itself is simple. The client requests the purchase, an approver says yes, and a purchase order goes to the vendor. When the invoice arrives, your team matches it to a PO that already carries the coding and the approval trail.

Key takeaways

  • PO before invoice for CPA firms comes down to six steps: a PO threshold, named approvers, coding at request, a vendor notice, PO-to-invoice matching and a weekly exception review.
  • Start with one client for 60 days, and agree the baseline numbers in week zero.
  • It sticks only when the owner mandates it and project managers own purchasing.
  • QuickBooks Online Advanced and Enterprise Platinum or Diamond can approve POs, but request coding and exception review still sit with your firm.
  • Software that enforces these steps, such as ProcureDesk, removes the manual chasing.

Who this is for: CAS, outsourced accounting and fractional controller firms whose clients buy from vendors every week and run AP with one to three people. That covers founder-led contractors through mid-market companies with 100 to 1,000 employees. If a client places a handful of orders a month, the manual version of these steps is enough. If a client already runs SAP Ariba or Coupa, it has this built in.

Free checklist · 4-page PDF

Get the client approval checklist

The six sign-off steps, approver matrix, exception log, policy, vendor email and 90-day scorecard. Fill it in on screen or print it.

Why does approval after the invoice cost your firm time?

When the invoice is the first time anyone hears about a purchase, your team inherits three jobs the client should have finished before buying:

  • Finding the buyer. Nobody is on record as having ordered the item, so your team asks around.
  • Choosing the account. The invoice carries no job, GL account or class, so your team guesses or chases.
  • Checking the price. No PO exists to compare against, so nothing confirms the amount was agreed.

The approval trail also gets built after the fact. When a lender, auditor or new owner asks who authorized a large payment, the answer is a string of emails collected at close.

It isn’t only contractors. In January 2026 a CPA firm that handles AP for cannabis businesses described a process we hear in almost every niche: invoices arrive in a shared AP inbox, staff key them into QuickBooks Online, and payments go out through the bank portal. Nothing checks for duplicates before payment, and preparing, approving and paying aren’t clearly separated. What was missing was a point where someone says yes before money is committed.

ProcureDesk’s own analysis puts the cleanup at 6 to 10 hours per client each month, and most of that time never reaches an engagement letter. At 20 clients, that’s 120 to 200 hours a month. You could sell that capacity as advisory work instead. The CAS advisory playbook covers how, and our piece on why a PO before the invoice changes the CAS tech stack explains where it fits.

Month-end and year-end add one more problem. Goods a client received but hasn’t been billed for stay invisible until the invoice shows up, so liabilities can be missing at cutoff. On a joint client we supported with a large accounting firm this summer, one of the first reports the finance team asked for was a monthly received-not-invoiced report by department. Open POs are what make that report possible.

What is the PO-before-invoice rule?

No vendor receives an order until an approved purchase order exists, and no invoice is paid unless it matches that PO. ProcureDesk publishes the full definition as the PO-Before-Invoice Rule framework.

How do you set up PO before invoice at a client in six steps?

Run these steps in order with one client first. This is the purchase order workflow for accounting firms at its simplest: each step ends with something you hand to the client, so by the end they have a written process, not a verbal agreement. Under each step, you’ll see what it means for Job 2417.

Step 1: Set the PO threshold and the exempt list

Agree on a dollar amount above which every vendor purchase needs a PO, and list the categories that are exempt. Pick a number the owner or controller will enforce with their own team. That matters more than the number itself, which is why the owner’s signature goes on the policy. Start higher than you think and lower it after 60 days.

Policy wording you can adapt and have the owner sign:

TemplatePurchasing policy

Purchasing policy (effective [date])

Any purchase from a vendor of [$ amount] or more requires an approved purchase order before the order is placed.

Every job-related purchase must name the job number.

Vendors will be told to include the PO number on every invoice. Invoices without a valid PO number will be returned to the vendor and not paid until a PO exists.

Exempt from this policy:

  • Rent
  • Payroll and payroll taxes
  • Utilities
  • Loan and equipment-finance payments
  • Bank fees
  • Insurance premiums

Signed: [Owner]

Replace the highlighted fields, then have the owner sign it.
Job 2417

The owner sets the threshold at $500. Shingles, lumber, the dumpster and the equipment rental all need a PO. A $35 tarp from the hardware store does not.

Step 2: Map approvers and limits

Name an approver for each level, give each a spending limit, and assign a backup for when they’re on a roof or on leave. Purchases above the top limit go to the owner or CFO. Small purchases under a self-approval limit skip the queue, so a crew lead can grab $80 of fasteners without stopping the job.

The amounts below are examples for a contractor client. Set the real ones with the owner. For a client organized by department rather than by job, put department heads where the project managers are.

Example approval levels for a contractor client
Purchase amount (example)Who approvesBackup
Under $500, tagged to a jobField lead (self-approved)None needed
$500 to $10,000Project manager for that jobOperations manager
Over $10,000Owner or CFOController or office manager

Putting purchasing with project managers, not with every salesperson, was the operating model the fractional controller was moving his clients toward. It also gives you one accountable person per job.

Job 2417

The project manager approves everything up to $10,000 on this job. The owner only sees the rare order above that, so approvals don’t pile up on one desk.

Step 3: Build the request form

Every request carries the same fields, whether the form is paper, a shared spreadsheet or software:

  • Vendor
  • What’s being bought
  • Amount
  • Requester
  • Date needed
  • Job number
  • GL account, plus class, project or location

The requester picks the job and the coding, and the approver corrects it if needed. That way the invoice arrives already coded, and month-end becomes a quick review instead of a reconstruction.

Here’s the first request on Job 2417, filled in:

Filled-in purchase request for Job 2417
FieldExample entry
VendorRoofing supply distributor
What’s being boughtArchitectural shingles and synthetic underlayment, 34 squares
Amount$6,850
RequesterProject manager, residential division
Date neededDelivery to site by Thursday
Job number2417 (residential re-roof)
GL account and class5100 Job materials · Residential

Step 4: Issue the PO and tell every vendor

Once a request is approved, the client issues a PO and sends it to the vendor. Pick one PO numbering format and keep it. Job number plus a sequence works well for contractors: 2417-01, 2417-02. Anyone looking at an invoice can then tell which job it belongs to.

Then send each regular vendor one short notice. For contractors this matters most, because the supply house counter is where most unapproved orders start. Once the counter staff ask for a PO number, the rule enforces itself.

Email templateVendor notice
To: Every regular vendorSubject: Purchase order numbers required from [date]

Starting [date], every order from [Client name] will come with a purchase order number and a job number. Please put both on your invoice.

Invoices without a PO number will be returned unpaid so we can match them to the right job.

If someone from our team places an order without a PO number, please ask for one before releasing the materials.

Thank you,
[Name], [Title]

Send it once, from the client’s email, before the start date.
Job 2417

Four vendors get the notice: the roofing supply distributor, the lumber yard, the dumpster company and the equipment rental shop. The shingle order goes out as PO 2417-01.

Step 5: Match each invoice to its PO before payment

Compare the invoice to the PO on vendor, price and quantity. For goods, confirm they arrived as well; a photo of the signed packing slip is enough. That’s the receipt step in a three-way match.

Set a tolerance, for example 2% or $50 over the PO amount, whichever is lower. Anything outside it goes back to the requester or approver to explain. Name one person who owns mismatches; if it’s everyone’s job, it’s nobody’s.

Job 2417

The lumber yard bills $3,410 against a $3,050 PO. That’s outside tolerance, so it goes back to the project manager, who confirms extra sheathing was needed and approves it as a change order. Nobody had to guess.

Step 6: Review exceptions every week

Hold a 15-minute review each week with the owner or office manager. Look at three lists: invoices that arrived without a PO, POs that ran over their amount, and requests still waiting on approval. Follow up with repeat offenders directly.

After three weeks, the exceptions log for Job 2417 and the jobs running alongside it looks like this:

Example weekly exceptions log for a contractor client
WeekExceptionVendorAmountOwnerResolution
Week 2Invoice with no PODumpster rental$640, Job 2409Project managerPO raised after the fact; field lead reminded
Week 2Over PO toleranceLumber yard$3,410 vs $3,050 PO, Job 2417Project managerExtra sheathing approved as a change order
Week 3Request waiting 3 daysEquipment rental$1,900, Job 2421OwnerBackup approver added for owner-level requests

This log is the most persuasive thing you can show the owner each month. It shows their own jobs and vendors, and the overruns caught while those jobs were still running.

Client setup checklist

Use this to sign off each step with the client before you move on. A fillable, printable version is in the client approval checklist.

ChecklistClient setup sign-off0 of 6 done
Tick each step off with the client before moving to the next.

See the approval workflow in ProcureDesk →

Can QuickBooks enforce the rule on its own?

Most CAS clients are on QuickBooks, so this is the first question you’ll get. The fractional controller’s clients were a typical mix: mostly QuickBooks Online, with some on Enterprise because they run several entities. The answer depends on the plan.

  • QuickBooks Online Advanced has approval workflows for purchase orders and bills. You set conditions such as amount, choose approvers and their order, and QuickBooks holds the transaction until it’s approved (Intuit help, updated August 2026).
  • QuickBooks Desktop Enterprise has PO and bill approval on the Platinum and Diamond editions, with conditions on amount, vendor and vendor type (Intuit help, updated August 2026).
  • QuickBooks Online Essentials and Plus, and Enterprise Silver and Gold, don’t include these approvals. Approvals end up in email or conversation, and nothing stops a PO or bill from being entered without one. Our walkthrough of the QuickBooks Online approval process covers the manual workarounds.

Even where native approval exists, it covers one step: someone approves a PO or bill that’s already in QuickBooks. Everyone who raises or approves a PO needs a QuickBooks login, which puts field staff inside the client’s books. Most firms don’t want that. The threshold, request coding, vendor notice and weekly review still sit with you. ProcureDesk’s QuickBooks purchase order guide goes into the detail.

A low-volume client can still run the six steps by hand, with approvals by email and a shared request form. Software starts to pay for itself once a client issues more than about 15 purchase orders a month, or when the approvers are project managers in the field. For those clients, the ProcureDesk QuickBooks integration pulls customers, jobs, classes and locations from QuickBooks and syncs approved POs and bills back. The purchase order software for QuickBooks guide compares the options.

How do you raise this with a client?

Start with the client’s own experience of surprise bills, then offer a small pilot. Three questions open the conversation without sounding like an audit:

  1. How many invoices last month arrived with no PO or approval behind them?
  2. Who approved the three largest invoices, and where is that recorded?
  3. When did you last learn about a bill, or a job overrun, after the money was already committed?

The answers usually show a gap the client already feels. Most owners can answer the third question with a story, and that story is your opening.

In a CPA Academy webinar ProcureDesk ran in May 2026, 50 of the attending CPAs said they had six or more clients who could benefit from spend controls. The demand is there. What’s usually missing is a low-risk way to start.

So propose a pilot with clear limits: one department or division, or every job started after a set date, for 60 days. Agree on the baseline measures first, so both sides can see the change.

Present the work as a CAS spend control service with three parts: the setup in steps 1 to 4, the weekly exception review, and a monthly spend summary by job or department. That makes your firm the advisor who watches spend before it happens, which is a different engagement from bookkeeping. The CAS advisory playbook covers how firms package and price this kind of work.

Expect pushback on speed. Field staff will say a request form slows them down. Step 2 answers it: small purchases are self-approved and every level has a backup, so nobody waits on one person.

What should you track in the first 90 days?

Record the starting value for each measure in week zero, then review with the client at day 30, 60 and 90.

Measures to track in the first 90 days
MeasureHow to calculate itWhat it tells you
Invoices with a POInvoices matched to a PO ÷ all non-exempt invoicesWhether the rule is being followed
Invoices returned for no POCount per monthWhether vendors know the rule
Price variances over tolerancePO-to-invoice mismatches outside the limitPricing and receiving problems
Jobs over budget, caught mid-jobJobs where committed spend passed budget before completionWhether the owner sees overruns in time
Cleanup hours per clientFirm hours spent on AP corrections each monthThe time you get back
Days to closeBusiness days from month-end to final closeWhether close is getting faster
Open PO commitments at month-endApproved POs, and goods received, not yet invoicedLiabilities not yet on the books

For a reference point: across ProcureDesk customers, invoices arriving without a PO drop by 90%, and month-end close goes from 10 days to 4 on average. Treat those as a benchmark, not a promise. Your client’s own week-zero numbers are what you’ll be judged on.

If the share of invoices with a PO is still low at day 60, check three things in this order: is the threshold too low to enforce, is the request form too long for someone on a jobsite, and is one approver sitting on requests? All three are fixable in a week.

Free template

Job Cost Tracker for your contractor clients

Compare each job’s estimate with actual spend, so overruns show up while the job is still running.

Get the tracker →

Where does software fit in?

Steps 1 and 2 are agreements. Steps 3 to 6 depend on people remembering to follow them every day, often from a phone on a jobsite. That’s where software helps. Here is the walkthrough the fractional controller asked for, with Job 2417 running in ProcureDesk:

  1. The project manager raises the request from his phone and tags it to Job 2417 and its budget.
  2. It routes to the approver set in step 2. Purchases under the self-approval limit go straight through.
  3. The approved request becomes PO 2417-01 and goes to the roofing supply distributor.
  4. When the shingles arrive, the crew lead photographs the packing slip as the receipt.
  5. The invoice lands in the AP inbox, is read automatically, and is matched to the PO and the receipt. Mismatches are flagged before anyone pays.
  6. The approved bill syncs to QuickBooks, coded to the job. The job dashboard shows budget, committed POs, invoices and deliveries side by side.

The owner now sees what Job 2417 has committed while the crew is still on the roof. That’s the visibility the fractional controller’s clients were missing. The purchase order features page lists what’s included.

Many CAS clients already pay vendors through Bill.com. Bill.com handles the invoice and the payment; ProcureDesk handles the request, approval and PO before the invoice exists, and the two connect for the payment step.

ProcureDesk integrates with QuickBooks Online, QuickBooks Desktop and Enterprise, Xero, Sage Intacct, NetSuite, Microsoft Business Central and Bill.com, and multi-entity clients map each entity to its own QuickBooks file. Setup is done for you in 2 to 3 weeks.

Firms can recommend ProcureDesk to clients directly through the ProcureDesk CPA Partner Program, which pays revenue share and hands implementation to the ProcureDesk team, or offer it under their own brand through white label AP automation. Either way, the six steps still apply. Software enforces a policy, and the client has to agree on it first.

Frequently asked questions

Which client purchases should require a PO?

Every vendor purchase above the agreed threshold, except the categories on the exempt list. The usual exemptions are fixed or contractual costs, such as rent and payroll. For contractor clients, add one more rule: every job-related purchase names the job number, so the cost lands on the right job before the invoice arrives.

How low should the PO threshold be?

There’s no universal number. Start with an amount the client’s owner or controller will actually enforce, run it for 60 days, then lower it if too much spend still bypasses the process. A threshold set too low on day one buries approvers in small requests, and people start working around it.

What should a client do when a vendor sends an invoice without a PO number?

Return it to the requester and ask the vendor to resubmit with a PO number. If the purchase was legitimate, the requester raises a PO after the fact and the exception goes in the weekly log. The vendor notice in step 4 tells vendors about the rule in advance, so a returned invoice shouldn’t surprise them.

Do recurring expenses need purchase orders?

Recurring bills with fixed amounts, such as rent, can sit on the exempt list. Recurring purchases that vary in amount, such as materials from a regular supply house, are better covered by a blanket PO with a spending limit and an end date. Each invoice then matches against the blanket PO until the limit is used.

Can a client enforce this inside QuickBooks alone?

Partly, depending on the plan. QuickBooks Online Advanced and QuickBooks Desktop Enterprise Platinum and Diamond include approval workflows for purchase orders and bills; Essentials, Plus, Silver and Gold don’t. Native approvals still need every requester to have a QuickBooks login, so many firms put a tool such as ProcureDesk in front of QuickBooks for field requests.

How long does implementation take with ProcureDesk?

2 to 3 weeks. The ProcureDesk team sets up the approval rules, the accounting integration and the supplier catalogs, so neither the firm nor the client runs an IT project. The six steps in this guide map directly onto that setup.

How does PO before invoice help the month-end close?

Transactions arrive with approval and coding already attached, and open POs show commitments before invoices are received, which gives you the accrual figures. That leaves far fewer unknowns to resolve at close, and your team spends it reviewing exceptions instead of chasing approvals.

Can a CPA firm charge for this as a service?

Yes, as a recurring advisory engagement rather than a one-off project. The section above on raising it with a client covers how to package it. Price it on what the client gets: fewer surprise bills, cleaner closes and overruns caught mid-job, not on the hours your team spends.

Resources

Want to see it run?

Book a 30-minute walkthrough of the six steps

We’ll run Job 2417 end to end, with your clients’ QuickBooks plans in mind.

Book the walkthrough →
Sachin Sharma
About the author
Sachin Sharma

Sachin Sharma is the CEO of ProcureDesk and has spent over 23 years in procurement and supply chain technology. He previously led procurement operations at a Fortune 500 company before founding ProcureDesk. Connect with him on LinkedIn.