Send every purchase request through one form or inbox, let AI turn it into a draft purchase order with gaps flagged, route it for approval by value, then create and email the PO from your accounting system via Zapier or Make. Then AI chases unacknowledged orders and sorts supplier replies: confirmed, new date, query or price change.
The one rule to set before building anything: the AI fills in a PO only from what the request says and what your price list or last order says. It never guesses a rate, picks a new supplier or accepts a price change on its own. Everything missing goes back to the person who asked, and every price change goes to a person who can say no.
Which steps to automate and which stay with a person
| Step | Automate? | Why |
|---|---|---|
| Capturing the request | Yes | A form or monitored inbox stops requests living in chats and phone calls |
| Drafting the PO fields | Yes, with gaps flagged | AI is good at pulling supplier, item, quantity and dates out of a rough message |
| Approval | Routing yes, deciding no | Rules send it to the right person; the person approves |
| Creating and sending the PO | Yes | Pure data transfer once approved |
| Chasing acknowledgement and delivery dates | Yes | Repetitive, time-based, low risk |
| Reading supplier replies | Sorting yes, acting partly | Confirmations can update the record; price changes and substitutions need a person |
| Choosing a new supplier | No | Needs judgement on quality, credit and history |
The running example here is an illustrative engineering consultancy of 22 people doing ground investigation and structural work. It raises around 60 purchase orders a month: drilling subcontractors, laboratory testing, plant hire, traffic management and site equipment. Before automating, about a third of its POs were raised after the work had started, and supplier invoices arrived without PO numbers, so each one needed a round of "which job is this for?" emails.
Step 1: one front door for every purchase request
Automation can't read a request made in a corridor. Pick one route, a short form (Microsoft Forms, Google Forms or your project system's request feature) or one shared mailbox, and make it the only way an order gets placed. The form needs eight fields:
- Project or job number
- Supplier (a drop-down of approved suppliers, plus "other, please specify")
- What's needed, in the requester's own words
- Quantity and unit
- Agreed price or quote reference, if known
- Date needed on site
- Delivery address or site
- Requester's name
A free-text box is fine for the description. That's the part the AI is there to interpret, and making engineers fill in twelve structured fields is how you get people phoning the supplier directly instead.
Step 2: AI turns a rough request into a draft PO
Here is a real-looking request as it arrives from site (illustrative; SPT is a standard soil test that needs its own equipment on the rig):
Need the tracked rig again from the usual drilling lot for the Mill Lane job, 3 days from Tuesday 14th, same setup as the Hawthorn Road job. Plus they'll need to bring the SPT kit. Cheers
The automation passes that text, the approved supplier list and the last three POs for that supplier to an AI step with this instruction:
You draft purchase orders from staff requests. Use ONLY the
request text, the approved supplier list and the previous POs
provided. Never invent a price, rate, quantity or date.
Return JSON with these fields:
supplier, project_no, lines (description, qty, unit, rate,
rate_source), date_required, delivery_site, notes,
missing_fields (list), questions_for_requester (list).
If a rate comes from a previous PO, set rate_source to that PO
number. If there is no rate, leave it blank and add it to
missing_fields. If the supplier is not on the approved list,
add "supplier not approved" to missing_fields.
An illustrative result:
{
"supplier": "Approved drilling contractor (from list)",
"project_no": "",
"lines": [
{"description": "Tracked drilling rig with crew", "qty": 3,
"unit": "day", "rate": 1450, "rate_source": "PO-2291"},
{"description": "SPT equipment", "qty": 3, "unit": "day",
"rate": "", "rate_source": ""}
],
"date_required": "Tuesday 14th",
"delivery_site": "Mill Lane",
"missing_fields": ["project_no", "SPT equipment rate",
"month for date_required"],
"questions_for_requester": ["Which project number is Mill
Lane?", "Is SPT kit included in the day rate, as on the
Hawthorn Road order, or charged separately?"]
}
Two things are worth noticing. The AI took the rig rate from the previous PO and said where it came from, so the approver can check that the rate is still current. And it asked the question a buyer would ask: on the previous order, was the test kit included? That question goes straight back to the requester by email or chat, and the draft waits. A PO with blanks never goes to a supplier.
Where this goes wrong: an AI step without the "never invent" instruction will happily fill the SPT rate with a plausible number. In testing, always feed it a request with a missing price and confirm it comes back blank.
Step 3: approval limits that route themselves
Once the draft is complete, a filter or router step sends it to the right approver by value. The consultancy's rules:
| PO value | Supplier | Approver |
|---|---|---|
| Under $500 | Approved | No approval; PO sent automatically |
| $500 to $5,000 | Approved | Project manager for that job |
| Over $5,000 | Approved | Director |
| Any value | New or unapproved supplier | Director |
| Any value | Rate differs from last PO by more than 10% | Project manager, with both rates shown |
The approval message should show the request text, the draft lines, the rate source and one-click approve or reject. Approvers who have to open three systems to approve a $900 plant hire will approve without looking. How to design those limits for a whole business is covered in setting spending rules and approvals, and the general pattern for approval steps inside automations in adding human approval steps to AI automations.
Step 4: create the PO and send it
Once approved, the automation creates the purchase order in your accounting system. QuickBooks Online has purchase orders on its Plus and Advanced plans (they are switched on under Account and settings, Expenses). Xero includes purchase orders that can be emailed to suppliers as PDFs and converted into bills when the invoice arrives; check your plan includes them. Zapier has a Create Purchase Order action for both QuickBooks Online and Xero, which returns the PO number for the next step.
A Zapier or Make flow for this stage looks like:
- Trigger: approval recorded (a form response, a button in a chat app, or a row status changing to "approved").
- Create Purchase Order in QuickBooks Online or Xero with the supplier, lines and project reference.
- Send the supplier email from your purchasing mailbox with the PO number in the subject line.
- Log the PO number, supplier, date sent and date required in a tracking sheet or table. The chasers run off this log.
The PO email itself can be a fixed template rather than AI-written. Consistency helps suppliers' own systems pick it up:
Subject: Purchase order PO-2318 - Mill Lane - required Tue 14 Oct
Hello,
Please find our purchase order PO-2318 for 3 days' tracked rig
hire with crew at Mill Lane, starting Tuesday 14 October.
Please reply to this email to confirm you can meet the date,
and quote PO-2318 on your invoice. Invoices without a PO number
may be delayed.
Thanks,
Purchasing team
Step 5: supplier emails that chase themselves
This is the part that gives the office its time back. Three timed emails cover most orders:
| When | Stops if | |
|---|---|---|
| 2 working days after sending, no reply | Short acknowledgement chaser | Supplier has replied |
| 3 working days before the date required | Delivery or attendance confirmation request | Order already confirmed for that date in the last week |
| Day after the date required, not marked received | Note to the requester: did it arrive or happen? | Marked received |
The acknowledgement chaser is where AI helps with tone. A fixed "REMINDER: PO-2318 NOT ACKNOWLEDGED" email reads like a machine and gets ignored like one. An AI step can write a two-line note that mentions the job and date, and varies a little each time:
Hi, just checking you received PO-2318 for the rig at Mill Lane from Tuesday 14th. Could you confirm the crew is booked? Thanks.
Keep the AI on a short leash here: two sentences, must include the PO number and date, no new information. The third email goes to your own requester, not the supplier, because "did it arrive?" is the question that stops invoices being paid for goods that never turned up.
Step 6: let AI sort the supplier replies
Replies land in the purchasing mailbox. An AI step reads each one, matches it to a PO by the number in the subject or body, and puts it in a category:
Classify this supplier email about a purchase order.
Categories:
CONFIRMED - supplier confirms the order as sent
NEW_DATE - supplier confirms but gives a different date
PRICE_CHANGE - any change to price, rate, surcharge or quantity
SUBSTITUTE - different product or equipment offered
QUERY - supplier asks a question
OTHER
Return: po_number, category, new_date (if any), summary
(one sentence), needs_person (true for PRICE_CHANGE,
SUBSTITUTE, QUERY, OTHER).
If no PO number is found, return po_number "not found".
An illustrative reply and its classification:
Morning, rig is fine for the 14th but we can't get the SPT kit to site until the 15th, and just to flag that our fuel surcharge has gone up to 6% from this month. Regards
{"po_number": "PO-2318", "category": "PRICE_CHANGE",
"new_date": "15th (SPT kit only)",
"summary": "Rig confirmed for 14th; SPT kit a day late;
fuel surcharge now 6%.",
"needs_person": true}
This reply contains a date change and a price change, and the classification correctly lands on the more serious one. That's why the categories are ordered by risk in your routing: anything that touches price goes to a person, even when it arrives inside an otherwise good confirmation. A plain CONFIRMED can update the tracking log and stop the chasers automatically. Everything else becomes a task for the project manager, with the summary line at the top.
A second example: a law firm's disbursement orders
The same flow suits businesses that don't buy much stock but do order third-party services against client work. Take an illustrative 15-person law firm that orders expert reports, property searches, process servers and translations for its matters. Its problem isn't approval; it's that supplier invoices arrive weeks later with no matter reference, so the costs are hard to recover from clients.
The firm's version is lighter: the fee earner fills in a four-field form (matter number, supplier, service, estimate), an AI step drafts the instruction letter from a template using the matter's details, and the automation logs a PO number that the supplier must quote. Approval only kicks in for estimates over $1,500, or any expert instruction, because expert fees usually need the client's agreement first. The saving comes at month end, when every invoice can be matched to a matter by its PO number instead of by memory. Matching those invoices automatically is the natural next step, covered in matching supplier invoices to purchase orders.
What the automation costs to run
With Zapier, every successful action step counts as a task; triggers, filters and Paths don't. An AI by Zapier step uses 1, 3 or 5 tasks per run depending on the model tier you choose. For the consultancy's 60 POs a month, a rough count, assuming the 3-task tier:
- Drafting from the request: AI step (3) plus a message to the requester or approver (1) = 4
- After approval: create PO (1), send email (1), log it (1) = 3
- Chasers: on average 1.5 emails per PO = 1.5
- Reply sorting: AI step (3) plus update log or create task (1) = 4
That's about 12.5 tasks per PO, or 750 a month, which sits right at the limit of Zapier's Professional plan (750 tasks, from $29.99 a month billed monthly or $19.99 billed annually). Requests that need a second round of questions push it over, so budget for the Team plan (2,000 tasks, from $103.50 a month monthly or $69 annually) or build it in Make, where plans are credits-based from about $9 a month and routers and filtered-out bundles use no credits. AI costs are included in those tasks unless you connect your own API key.
The bigger cost is set-up time: typically two to four days to build, test with real past requests and adjust, and an hour a week for the first month watching the exceptions.
Test it on last month's requests before switching on
Before any supplier sees an automated PO, run the flow in test mode against 15 to 20 real requests from the previous month, with the send step pointed at your own inbox. Pick the awkward ones on purpose:
- A request with no price and no previous PO for that item. The draft must come back with the rate blank.
- A request naming a supplier that isn't on the approved list, spelled slightly differently from how it appears in your accounts.
- One message asking for two things from two different suppliers. The AI should split it into two drafts or flag it, not merge the lines onto one PO.
- A request that cancels or changes an earlier order ("actually make that 2 days, not 3"). This should update the existing draft, not create a new one.
- A request with a date but no month, like the Mill Lane example.
Score each draft as right, fixable by the requester's answer, or wrong. In the consultancy's test run of 18 requests, 13 were right, 4 were correctly flagged with questions, and one was wrong: the AI read "same as last time" as the last PO for that supplier on any project, not the last one on that site. The fix was one line in the instruction ("previous POs means previous POs for the same project, unless none exist"). An afternoon of testing like this is cheaper than one wrong order arriving on site.
Where purchase order automations break
- The supplier replies from a different address or starts a new thread without the PO number. The reply is never matched, and the chaser goes out to someone who already confirmed. Ask suppliers to keep the PO number in the subject line, and send unmatched replies to a person.
- The same request triggers twice. Someone edits a form response, and the automation creates a second PO. Add a check that no PO exists for the same request ID before creating one.
- The contact on file is out of date. A PO emailed to someone who left the supplier in spring sits unread. When chasers get no reply twice, route it to a person to phone.
- Rates drift unnoticed. Copying the rate from the last PO is convenient until the supplier's price list changes. The "more than 10% different" rule catches increases only if someone enters the new rate; put a review date on every standing rate.
- Nobody notices the automation has stopped. An expired connection means requests pile up silently. Set up an alert for failed runs, as described in stopping automations breaking silently.
Four numbers that show the PO automation is working
Track four numbers monthly, starting with a baseline from the month before you switch on:
- POs raised before the work starts, as a share of all POs. The consultancy moved from about 65% to 94% within two months, mainly because a phone request now got a form link in reply.
- Median days from PO sent to supplier acknowledgement.
- Supplier invoices that quote a PO number. This is what makes invoice matching possible.
- Price changes caught before the invoice, rather than discovered when it arrives.
If the second number doesn't improve, the chasers aren't reaching the right people. If the third doesn't, the PO email isn't making the "quote this number" instruction clear enough, and it's worth phoning your ten biggest suppliers to ask them to update their records.
Purchase order automation: follow-up questions
Do I need purchasing software, or will my accounting system do?
For most firms raising under a few hundred orders a month, the purchase orders in QuickBooks Online Plus or Advanced, or in Xero, plus an automation tool, are enough. Dedicated purchasing software starts to pay off when you need multi-level approvals, budgets per project, catalogues or supplier portals, or when several sites order from the same suppliers.
Can AI choose the supplier for me?
It can suggest one from your approved list, based on who supplied the same item or service last time. It shouldn't choose freely, because it doesn't know about quality problems, credit limits or a falling-out last month. Keep an approved supplier list in the automation and have the AI pick only from that list, with a person confirming anything new.
What happens when a supplier replies to the wrong address?
Replies that don't reach the monitored mailbox never get classified, so the order looks unacknowledged and the chaser goes out anyway. Put a reply-to address on every PO email, ask suppliers to quote the PO number in the subject line, and make the chaser email polite enough that a duplicate does no harm.
Should small orders skip the PO process entirely?
Often, yes. Orders below a set value from approved suppliers can go on a company card with the receipt captured, which saves everyone time. The point of a PO is control over spend and a reference for matching invoices. Below a few hundred dollars, the admin can cost more than the control is worth.
Further reads
- How to Compare Supplier Quotes Side by Side With AI — Get the price right before the PO is raised.
- AI Supplier Management: Track Prices, Lead Times, and Risk — Track lead times and supplier performance over time.
- How to Add AI Steps to Zapier: Classify, Summarise, and Draft — How AI steps work in Zapier, and what they cost in tasks.
- Can AI Read Emailed Orders Into a Wholesaler's System? — The same reading problem, from the seller's side.
- AI Accounts Payable: Approvals and Payment Runs Without Chaos — What happens after the invoice arrives.
- How to Build Your First AI Automation in Make, Step by Step — Build the same flow in Make instead of Zapier.
- Can AI Fill In Forms and Supplier Portals for You? — Browser agents, recorded workflows, integrations or AI-prepared data: how to choose for each form and portal, with a supervised-run prompt and a ten-form test.
- AI for Interior Design Studio Admin: Sourcing, Quotes, Updates — Where AI saves a design studio real admin hours: supplier PDFs into schedule rows, quote wording, chasers and Friday client updates.
- How to Use AI to Set Reorder Points and Prevent Stockouts — Reorder point maths made practical: clean the history, measure real supplier lead times, pick service levels per item and let AI do the sums for every line.
- Can AI Read Delivery Notes and Update Stock Automatically? — How AI reads delivery notes into goods-in records, when stock can update without a person, the mapping table that matters most, and the tests to run first.
- How to Use Shopify Sidekick to Run Your Store Faster — What Shopify Sidekick can and can't do, reorder suggestions after Stocky, ten requests that save store time, and the checks before you approve a change.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: QuickBooks Online help (purchase orders on Plus and Advanced); Xero purchase order feature page; Zapier help and app pages (QuickBooks Online and Xero Create Purchase Order actions, task counting, AI by Zapier task use); Make pricing page.