How to Build a Purchase Requisition System Without Code
July 31, 2026PUBLISHED INAi Development
A purchase requisition system routes internal buying requests through approval before any money is committed. You can build one without code in roughly three working days: define the requisition record with a line-item sub-table, set an approval matrix keyed to spend thresholds and cost centres, add budget validation, then deploy to an isolated production instance. The critical design decision is the approval matrix, not the form.
Purchase requisition vs purchase order: the distinction that drives the design
These two documents are confused constantly, and confusing them produces a broken system.
A purchase requisition is an internal request for authorisation to purchase; a purchase order is the external, legally binding instruction to a supplier. The requisition is where control lives. Once a PO is issued, the money is effectively committed — which is why building the requisition workflow properly is worth more than any downstream automation.
Why spreadsheet and email requisitions fail
Most organisations under 500 people run requisitions on email plus a shared spreadsheet. It fails in four predictable ways:
• No enforced threshold routing. A $40,000 request and a $400 request travel the same path, because the routing lives in someone's memory.
• No audit trail. Approval sits in an inbox. When an auditor asks who approved a purchase eighteen months ago, the answer depends on whether that person still works there.
• No budget visibility at the point of request. Nobody knows the department is 94% through its quarterly budget until finance closes the month.
• No segregation of duties. The same person raises the request, approves it, and receives the goods. This is the single most common finding in internal control reviews of small-company procurement.
Design the requisition record
Sub-table: Requisition Line Items — item description, category, quantity, unit price, line total (formula: quantity × unit price), GL account code, notes.
The line-item sub-table is essential. A single-total requisition cannot support category-based routing (IT hardware routes differently from professional services), cannot feed a three-way match later, and cannot produce useful spend analysis.
Calculate totals with formulas, never manual entry. Line total, subtotal, and grand total should all be computed. A manually entered total is a control failure waiting to be found.
Build the approval matrix
This is the heart of the system. Write it as a table before you configure anything.
Four rules that prevent the most common failures:
1. Route on total value, evaluated after calculation — not on a value the requester types in. Otherwise the threshold is trivially bypassed.
2. Block self-approval. If the requester is also the designated approver at any node, the request escalates one level. This is segregation of duties expressed as a routing rule.
3. Define delegation explicitly. When an approver is on leave, requests route to a named delegate — not to a queue nobody watches. Set delegation as a property of the role, not as a manual reassignment.
4. Escalate on time, not on complaint. A request sitting more than three business days at one node sends a reminder; more than five days escalates to that approver's manager.
In KodeFlex, this matrix maps directly onto approval node configuration: each node names its approvers and CC recipients, conditional branching evaluates the calculated total and category fields, and joint-signature versus countersignature mode is set per node — so a two-of-three committee approval is configuration rather than custom logic.
Add budget validation
A requisition system without budget awareness just moves the surprise later.
Two implementation options, depending on your finance stack:
Lookup-based (simpler). Maintain a budget table keyed by cost centre and period. The requisition looks up the remaining budget on submission and displays it beside the request total. If the request exceeds the remaining budget, a validation rule adds a mandatory over-budget justification field and inserts the finance director as an approver.
Query-based (better, if you have the access). Query the ERP or finance system directly through a custom data source — a SQL query or a system method call — so remaining budget reflects committed spend in real time, including approved-but-not-yet-invoiced requisitions.
The second option is what makes the system trusted rather than merely used. When the number on the screen matches the number in the general ledger, people stop maintaining a shadow spreadsheet.
Handle the awkward cases
Every requisition system meets these four within the first month. Design for them now.
-
Emergency purchases. A production line stops at 11pm. The system needs a retrospective approval path: raise the requisition flagged as emergency, notify the finance director immediately, and require sign-off within 24 hours. Without this path, people bypass the system entirely and you lose visibility of exactly the purchases that matter most.
-
Blanket and recurring requisitions. A twelve-month software subscription should be approved once, not monthly. Model it as a parent requisition with a value ceiling and scheduled child releases.
-
Multi-currency. If you buy internationally, store the requisition currency and the base-currency equivalent at a recorded rate and timestamp. Route thresholds on base currency. Otherwise a €9,500 request evades a $10,000 threshold.
-
Partial approval. Approvers frequently want to approve three of five line items. Decide early: either approval is all-or-nothing with a rejection-and-resubmit loop, or line items carry individual approval status. All-or-nothing is simpler and easier to audit; line-level is friendlier. Pick one and be consistent.
Build it
Generate. Describe the requirement in natural language to an AI application builder: a requisition header, a line-item sub-table with a quantity × price formula, the approval matrix above, and a budget lookup. The platform produces a runnable application with forms, list views, detail pages, and back-end logic. Expect the first generated version to be roughly 80% correct on structure and to need your judgement on routing edge cases.
Refine. Configure validation rules (required-by date cannot be in the past; at least one line item required; quotes mandatory above a threshold), trigger conditions, reminder settings, and filter tags so approvers see "awaiting my approval" as a default view.
Test the boundaries specifically. Submit requisitions at $999, $1,000, $9,999, and $10,000. Threshold-boundary bugs are the most common defect in approval systems, and they are the ones auditors find.
Deploy as an isolated production instance, with development and test instances kept separate so configuration changes cannot touch live financial records.
Realistic timeline
FAQs
What is a purchase requisition system?
A purchase requisition system is an internal application that routes employee purchasing requests through defined approval before any commitment is made to a supplier. It captures the request and its justification, applies approval rules based on value and category, validates against budget, and produces an audit trail for finance and compliance.
What is the difference between a purchase requisition and a purchase order?
A purchase requisition is an internal request asking for authorisation to buy and creates no obligation. A purchase order is the external document sent to a supplier and is legally binding. The requisition is approved first; the purchase order is issued afterwards by procurement.
Can I build a purchase requisition system without code?
Yes. A requisition system is a form, a line-item sub-table, calculated totals, and conditional approval routing — all of which are standard configuration on no-code and AI-generation platforms. A finance or operations lead can build a working system in roughly three working days without developer involvement.
What fields should a purchase requisition form include?
At minimum: requisition number, requester, department, cost centre, business justification, required-by date, preferred supplier with quote attachment, and a line-item sub-table containing description, category, quantity, unit price, calculated line total, and GL account code. Totals should be calculated by formula, never typed.
How should purchase requisition approvals be routed?
Route on the calculated total value against defined thresholds, with additional mandatory nodes for capital expenditure and for categories requiring specialist review such as IT security. Block self-approval by escalating one level, define named delegates for absent approvers, and escalate automatically after a set number of business days.
Do I need a full procurement suite instead?
Not necessarily. A dedicated suite makes sense when you need integrated supplier management, contract lifecycle, catalogue purchasing, and invoice matching as one system. A purpose-built requisition app makes sense when the approval control is the actual problem, when your rules are organisation-specific, or when the data must run on your own infrastructure.
ali
2026-07-31 13:39:00
0