Purchase order approval workflow: a reviewed request checklist

A purchase order approval workflow checks a proposed purchase’s line items, budget evidence and authorised review before anyone commits to ordering. Keep the decision attached to the exact request version and separate it from the later act of issuing an order. The checklist below prepares a review packet; approval and ordering remain in your established purchasing process.

Configuration capabilities: documented. Read Range and Template Merge are documented in the catalogue; not production-tested by Ai Flowi for this purchase-review packet.

By Ai Flowi · Published

Copy a pre-commitment purchase worksheet

Use the purchasing process’s stable identifier, then increment the version when the proposed purchase changes. Retain the supplier quotation reference separately from the purchase request identifier. A quotation states the supplier’s offer; a request states what the business is asking to buy.

request_id:
request_version:
requester_ref:
purpose:
supplier_ref:
quotation_ref_and_version:
quotation_validity_as_supplied:
line_id:
item_description:
quantity:
unit_of_measure:
quoted_sale_unit:
units_per_sale_unit:
purchase_sale_quantity:
unit_price:
currency:
line_amount:
extra_charges_or_tax_basis: supplied, excluded or unresolved
budget_ref:
budget_evidence_date:
budget_check_ref:
proposed_reviewer_ref:
reviewer_authority_ref:
decision:
decision_evidence_ref:
reviewed_request_version:
ordering_handoff_ref:

Repeat line rows without losing request and version references. Keep amounts in their supplied currency and unit basis. Quantity multiplied by unit price gives a line amount only when those units match; it is not necessarily the final commitment amount. Freight, tax, service scope or other unspecified charges stay unresolved until the buyer supplies the missing basis.

Check evidence before requesting a decision

To read every purchase-check column on mobile, swipe within the table; its focusable region also supports horizontal arrow-key scrolling.

Pre-order checks and their evidence
CheckEvidence to preserveReason to pause
Purchase scopeItem, quantity, unit and quotation version.Unit or offered scope does not match the request.
Amount basisCurrency, line calculation and treatment of extra charges.Unknown charges or mixed currencies prevent a single total.
Budget reviewBusiness-supplied budget reference and current check evidence.The reference is missing or its applicable scope is unclear.
Reviewer authorityIdentity and authority evidence from the controlled approval process.The proposed reviewer differs from the authorised reviewer.
Decision applicabilityDecision reference tied to request version and reviewed scope.The current request differs from the reviewed version.

The approval workflow guide’s version-control examples cover revised requests, late decisions and reviewer authority.

Work a pack-versus-unit purchase check

Consider fictional request P-A for 12 replacement filters, with no tax or delivery charge in the supplied example. Quotation Q-A offers packs of four filters at RM120 per pack. The requester has copied RM120 into a field labelled price per filter. Multiplying 12 by RM120 would produce RM1,440, but that calculation uses the wrong price basis.

First confirm that individual filters are the requested unit and packs are the supplier’s sale unit. Twelve filters require three packs; three times RM120 gives RM360. Record both quantities, the four-filters-per-pack conversion and the quotation passage that supplies it. Do not silently change the request quantity to three without recording that it now describes packs.

Now consider a request for ten filters against the same quotation. Ten divided by four is 2.5 packs, but the offer allows only whole packs. Ask whether purchasing three packs and holding two spare filters is acceptable, or whether the supplier can quote individual units. Until that choice is confirmed, neither a ten-filter price nor the excess stock should disappear from the packet.

Check what the budget evidence actually covers

Suppose the supplied budget check reports RM400 remaining for replacement parts in the relevant period. The RM360 line fits only under this example’s explicit zero-extra-charge assumption. If delivery is instead unresolved, the packet cannot establish that the whole commitment fits. Record the missing charge and ask the budget reviewer which amount must be checked.

A reference for installation services does not answer a replacement-parts budget question, even if both belong to the same department. Preserve the applicable category, period, currency and date of the availability check. Ask whether another pending purchase draws on the same amount; a copied balance does not reserve money for this request.

Use the procurement evidence guide for interpreting quotation inclusions and exclusions.

For this request, suppose the three packs serve two work sites but the budget check covers only one site. Ask how the cost should be allocated and whether each site’s budget reviewer needs a separate amount. The RM360 calculation remains correct while its funding evidence remains incomplete. Record the agreed allocation beside the request instead of assigning the whole amount to whichever budget code was entered first.

Create a reviewed document packet

example configuration, not a recorded test

You need AI Flowi Workflow, your own authorised Google account, a private purchase-request sheet, an existing working Google document and an external authorised review procedure. Pay any provider separately; third-party API and model usage is not included. This packet transfer does not call a model and needs no model API key.

  1. Use Read Range with range_name = PurchaseRequests!A:Z in the authorised source spreadsheet; select the lines for P-A, including their quotation and budget evidence.
  2. Manually prepare the JSON mapping: preserve requested filters, quoted packs, conversion basis, calculated line amount and unresolved charges as distinct fields.
  3. Prepare an existing review document with [[requested_units]], [[quoted_packs]], [[amount_basis]] and [[budget_questions]]; an unresolved charge must appear as a question.
  4. Use Template Merge on that document with the inspected object as values, prefix = [[, suffix = ]] and match_case = true.
  5. Read the resulting packet beside Q-A: confirm that three packs have not become three filters, and RM360 has not been labelled a complete total when any charge remains unknown.

Complete component interfaces and document-replacement behaviour are in the Google Docs reference, with source access covered by Google connection setup.

Repeat the purchasing exceptions

Use the 12-filter and ten-filter cases to check unit conversion and whole-pack handling. Remove the quotation’s pack size: the conversion should become unresolved, not default to one. Replace the parts budget with a services budget: an amount alone should not hide the scope mismatch.

Also test an absent unit price, a freight charge in another currency and a quotation that includes supply but excludes fitting. Keep mixed currencies in separate amount fields until an authorised conversion basis is supplied. An empty charge field differs from a confirmed zero; preserve that distinction in the document.

The packet passes its content check when a buyer can reconstruct the quantity basis, distinguish covered and uncovered scope, and locate the budget evidence without opening an unexplained total. A technically completed merge still needs that purchasing check before handoff.

What happens at the handoff to authorised ordering?

Hand the request packet to your purchasing process for the decision and order, using the approval control requirements before treating it as permission to commit funds.

Keep quotation comparison in the procurement evidence guide. After an order exists, accounts payable automation addresses invoice and receipt matching. Those later records cannot supply the approval evidence missing before commitment.