Automate purchase approvals around one exact request revision. Give each request a stable ID, collect the facts an approver needs, freeze the approved snapshot, and create the order through an idempotent action. Then read the destination record back. If the vendor, scope, amount, terms, or budget changes, create a new revision and reopen the applicable decision.
What should a purchase approval authorize?
A purchase approval should authorize one defined request revision, not general spending with a vendor or in a category. The decision should show who approved which vendor, scope, amount, currency, timing, terms, budget context, and exceptions, under which authority.
Use separate states for separate decisions:
| State | What it means | Minimum evidence | What it does not authorize |
|---|---|---|---|
| Request submitted | Someone has described a business need and proposed a purchase | Request ID, requester, owner, need, proposed vendor or vendor criteria, expected amount, timing, and attachments | Approval, an order, work starting, or payment |
| Ready for decision | The current revision contains the fields and evidence required by the applicable route | Revision number, completeness checks, budget context, vendor state, and exceptions | A favorable decision |
| Request approved | An authorized person accepted the exact current snapshot | Approver, authority, revision hash or number, outcome, comments, and time | A changed request, supplier commitment, invoice, or payment |
| Commitment verified | The approved request produced the intended purchase order, agreement task, or buying instruction in the authoritative system | Destination ID and read-back comparison with the approved snapshot | Proof that goods or services were received |
| Received or accepted | The responsible owner recorded what was delivered and any variance | Receipt or service acceptance tied to the request and order | Invoice approval or payment release |
| Invoice approved | The exact invoice packet passed the required business and accounting review | Invoice revision, match results, exceptions, and decisions | Authority to release money |
Do not compress these decisions into one approved field. Even when one owner handles several steps in a tiny company, the record should say whether that person approved the need, placed the order, accepted the work, approved the invoice, or released payment.
The guide to vendor onboarding covers the vendor record and payment profile. The guide to vendor invoice approval starts when a specific invoice arrives. Purchase approval owns the earlier boundary: whether the business may commit to this purchase on these terms.
What belongs in the purchase request packet?
The purchase packet should contain everything needed to decide and later reconstruct the approved commitment. It should preserve original evidence, derived fields, routing inputs, decisions, changes, and destination identifiers under one stable request ID.
| Packet field | Preferred source | Stop condition |
|---|---|---|
| Business need and owner | Request submitted by the person accountable for the outcome | No owner, vague need, duplicate request, or unclear beneficiary |
| Vendor and vendor state | Current vendor record or proposed-vendor details linked to onboarding | Missing required vendor state, possible duplicate, material mismatch, or unsupported vendor change |
| Scope and quantity | Quote, proposal, statement of work, catalog line, or structured description | Conflicting scope, unclear quantity, missing deliverable, or unsupported substitution |
| Amount and currency | Current quote, pricing schedule, estimate, or catalog value | Missing currency, expired source, arithmetic conflict, or amount outside the stated route |
| Budget context | Budget owner, project, client, department, cost category, and available context used by the business | No accountable budget owner or unresolved out-of-budget exception |
| Timing and recurring terms | Needed-by date, service period, renewal behavior, cancellation notice, and delivery conditions | Impossible timing, hidden recurrence, or terms requiring a review that has not occurred |
| Evidence and exceptions | Required quotes, comparison, security or legal review, sole-source reason, urgency reason, or policy exception | Required evidence missing, exception owner absent, or override unrecorded |
| Decision and authority | Approver, role, delegated limit, revision, outcome, comments, and timestamp | Wrong approver, expired delegation, self-approval where policy forbids it, or revision changed after review |
| Destination records | Purchase order, agreement, card request, procurement task, accounting commitment, and source links | Duplicate write, missing ID, incorrect mapping, or read-back mismatch |
The packet does not need every possible field for every purchase. A monthly software subscription, a subcontractor engagement, office equipment, and a client-funded expense can follow different routes. Classification should select the fields and reviews that apply, while uncertain cases stop with a named owner.
Preserve the quoted or proposed source beside extracted values. OCR or AI may prepare the vendor name, line items, price, dates, or renewal terms, but the extraction is not the source. An approver should be able to inspect the original and see any uncertainty or conflict before deciding.
What should the automated workflow look like?
Use six controlled stages: request, validate, route, decide, commit, and verify. Each stage should produce a visible state and a reason the request can stop.
From purchase request to verified commitment
- Requestassign the stable request ID, capture the need and owner, attach source evidence, and search for duplicate or related requests.
- Validatebuild the applicable checklist, check required fields and exact calculations, identify the vendor state, and mark conflicts.
- Routeselect approvers from current policy using amount, category, budget, vendor, recurrence, access, location, and exception signals.
- Decidepresent the complete current revision, record approve, reject, return, or escalate, and freeze the approved snapshot.
- Commitcreate the purchase order or controlled buying task with an idempotency key and only the approved values.
- Verifyread the destination record back, compare it with the approved snapshot, store the destination ID, and expose any mismatch.
Useful states include draft, submitted, duplicate review, missing evidence, vendor review, budget review, specialist review, approval pending, returned, rejected, approved revision, commit pending, write uncertain, commitment mismatch, commitment verified, change pending, and closed. A state should describe what is known, not merely which automation step ran.
Use one stable request ID across the form, evidence, approvals, order, receipt, invoice, and exception log. Derive the commitment idempotency key from that request ID, the approved revision, and the intended destination. If a timeout occurs after the target system created the order, a retry should find and verify the same order rather than create another one.
After writing, read the order or task back. Compare vendor ID, line descriptions, quantities, amount, currency, dates, terms, accounting or project references, and source request ID with the approved snapshot. A successful API response proves that the target accepted a request, not that it stored the correct commitment.
Which changes require a new approval?
Any change that can alter the decision or approval route should create a new request revision. The old approval remains part of the history, but it should not authorize a different vendor, scope, quantity, price, currency, recurring term, budget, delivery condition, or exception.
Define material changes from the business's own policy and transaction types. A corrected typo in an internal note may not affect approval. Replacing the vendor, increasing the amount, adding automatic renewal, shortening cancellation notice, changing the service period, or moving the cost to another project usually changes what the approver considered.
Use this change path:
- Copy the last revision into a new draft without altering the approved snapshot.
- Record each changed field, its source, actor, time, and reason.
- Recalculate the applicable route using current policy and current authority.
- Expire only the decisions affected by the change, but keep the commitment blocked until all required current decisions exist.
- Show approvers the previous and proposed values together.
- If the supplier already received an order, create a controlled amendment, cancellation, or exception task rather than editing history silently.
- Verify the final destination record against the newly approved revision.
Do not let a supplier's revised quote update an approved request automatically. The system can attach the new quote, compare values, and prepare the next revision. A person with the required authority still decides whether the new terms are acceptable.
What should rules, AI, and people each do?
Use deterministic rules for identifiers, completeness, calculations, approval routes, states, permissions, and retries. AI can prepare bounded extractions or summaries, while people remain responsible for the business need, tradeoffs, exceptions, commercial terms, and ambiguous authority.
| Work | Best starting mechanism | Required control |
|---|---|---|
| Open or find a request | Stable request ID plus duplicate checks on vendor, requester, scope, project, and time | Possible duplicates stop before another commitment is created |
| Build the checklist | Rules from category, amount band, budget, vendor state, recurrence, access, location, and policy | Named policy owner and manual path for uncertain classification |
| Extract a quote or proposal | Structured fields, OCR, or bounded AI extraction | Preserve the source, show uncertainty, and block material conflicts |
| Calculate totals | Deterministic arithmetic using quantity, unit price, tax treatment supplied by the accounting owner, discounts, and currency | Visible formula, source values, and no invented conversion or tax conclusion |
| Summarize the request | Optional AI summary linked to each source | Approver can inspect the originals and every exception |
| Select approvers | Deterministic matrix using current role, authority, category, and exception | Dated delegation, fallback, and no silent self-approval |
| Record the decision | Explicit human action on one visible revision | Approver, authority, result, comments, time, and immutable snapshot |
| Create the commitment | Idempotent write with only approved values | Limited credentials, source request ID, and destination read-back |
| Match downstream records | Exact IDs and values first, then controlled variance rules | Receipt, invoice, and payment decisions remain separate |
AI should not decide that a purchase is necessary, choose an approver outside policy, invent a budget code, accept changed terms, approve an exception, or release an order or payment. It may extract a quote, flag a discrepancy, or prepare a summary, but the output should remain linked to source evidence and visible uncertainty.
Limit each connection to its task. Intake can create a request without permission to issue an order. The approval component can record a decision without permission to change vendor bank data. The ordering component can create a held purchase order without permission to approve an invoice or payment. This separation makes failures easier to contain and investigate.
How does purchase approval connect to invoices and payment?
Connect the stages with stable identifiers and explicit states, not inherited approval. The approved request supplies the expected vendor, scope, quantity, amount, currency, timing, and terms, while receiving and invoice workflows record what happened later.
The GAO/CIGIE Financial Audit Manual, updated in May 2023, gives matching a purchase order, receiving report, and vendor invoice as an example of an approval control. The manual is written for federal financial audits, so it does not impose a purchasing design on an ordinary small business. The distinction is still useful: authorization, receipt, invoice review, and payment are different facts.
Where the business uses a three-way match, compare:
- the approved commitment, including order revision and authorized variances;
- the actual receipt or service acceptance, including partial delivery and rejected work;
- the exact invoice revision, including vendor, line items, quantity, price, currency, dates, and tax fields handled by the accounting owner.
A match can prepare a clean invoice for review. It should not release payment on its own unless the business has separately defined and tested that authority. Changed bank details, duplicate invoices, credits, partial receipts, disputed work, and post-approval price changes require their own states and owners.
The IRS recordkeeping guidance says supporting documents for business purchases and expenses should identify relevant details such as the payee, amount, proof of payment, date, and description. A connected request, order, receipt, invoice, and payment trail can make those records easier to reconstruct, but the business and its advisers still determine what it must retain for a particular transaction.
How do you test the first purchase approval workflow?
Replay representative closed purchases in draft mode before the workflow can send an order or create an active commitment. Test normal requests, changed revisions, bypass attempts, unavailable people, duplicate events, and partial system failures.
- Select a small set of completed purchases with known requests, approval messages, orders or agreements, receipts, invoices, and at least one changed or exceptional case.
- Record the expected checklist, route, approver authority, decision, commitment values, destination ID, and downstream states by hand.
- Submit the same need twice through two channels. Confirm that both events find one request or create a visible duplicate-review state.
- Omit a vendor, currency, scope detail, budget owner, recurring term, or required source. Confirm that a populated form cannot advance without the applicable evidence.
- Approve a request, then change the vendor, price, quantity, currency, project, date, or recurrence. Confirm that a new revision opens and the old approval cannot create the changed order.
- Expire a delegation, remove an approver, and create an out-of-policy exception. Confirm that the request reaches a valid fallback instead of advancing or stalling invisibly.
- Send approval events twice and out of order. Confirm that one decision is recorded against the intended revision and stale events cannot overwrite it.
- Interrupt the commitment write after the destination creates the order. On retry, the workflow should find and verify the same record instead of creating another one.
- Change a destination mapping so the wrong currency, vendor, amount, or project is stored. Confirm that read-back detects the mismatch and leaves the commitment unverified.
- Test partial delivery, a revised invoice, a credit, and changed payment instructions. Confirm that purchase approval does not become receipt, invoice, or payment approval.
- Revoke or amend an approved request after the supplier was contacted. Confirm that the workflow creates a controlled follow-up rather than deleting or rewriting history.
- Change a route, role, connector, or destination field and rerun the meaningful failure cases as regression tests.
Track measures that reveal the workflow without promising a result: request age, returned requests by reason, post-approval changes, expired decisions, bypassed commitments, duplicate attempts, write failures, read-back mismatches, unlinked invoices, and unresolved queues. Establish a baseline before claiming faster approvals, fewer errors, or tighter spending control.
When to avoid it
Do not automate purchase commitments when the business cannot name the request owner, approval authority, authoritative ordering system, material-change rules, or downstream receipt and invoice owners. Keep order creation manual while those responsibilities are unclear. Start with one numbered request register, one-page routing rules, and a visible decision history before connecting supplier-facing actions.
What to remember
- Approve one exact request revision, not a loose message or general vendor relationship.
- Keep the request, commitment, receipt, invoice approval, and payment release as separate states.
- Preserve original sources and link every extracted value, exception, and decision to them.
- Create a new revision when a material field changes, then recalculate the route.
- Use stable IDs and idempotent writes so retries do not create duplicate orders.
- Read the destination record back and compare it with the approved snapshot.
- Give AI bounded preparation work, not authority over business need, exceptions, orders, or money.
- Test stale events, changed revisions, unavailable approvers, partial writes, and downstream mismatches before launch.
The guide to connecting small-business software without duplicate data entry explains source ownership, stable matching keys, and controlled synchronization. Use the workflow maintenance guide to assign alerts, review queues, update approval roles, and retest recovery after policies or tools change.
If you want to build this workflow, bring one recent purchase request, its approval messages, the resulting order or agreement, the invoice, and one changed or exceptional case to a free 30-minute call. I can help you define the packet, revision rules, authority boundaries, stop conditions, and smallest reliable pilot before any automation can commit spend.
Frequently asked questions
No. A purchase request is an internal proposal, and its approval records an internal decision on one revision. A purchase order or other supplier-facing instruction is a separate commitment record. The workflow should create that record through a controlled action and verify the result before treating the commitment as complete.
A price change should create a new revision when it can affect the decision or route under the business's policy. The workflow should compare the old and new values, recalculate the required approvals, and prevent the previous decision from authorizing the changed commitment silently.
Purchase approval provides expected values for later matching, but it does not prove that goods or services were received or that a particular invoice is correct. Receipt and invoice approval should record their own evidence, exceptions, owners, and decisions before any payment release.
One person may perform several duties in a tiny company, but the workflow can still separate the decisions and timestamps. Record when that person approved the need, placed the order, accepted the work, reviewed the invoice, and released payment. Add an independent review for the transactions or exceptions the business considers material.
Written by Antoine mazu. Antoine helps small service businesses understand and improve their workflows with solutions tailored to their needs, with or without AI. He combines product thinking with hands-on technical execution from Bayonne, France.
Sources accessed October 16, 2026: OneBusiness ERP, How to Automate Purchase Approvals in ERP, Amazon Business, Purchase approval strategies that boost visibility across teams, Becision, How to Set Up a Purchase Approval Process for a Small Business, Crow Canyon, SharePoint Purchase Request and Approval Workflow, Workhint, Purchase Approval Workflow for Finance Operations, IRS, What kind of records should I keep, and GAO/CIGIE Financial Audit Manual.



