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:
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]
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.
| Purchase amount (example) | Who approves | Backup |
|---|---|---|
| Under $500, tagged to a job | Field lead (self-approved) | None needed |
| $500 to $10,000 | Project manager for that job | Operations manager |
| Over $10,000 | Owner or CFO | Controller 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.
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:
| Field | Example entry |
|---|---|
| Vendor | Roofing supply distributor |
| What’s being bought | Architectural shingles and synthetic underlayment, 34 squares |
| Amount | $6,850 |
| Requester | Project manager, residential division |
| Date needed | Delivery to site by Thursday |
| Job number | 2417 (residential re-roof) |
| GL account and class | 5100 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.
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]
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.
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:
| Week | Exception | Vendor | Amount | Owner | Resolution |
|---|---|---|---|---|---|
| Week 2 | Invoice with no PO | Dumpster rental | $640, Job 2409 | Project manager | PO raised after the fact; field lead reminded |
| Week 2 | Over PO tolerance | Lumber yard | $3,410 vs $3,050 PO, Job 2417 | Project manager | Extra sheathing approved as a change order |
| Week 3 | Request waiting 3 days | Equipment rental | $1,900, Job 2421 | Owner | Backup 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.
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:
- How many invoices last month arrived with no PO or approval behind them?
- Who approved the three largest invoices, and where is that recorded?
- 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.
| Measure | How to calculate it | What it tells you |
|---|---|---|
| Invoices with a PO | Invoices matched to a PO ÷ all non-exempt invoices | Whether the rule is being followed |
| Invoices returned for no PO | Count per month | Whether vendors know the rule |
| Price variances over tolerance | PO-to-invoice mismatches outside the limit | Pricing and receiving problems |
| Jobs over budget, caught mid-job | Jobs where committed spend passed budget before completion | Whether the owner sees overruns in time |
| Cleanup hours per client | Firm hours spent on AP corrections each month | The time you get back |
| Days to close | Business days from month-end to final close | Whether close is getting faster |
| Open PO commitments at month-end | Approved POs, and goods received, not yet invoiced | Liabilities 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.
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:
- The project manager raises the request from his phone and tags it to Job 2417 and its budget.
- It routes to the approver set in step 2. Purchases under the self-approval limit go straight through.
- The approved request becomes PO 2417-01 and goes to the roofing supply distributor.
- When the shingles arrive, the crew lead photographs the packing slip as the receipt.
- 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.
- 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
- ProcureDesk CPA Partner Program: revenue share for firms that recommend ProcureDesk, with implementation handled for you
- The 30-Minute AP Exposure Review CPA Firms Can Run on Any Client: the next article in this series, on finding fraud and duplicate payments
- PO-Before-Invoice Rule framework: the full definition and the two parts of the rule
- The Missing Layer in Your CAS Tech Stack: why a PO before the invoice matters for CAS firms
- Beyond AP Automation: A CAS Playbook: turning AP cleanup into advisory work
- White Label AP Automation: offering the process under your firm’s brand
- Purchase Order Approval Software: how approval routing works
- Purchase Order Features: PO creation, tracking and receipts
- Three-Way Match: PO, receipt and invoice matching explained
- QuickBooks Purchase Order System: what QuickBooks does and does not cover
- QuickBooks Integration: how ProcureDesk syncs POs and bills
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.
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.